EXCELSIOR

하이브 (Apache Hive) 개념 및 설치 (아파치 더비 사용) 본문

DataBase/Hadoop

하이브 (Apache Hive) 개념 및 설치 (아파치 더비 사용)

Excelsior-JH 2016. 11. 14. 23:05

1. 하이브

페이스 북에서 개발한 하이브는 하둡에 저장된 데이터를 쉽게 처리할 수 있는 데이터웨어하우스(DW) 패키지 이다.


1)하이브 아키텍처

    • 하이브의 클라이언트는 커맨드 라인 인터페이스(Command Line Interface: CLI), 하이브 서버, 웹 인터페이스로 구성된다. 하이브 서버의 경우 JDBC, ODBC, 쓰리프트로 개발된 클라이언트가 하이브 서비스를 이용할 수 있게 쓰리프트 서비스를 제공한다.
    • 하이브는 메타스토어(Metastore)라는 저장소를 만들어 하둡에서 처리된 메타데이터의 구조를 메타스토어에 저장한다. 하이브는 오라클, MySQL 등 JDBC를 지원하는 모든 데이터베이스를 이용해 메타스토어를 구축할 수 있다.
    • 드라이버는 사용자가 입력한 하이브QL문을 해석한다. 하둡과 연결되어 하이브QL문을 실행하고, 하이브QL은 하이브QL문의 실행 계획을 작성하고, 최적화 작업까지 함께 수행한다.

http://www.dbguide.net/publishing/img/dbguide/bigdata_technology/322_bigdata_05.png

[출처: www.dbguide.net]



2. 하이브 설치 및 실행

wget http://mirror.apache-kr.org/hive/hive-2.0.0/apache-hive-2.0.0-bin.tar.gz

tar xvfz apache-hive.2.0.0-bin.tar.gz

cd apache-hive.2.0.0-bin

ls - l 

합계 588
-rw-r--r-- 1 root staff  26335  1월 22  2016 LICENSE
-rw-r--r-- 1 root staff    513  1월 22  2016 NOTICE
-rw-r--r-- 1 root staff   4348  2월 10  2016 README.txt
-rw-r--r-- 1 root staff 527063  2월 10  2016 RELEASE_NOTES.txt
drwxr-xr-x 3 root root    4096 11월 14 22:24 bin
drwxr-xr-x 2 root root    4096 11월 14 22:24 conf
drwxr-xr-x 4 root root    4096 11월 14 22:24 examples
drwxr-xr-x 7 root root    4096 11월 14 22:24 hcatalog
drwxr-xr-x 4 root root   12288 11월 14 22:24 lib
drwxr-xr-x 4 root root    4096 11월 14 22:24 scripts


  • 하이브는 conf 디렉터리에 있는 hive-env.sh 파일에 기본 환경설정을 한다. 처음 하이브를 설치하면 conf 디렉터리에는 템플릿 파일만 있으므로 다음과 같이 새로운 hive-env.sh 파일을 만든 후 하둡 홈 디렉터리를 설정한다.
mv conf/hive-env.sh.template conf/hive-env.sh
HADOOP_HOME=/usr/local/hadoop-2.7.3


  • 책에서 적힌대로 아파치더비를 사용하여 hive-site.xml을 다음과 같이 설정하였다.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/user/hive/warehouse</value>
	</property>
	<property>
		<name>hive.cli.print.header</name>
		<value>true</value>
	</property>
</configuration>
  • 하이브에서 업로드하는 데이터는 HDFS의 /user/hive/warehouse에 저장된다. 그리고 하이브에서 실행하는 잡의 여유 공간으로 HDFS의 "/tmp/hive-유저명" 디렉터리를 사용한다. 이 두개의 디렉터리를 다음과 같이 미리 생성한 후 실행 권한도 함께 설정한다.
bin/hdfs dfs -mkdir /tmp
bin/hdfs dfs -mkdir /tmp/hive
bin/hdfs dfs -mkdir /user/hive
bin/hdfs dfs -mkdir /user/hive/warehouse
bin/hdfs dfs -chmod g+w /tmp
bin/hdfs dfs -chmod g+w /user/hive/warehouse
bin/hdfs dfs -chmod 777 /tmp/hive
  • 하이브 2.0.0 버전부터는 하이브를 실행하기 전에 하이브 메타스토어를 초기화해야한다. 다음과 같이 initSchema를 이용해 메타스토어를 초기화 한다. hive-site.xml에 별도의 메타스토어를 설정하지 않았다면 (예, MySQL, MS-SQL 등) -dbType에 derby를 사용한다.


:/usr/local/hadoop2/apache-hive-2.0.0-bin# bin/schematool -initSchema -dbType derby
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.7.3/apache-hive-2.0.0-bin/lib/hive-jdbc-2.0.0-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.7.3/apache-hive-2.0.0-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:	 jdbc:derby:;databaseName=metastore_db;create=true
Metastore Connection Driver :	 org.apache.derby.jdbc.EmbeddedDriver
Metastore connection User:	 APP
Starting metastore schema initialization to 2.0.0
Initialization script hive-schema-2.0.0.derby.sql
Initialization script completed
schemaTool completed

:/usr/local/hadoop2/apache-hive-2.0.0-bin# bin/hive

hive> show databases;
OK
database_name
default
Time taken: 0.209 seconds, Fetched: 1 row(s)


Comments