Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
1. hive 다운로드
http://mirror.apache-kr.org/hive/
2. banana pi에 업로드(winscp등을 이용) - root로 실행
/usr/local에 업로드한다.
3. 압축풀기
- tar xvfz apache-hive-0.13.1-bin.tar.gz
4. 링크 걸기
- ln -s apache-hive-0.13.1-bin hive
5. /etc/profile에 아래의 내용을 추가함
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
# source /etc/profile로 반영함
6. conf설정
- *.template파일을 복사하여 각각의 설정파일을 만들고 내용을 추가한다.
hive-env.sh
hive-exec-log4j.properties
hive-log4j.properties
hive-site.xml
7. hive에서 사용할 hdfs에 디렉토리 구성및 권한부여
hadoop fs -mkdir /tmp
hadoop fs -mkdir /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
hadoop fs -chown hadoop:hadoop /user/hive
hadoop fs -chown hadoop:hadoop /user/hive/warehouse
8. mysql설치
root@master:/usr/local# apt-get install mysql-server
(404오류가발생시 https://www.gooper.com/ss/index.php?mid=bigdata&category=2772&document_srl=2995를 참조하여 조치후 설치한다)
9. 사용자 생성
가. mysql> grant all privileges on *.* to 'hive'@'localhost' identified by '패스워드' with grant option;
Query OK, 0 rows affected (0.00 sec)
나. mysql>grant all privileges on *.* to 'hive'@'%' identified by '패스워드' with grant option;
10. db생성
mysql> create database metastore_db;
Query OK, 1 row affected (0.00 sec)
11. 테이블 생성 스크립트 실행
root@master:/usr/local/hive/bin# mysql -u root -p패스워드 metastore_db < /usr/local/hive/scripts/metastore/upgrade/mysql/hive-schema-0.13.0.mysql.sql
12. 원격접속 가능하도록 설정
mysql> select host from user where user='hive';
+-----------+
| host |
+-----------+
| localhost |
+-----------+
1 row in set (0.00 sec)
mysql> insert into mysql.user(host,user,password) values('%','metastore',password('패스워드'));
Query OK, 1 row affected, 3 warnings (0.00 sec)
mysql> grant all privileges on *.* to 'hive'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select host from user where user='hive';
+-----------+
| host |
+-----------+
| % |
| localhost |
+-----------+
2 rows in set (0.00 sec)
13.mysql connector를 다운로드하여 HIVE_HOME/lib에 복사
(http://www.mysql.com/downloads/connector/j/에서 다운로드하여 압축해제후 mysql-connector-java-5.1.32-bin.jar만 복사)
14. HIVE_HOME/conf의 hive-site.xml에 아래를 추가 혹은 변경한다.
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://db_server:3306/hive_metastore_db?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</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>
</configuration>
<property>
<name>hive.metastore.port</name>
<value>3306</value>
<description>Hive metastore listener port</description>
</property>
</configuration>
15. hadoop-env.sh 끝에 아래의 내용을 추가하여 hive관련 lib및 conf를 인식시켜준다.
가. export HADOOP_CLASSPATH에 /usr/local/hive/conf를 추가함
나. 파일끝에 아래를 추가함
for f in ${HIVE_HOME}/lib/*.jar; do
HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$f;
done
16. hive metastore실행
hive --service metastore &
*확인
root@master:/usr/local/hive/bin# netstat -an | grep 9083
tcp6 0 0 :::9083 :::* LISTEN
17. hive server2실행
hive server시작(hive가 설치된 master에서 실행)
: nohup hiveserver2 &
18. beeline실행
hiveserver2에 접근하기 위해서 "bin/beeline -u jdbc:hive2://sda1:10000"을 실행한다.
*로그파일 위치(root로 실행할때 default위치) : /tmp/root/hive.log