IT Log
HIVE 구성 (with MySQL) 본문
HADOOP 구성 상황
- OracleJDK 1.8.0_211
- hadoop-2.8.5
- zookeeper-3.4.14
- hbase-2.0.5
- maven-3.6.1
요구 사항
Java
Hive버전 1.2이상에서는 Java 1.7이상이 필요하다. ( Java 1.8을 권장)
Hadoop
2.x버전과 1.x버전 둘다 지원하지만, 1.x버전은 Hive 2.0.0이후 버전은 지원하지 않는다.
HIVE 설치
최신 버전인 3.1.1로 설치를 진행한다. master노드에서 진행하며, 파일 위치는 /usr/local이다.
wget http://apache.mirror.cdnetworks.com/hive/hive-3.1.1/apache-hive-3.1.1-bin.tar.gz
tar xzvf apache-hive-3.1.1-bin.tar.gz
환경변수 설정
hive이후부터는 vi /etc/profile을 하여 아래 코드로 수정한 다음에 source /etc/profile을 하는 설명은 생략하고, 아래코드를 간편하게 복사 - 붙여넣기하면 된다. (버전이나 경로를 다르게 설정하신다면 그 부분만 수정하면 된다.)
export JAVA_HOME=/usr/local/jdk1.8.0_211
export HADOOP_HOME=/usr/local/hadoop-2.8.5
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.14
export HBASE_HOME=/usr/local/hbase-2.0.5
export HIVE_HOME=/usr/local/apache-hive-3.1.1-bin
export JAVA_OPTS="-Dfile.encoding=UTF-8"
export CLASSPATH="."
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin:
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export HDFS_RESOURCEMANAGER_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
HDFS 폴더 생성
아래 코드를 실행하기 전에 master노드에서 start-all.sh로 Hadoop을 실행 시켜준다. 그런 다음 아래 코드를 입력하는데 hadoop fs -mkdir /tmp를 하면 mkdir: Cannot create directory /tmp. Name node is in safe mode. 이런 오류가 뜰 수 있는데, 해결방법은 hadoop dfsadmin -safemode leave로 safemode를 종료하고 진행하면 잘 된다.
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
HIVE 파일 설정
hive-env.sh
아래 경로로 이동한 뒤, hive-env.sh.template파일을 hive-env.sh파일로 변경한 뒤 내용을 수정한다. 그리고 48번줄에 있는 HADOOP_HOME을 아래와 같이 수정해준다.
cd /usr/local/hive-3.1.1/conf
mv conf/hive-env.sh.template conf/hive-env.sh
HADOOP_HOME=/usr/local/hadoop-2.8.5
hive-site.xml
cd $HIVE_HOME/conf로 이동한 후, vi hive-site.xml로 파일을 생성하여 생성된 파일에 아래 코드를 입력한다. 눈치 빠른 분들은 아시겠지만 아래 코드에서 UserName과 Password는 Mysql에서 사용하게될 UserName과 Password이고, URL부분의 경우 hostname과 포트번호 그리고 DB명인데 createDatabseIfNotExist=true 부분은 구글번역 돌려보면 말그대로 존재하지 않는 경우 DB를 생성하는 것이다.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://master:9000/user/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
</configuration>
MySQL
설치
CentOS 6과 달리 repository를 추가한 다음에 설치가 가능하다. 아래 코드를 실행하여 MySQL를 설치한다.
yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum -y install mysql-community-server
서비스 시작
서비스를 시작해준다.
systemctl start mysqld
systemctl enable mysqld
Connector 다운
hive 폴더아래 lib폴더에 mysql connector를 다운한다.
cd $HIVE_HOME/lib
wget http://repo.maven.apache.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar
접속
아래 명령으로 mysql에 접속이 가능한지 확인하다. 화면과 같이 mysql>이 보이면 접속 성공이다.
mysql
User 생성
root가 아닌 유저를 생성한다. 아래 코드를 입력하여 유저를 생성하고 quit;를 입력하여 mysql을 종료한다. 생성한 유저로 접속이 가능한지 확인한다. mysql -u hive -p를 입력하고 password를 물으면 hive를 입력하고 접속한다.
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
GRANT all on *.* to 'hive'@localhost identified by 'hive';
flush privileges;
DB생성
mysql에 접속된 상태에서 실행한다. 아래 코드를 입력한 뒤 mysql을 종료한다.
create database hive;
Hive 연동 확인
HiveServer2 and Beeline
Hive 2.1부터는 초기화 단계로 아래의 코드를 실행해야 한다. 실행한 뒤 schemaTool completed가 보이면 된다. Connect를 지정된 $HIVE_HOME/lib 폴더에 다운받고 hive-stie.xml파일을 잘 지정하였다면 문제 없이 진행된다.
schematool -dbType mysql -initSchema
CLI
Shell에서 Hive CLI를 실행시키는 코드이다. 화면에서 보면 Hive-on-MR로 시작하는 부분이 있는데, 구글번역을 돌려보면 Hive-on-MR은 Hive 2에서 사용되지 않으며 이후 버전에서는 제공되지 않을 수 있습니다. 다른 실행 엔진 (예 : spark, tez)을 사용하거나 Hive 1.X 버전을 사용해보십시오. 라고 한다.
hive
Table 생성
hive와 mysql이 잘 연동이 되는지 확인하기 위해 Table을 하나 생성해 본다. 아래 코드로 Table을 생성한 뒤 quit;를 입력하고 hive를 종료한다.
create table test_check(
test int,
check int);
확인하기
mysql -u hive -p로 접속한 뒤, 비밀번호를 입력하고 DB내역을 확인한 뒤, use hive로 DB를 선택한다. 그리고 선택한 DB에서 Table을 확인하는데, 연동이 제대로 되지않았다면 아래 화면과 같이 안뜨고 아무내용이 없었을 것이다. Table내역이 잘 떳다면 그중 TBLS를 선택하여 우리가 만든 test_check 테이블이 나오지는 확인한다.
mysql -u hive -p
show databases;
use hive
show tables;
select* from TBLS;
Beeline
HiveServer2에는 Beeline이라는 새로운 CLI가 있다. 종료는 !quit로 종료할 수 있다.
beeline
'Open Source > Apache' 카테고리의 다른 글
Airflow 설치 (0) | 2021.03.25 |
---|---|
kubernetes 설치 (0) | 2021.03.25 |
Hadoop 완전분산모드(Fully-Distributed) (0) | 2021.03.24 |
HBase 구성 ( Full-distributed ) (0) | 2021.03.24 |
HBase 구성 (Standalone) (0) | 2021.03.24 |