Hadoop EcoSystem

[Hive] Metastore

비번변경 2023. 3. 22. 22:47

Hive Metastore

Hive는 데이터에 대한 논리적 정보와 파일의 물리적 위치 등과 같은 메타성 정보를 가진다. 메타스토어는 이러한 메타 정보를 저장하고 사용자의 요청에 따라 제공한다.

정보를 제공할 때는 Thrift(Apache Thrift; 이기종간의 통신을 위한 프로토콜)를 사용하고 메타 데이터 자체는 JDBC를 이용해 데이터베이스에 저장한다.

 

 

유형

Hive의 메타스토어 유형은 임베디드(Embedded metastore), 로컬(Local metastore), 원격(Remote metastore)으로 구분할 수 있다.

 

임베디드(Embedded metastore)

Hive를 설치하면 기본값으로 Derby를 메타스토어 DB로 사용하는데, 한 번에 한 명의 사용자만 접근할 수 있다. 따라서 운영 환경에는 적합하지 않다.

 

설정

<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:derby:metastore_db;create=true </value>
   <description>JDBC connect string for a JDBC metastore </description>
</property>

 

로컬(Local metastore)

Hive와 Mestore가 같은 JVM에서 동작하며, 메타 데이터는 MySQL, PostgreSQL과 같은 별도의 RDB에 저장된다. 

 

설정

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://[IP]:[port]/[데이터베이스 이름]</value>
    <description>username to use against metastore database</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.mariadb.jdbc.Driver</value>
    <description>username to use against metastore database</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>[사용자명]</value>
    <description>username to use against metastore database</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>[암호]</value>
    <description>password to use against metastore database</description>
</property>

 

원격(Remote metastore)

메타 데이터가 별도의 RDB에 저장되는 것은 로컬 메타스토어와 동일하지만, Metastore가 Hive와 별도의 JVM에서 동작한다. 클라이언트는 메타스토어 DB에 직접 쿼리문을 실행하는 것 대신 메타스토어 서버를 받게 된다. 이 때 클라이언트와 메타스토어 서버는 thrift 프로토콜을 이용해 통신한다.

 

설정

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://[메타스토어 IP]:[메타스토어 Port]</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>

 

 

설정 파라미터

위에서 메타스토어 유형에 따른 xml 설정을 적어두었는데, 각 파라미터에 대한 설명도 추가한다.

파라미터 설명 값 예시
javax.jdo.option.ConnectionURL 메타스토어 DB 접속 주소 jdbc:mysql://localhost:3310/metastore?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName DB 연결 시 사용하는 JDBC 드라이버 com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName DB 연결 시 사용하는 계정명  
javax.jdo.option.ConnectionPassword DB 연결 시 사용하는 계정 비밀번호  
hive.metastore.uris 클라이언트가 메타스토어 서버와 통신하는 URI  
hive.metastore.local 메타스토어의 로컬/원격 여부.
로컬이면True, 원격이면 False
 
hive.metastore.warehouse.dir Hive 테이블이 저장되는 HDFS 상의 경우 /user/hive/warehouse

 

 

참고 문서

https://wikidocs.net/28353#fn:1

https://spidyweb.tistory.com/231

https://it-sunny-333.tistory.com/44