Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Hive/CDH] Hive 설치 및 CDH의 Beeswax에 Hive 설정하기 Computer & Program

Cloudera의 Hive Installation에 Hive 설치방법은 잘 나와 있다. 단, Hive 단독으로 사용될 때는 말이다. Cloudera Manager의 Hue에는 Hive를 GUI로 사용할 수 있는 Beeswax라는 모듈이 있다. 아래 주소로 접속하면 되고, 테이블 생성/import/query 등의 기능을 GUI로 수행할 수 있다.

http://hostname:8888/beeswax/

헌데 Hue를 설치하면 Hive Installation를 따라 설치한 Hive가 아닌 다른 Hive에 데이터를 생성하고 사용하게 된다. 아마도 Hue를 설치할 때 함께 설치된 Hive인 것 같다. Embedded Mode로 설정된 Metastore(저장소는 Apache Derby를 사용)이며 그 내용은 HDFS에 저장된다. default 위치는 HDFS의 /user/beeswax/warehouse 이다. 내가 설치한 Hive를 사용하도록 설정하기 위해서는 별도의 작업이 필요하다.

설치는 Hive Installation를 따라한다. 그 내용 중 xml 파일을 수정하는 부분은 Hue의 Beeswax Configuration에서 설정해줘야 한다. 여기서는 MySQL Metastore를 사용한 방법을 정리했다.


1. Hive 설치
hive 패키지 중 hive, hive-metastore, hive-server2를 설치했다. hive만 필수사항이며, 나머지는 선택사항이다. 각 시스템 패키지 설치 명령으로 설치하면 된다. (요건 Debian 계열)
$ sudo apt-get install hive
$ sudo apt-get install hive-metastore
$ sudo apt-get install hive-server
$ sudo apt-get install hive-server2


2. MySQL 설치 및 설정
$ sudo apt-get install mysql-server
$ sudo start mysql

// Hive에서 사용할 MySQL Client Driver를 받는다.
$ curl -L 'http://www.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.22.tar.gz/from/http://mysql.he.net/' | tar xz
$ sudo cp mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar /usr/lib/hive/lib/

// Hive Metastore 테이블을 생성한다.
$ mysql -u root -p
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.9.0.mysql.sql;

// Hive Metastore를 접근할 사용자를 생성한다. - 비밀번호도 설정해주자
mysql> CREATE USER 'hive'@'myhost' IDENTIFIED BY 'mypassword';
...
mysql> GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'myhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> quit;


3. Beeswax에 Hive Metastore 설정
이 부분은 /etc/hive/conf/hive-site.xml 또는 /usr/lib/hive/conf/hive-site.xml에 설정해 줄 내용이지만, Beeswax에도 설정해주어야 Beeswax에서도 같은 Metastore를 사용할 수 있다. 아래 주소로 Cloudera Manager에 접속한다.
http://hostname:7180/

설치된 서비스 중 Hue를 선택해서 설정을 변경한다. 그림처럼 "Beeswax Server"와 "Database"의 설정만 변경해 주면 된다.



4. HiveServer2인 경우 추가 설정
HiveServer 보다는 HiveServer2를 사용할 것을 권장한다고 쓰여 있다. 그리고 HiveServer2를 사용할 때는 몇가지 설정해 줄 것이 있는데, Table Lock Manager는 필수이고, 로그인이나 파일의 권한 설정은 옵션이다. Table Lock Manager만 설정해 줬다.

다음 내용을 /etc/hive/conf/hive-site.xml에 넣어주면 된다. 이 내용은 동작하는 Hive 서버 설정이니 Beeswax에서는 설정할 필요가 없다. Beeswax는 단순히 Hive GUI Client 역할이므로..

<property>
    <name>hive.support.concurrency</name>
    <description>Enable Hive's Table Lock Manager Service</description>
    <value>true</value>
</property>

<property>
    <name>hive.zookeeper.quorum</name>
    <description>Zookeeper quorum used by Hive's Table Lock Manager</description>
    <value>zk1.yoyodyne.com,zk2.yoyodyne.com,zk3.yoyodyne.com</value>
</property>

hive.zookeeper.quorum의 설정값은 설치된 zookeeper 경로를 적어주면 된다.


5. Hive, Metastore 실행
$ sudo service hive-metastore start
$ sudo service hive-server2 start


6. CLI에서 Hive 접속
HiveServer인 경우 기존 hive 명령 사용한다.
$ hive
hive>

HiveServer2인 경우 Beeline 사용한다. 테이블이 이쁘게 그려진다. 하지만 접속하는 방법이 힘들다. 더 좋은 방법 없을까..??
$ /usr/lib/hive/bin/beeline
beeline> !connect jdbc:hive2://localhost:10000 username password org.apache.hive.jdbc.HiveDriver
0: jdbc:hive2://localhost:10000>


7. 연동 확인
beeline에서 테이블을 생생하고 Beeswax에서 확인해 보자.
0: jdbc:hive2://localhost:10000> create table test(tf1 int, tf2 string);
No rows affected (0.081 seconds)
0: jdbc:hive2://localhost:10000> show tables;
+-----------+
| tab_name |
+-----------+
| test |
+-----------+
1 row selected (0.085 seconds)
0: jdbc:hive2://localhost:10000> desc test;
+-----------+------------+----------+
| col_name | data_type | comment |
+-----------+------------+----------+
| tf1 | int | |
| tf2 | string | |
+-----------+------------+----------+
2 rows selected (0.089 seconds)
0: jdbc:hive2://localhost:10000>




- 문제
Hive 설치 후 시스템 재시작 시 오류가 발생하는 경우

- 참조
Hive Installation
GettingStarted - Apache Hive - Apache Software Foundation

- 의문
Hue를 설치하면서 Hive가 자동으로 설치된 것 갈은데 어떻게 내리지?? -ㅅ-;;; Hadoop과 HBase, Hive 등은 버전 궁합이 안 맞으면 설치가 그지 같은데 CDH로 잘 맞는걸 관리해주니 좋긴 한데.. 너무 불투명하게 설치되는 기분이 든다. 대체 뭐가 어떻게 설치되는지.. 하나하나 밝혀나가야겠다.

핑백

덧글

댓글 입력 영역

Google AdSense (text/image)