Search

Hive

Pig와 유사한 목적으로, 기존 RDBMS에 익숙한 분석가들의 생산성 향상을 위해 SQL과 유사한 HiveQL을 사용하여 MapReduce 작업 수행을 돕는 도구이다.
MapReduce 프로그램 작성 대신 쿼리 인터페이스를 제공하여 비정형화된 입력 소스 분석에는 적합하지 않다.

Hive아키텍쳐

Hive는 클라이언트-서비스 아키텍쳐로 구성되어있다.
Hive Client는 JDBC, Thrift, ODBC 기반 응용프로그램을 각각 지원하고 응용프로그램에서 Hive로부터 데이터를 가져올 수 있다.
Hive Service는 Hive Client의 요청을 Hive Server로 전송받은 다음, Hive Driver로 실제 Hive 작업을 생성, 수행한다. 실제 데이터는 HDFS에 저장하거나 Hive Service에 내장되어있는 Apache Derby Database에 저장할 수 있으며, Apache Derby Database에 저장된 데이터들에 대한 메타정보는 Metastore에 저장한다. 이러한 과정을 직관적으로 수행할 수 있도록 Web UI, CLI로 인터페이스를 제공한다.

Hive 동작과정

Hive는 두가지의 쿼리 명령어 인터페이스를 제공한다. Hive CLI는 Hive Driver에 직접적으로 쿼리를 전달할 수 있고, Hive Server2부터 지원되는 Beeline CLI가 있다.
Hive의 동작과정은 다음과 같다.
1.
사용자의 HiveQL 명령어를 해석하여 MR작업으로 변환한다.
2.
Metastore에서 테이블 구조와 데이터 위치를 얻는다.
3.
실제 데이터 질의를 전달한다.
Metastore에서 데이터의 위치를 찾아 실제 데이터에 접근하다 보니, Metastore의 정보가 손실되게 되면 실제 데이터에 접근할 수 없다. 백업용 Metastore을 따로 구축함으로써 미연에 방지할 수 있다.

HCatalog

Hive 뿐만 아니라 Impala, Pig, MR 등 다양한 툴들로 Hive가 생성한 테이블이나 데이터모델에 접근하기 위해 HCatalog라는 서비스를 사용한다. Hive에 내장되어있는 테이블 및 스토리지 관리 서비스로, Hive 외의 HCatalog Interface를 장착하고있는 다른 툴들이 metastore에 접근할 수 있는 창구 역할을 해준다.

Hive 구축

Hadoop cluster에 Hive를 설치한다.
wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz tar -xzvf apache-hive-3.1.3-bin.tar.gz ln -s /opt/hive/apache-hive-3.1.3-bin /opt/hive/current
Plain Text
복사
Hive 환경변수를 설정한다.
vim /etc/profile ... export HIVE_HOME=/opt/hive/current export PATH=$PATH:$HIVE_HOME/bin
Plain Text
복사
Hive Metastore을 초기화 한다. Hive에 내장되어있는 derby를 테스트로 초기화시킨다.
> $HIVE_HOME/bin/schematool -dbType derby -initSchema
Plain Text
복사
다음으로 Hive에 접속할 수 있다.
> $HIVE_HOME/bin/hive
Plain Text
복사