IT Log

HIVE 구성 (with MySQL) 본문

Open Source/Apache

HIVE 구성 (with MySQL)

newly0513 2021. 3. 24. 16:29
728x90
반응형

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로 파일을 생성하여 생성된 파일에 아래 코드를 입력한다. 눈치 빠른 분들은 아시겠지만 아래 코드에서 UserNamePasswordMysql에서 사용하게될 UserNamePassword이고, 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

 

728x90
반응형

'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
Comments