본문 바로가기
BigData 기술/Hive,Presto,Trino

Hive Metastore 종류 및 설정 (mysql/mariadb hive-metastore)

by 잇서니 2019. 10. 18.
반응형

Hive Architecture

복잡한 맵리듀스 프로그래밍 없이 SQL로 맵리듀스를 사용할 수 있게 도와주는 녀석이다. SQL을 내부적으로 맵리듀스 코드로 변환해준다. 맵리듀스 외에 Tez 등의 엔진을 사용할 수도 있다. 보통 HDFS를 warehouse로 사용한다.

 

  • (1) Client가 쿼리를 실행한다.
  • (2) Driver가 쿼리플랜을 Compiler에게 요청한다.
  • (3) Compiler는 쿼리에 해당하는 맵리듀스 코드를 생성한다. 이때, Metastore를 통해 하이브의 메타데이터(컬럼정보, 컬럼매핑 등)를 가져와 사용한다. 또한, 쿼리플랜을 생성한다.
  • (4) 쿼리플랜을 Execution Engine에 전달한다.
  • (5) Execution Engine은 Hadoop에 맵리듀스 잡을 요청하고, 잡의 결과를 받아와 전달한다.

 

 

Hive Metastore

메타스토어를 하이브의 메타데이터를 저장하는 저장소(DB)라고 할 수는 없다.
엄밀히 말하면 저장소 역할을 하는 Metastore Database와 저장소와 연결해주는 Metastore Process가 있는 형태이다.
메타스토어는 어떻게 구성하느냐에 따라 3가지 모드로 구분할 수 있다.

 

(1) Embedded Mode

Hive Server, Metastore Process, Metastore Database가 동일한 JVM 내에서 동작한다. 그러니 하나의 요청만 처리할 수 있다.

 

  • Metastore Process
  • Metastore Database
    • Derby Database 사용

 

(2) Local Mode

Hive Server와 Metastore Process가 동일한 JVM 내에서 동작한다. Metastore Database는 다른 JVM에서 동작하거나 아예 다른 서버에서 동작한다. 그러니 한 번에 여러개 요청을 처리할 수 있다.

 

  • Metastore Process
  • Metastore Database
    • Mysql, MariaDB 등을 사용함

 

  • hive-site.xml 설정
속성 설명
javax.jdo.option.ConnectionURL jdbc:mysql://sunnytest.com/metastore?createDatabaseIfNotExist=true

jdbc:mariadb://sunnytest.com/metastore?createDatabaseIfNotExist=true

 
javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

org.mariadb.jdbc.Driver

metastore Database (mysql 또는 mariadb) 에 연결하기 위한 Driver
 javax.jdo.option.ConnectionUserName <user name> metastore Database 에 연결하기 위한 계정명
javax.jdo.option.ConnectionPassword <password> metastore Database 에 연결하기 위한 비밀번호
hive.metastore.local  true 메타스토어 Local모드 유무
hive.metastore.warehouse.dir
/user/hive/warehouse

hive 테이블 정보가 저장되는 경로 (주로 HDFS 를 사용함)

 

(3) Remote Mode

Hive Server, Metastore Process(Server), Metasotre Database가 모두 다른 JVM 혹은 다른 서버에서 동작한다. Metastore Process(Server)가 따로 동작하면서 Hive뿐만 아니라 다양한 Client(Impala, Presto 등)의 요청을 받을 수 있다. Client와 Metasotre Process(Server)는 Thrift 통신을 한다.

 

  • Metastore Process(Server)
    • hive-site.xml 에 thrift uri 설정을 추가로 해야 함.
  • Metastore Database
    • Mysql, mariaDB 등을 사용함

 

  • hive-site.xml 설정
속성 설명
javax.jdo.option.ConnectionURL jdbc:mysql://sunnytest.com/metastore?createDatabaseIfNotExist=true

jdbc:mariadb://sunnytest.com/metastore?createDatabaseIfNotExist=true

 
javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

org.mariadb.jdbc.Driver

metastore Database (mysql 또는 mariadb) 에 연결하기 위한 Driver
 javax.jdo.option.ConnectionUserName <user name> metastore Database 에 연결하기 위한 계정명
javax.jdo.option.ConnectionPassword <password> metastore Database 에 연결하기 위한 비밀번호
hive.metastore.warehouse.dir
/user/hive/warehouse

hive 테이블 정보가 저장되는 경로 (주로 HDFS 를 사용함)

hive.metastore.uris thrift://:sunnytest.com:9083

클라이언트와 메타스토어 서버는 thrift 통신을 사용한다.

hive.metastore.local false

메타스토어 Local모드 유무

 

참고링크

http://www.dbguide.net/db.db?cmd=view&boardUid=187344&boardConfigUid=9&boardIdx=159&boardStep=1

https://manic.tistory.com/125

반응형

댓글