Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HIVE] 설치, 환경구성 및 실행 #3

Open
blahxblah opened this issue Nov 7, 2023 · 0 comments
Open

[HIVE] 설치, 환경구성 및 실행 #3

blahxblah opened this issue Nov 7, 2023 · 0 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@blahxblah
Copy link

blahxblah commented Nov 7, 2023

안녕하세요. blahxblah 입니다.

🧑‍🏭 개요

저희는 MYSQL 의 데이터를 hdfs 의 parquet 로 저장하고 있습니다. 이 데이터를 Apache Superset 에서 분석하기 위한 DB 커넥터로서 HIVE 를 사용하기로 했습니다.
그래서 이번에는 HIVE의 설치과정을 알아보겠습니다.

HIVE 다운로드 및 압축해제

# 설치하고자 하는 경로에서 미러 사이트의 다운로드 주소경로를 복사하여 설치파일을 받습니다.
mkdir hive
cd hive
wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz

# 설치파일을 압축해제하고 적절한 이름으로 변경해줍니다.
tar -xzvf apache-hive-3.1.3-bin.tar.gz
mv apache-hive-3.1.3-bin 3.1.3

환경변수 설정

# bash 혹은 zsh 설정에서 HIVE 경로설정을 해줍니다
vim ~/.zshrc # 혹은 vim ~/.bashrc

# 빈 공간에 아래 내용 추가
# HIVE_PATH(hive_3.1.3)
export HIVE_HOME=~/hive/3.1.3 
export PATH=$HIVE_HOME/bin:$PATH

# 터미널 재실행
source ~/.zshrc

HIVE 환경설정

# hive-site.xml 파일을 생성하고 엽니다.
cd $HIVE_HOME/conf
vim hive-site.xml

# 아래의 내용을 추가하고 저장합니다.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:DB종류://HOST:PORT/DBNAME?createDatabaseIfNotExist=true</value>
        <description>metadata is stored in a MySQL server</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
        <description>MySQL JDBC driver class</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>USER ID</value>
        <description>user name for connecting to mysql server</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>USER PW</value>
        <description>hivepassword for connecting to mysql server</description>
    </property>
    <property>
        <name>hive.server2.enable.doAs</name>
        <value>false</value>
        <description>Setting to control whether to enable impersonation in HiveServer2</description>
    </property>

</configuration>

# 각 옵션 별 설명
- javax.jdo.option.ConnectionURL : 메타스토어를 구성할 DB 접속정보(mysql, postgresql, mariaDB 등)
- javax.jdo.option.ConnectionDriverName : 메타스토어 DB 종류 지정(mysql, postgresql, mariaDB 등)
- javax.jdo.option.ConnectionUserName : 메타스토어 DB 접속 user ID
- javax.jdo.option.ConnectionPassword : 메타스토어 DB 접속 user password
- hive.server2.enable.doAs : impersonation 설정을 결정함. 
  * true 일 경우 클라이언트의 요청을 제출한 사용자의 권한으로 실행 / false 일 경우 클라이언트 요청을 Hive 서비스가 실행하는 Hadoop 사용자의 권한으로 실행
  * 저희는 별도의 hadoop 사용자 권한 설정을 사용하지 않기에 false로 설정했습니다.

hadoop 과 hive guava 라이브러리 버전 맞추기

cp $HADOOP_HOME/share/hadoop/hdfs/lib/guava-27.0-jre.jar $HIVE_HOME/lib/
rm -rf $HIVE_HOME/lib/guava-19.0.jar

jdbc 드라이버 설치

# 사용하고자 하는 DB의 jdbc 드라이버를 lib 경로에 넣어줍니다.
cd $HIVE_HOME/lib
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar

HIVE 사용 경로 생성

# hdfs 에서 사용할 HIVE 경로를 생성해줍니다.
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir -p /hive/warehouse
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /hive/warehouse

HIVE 메타스토어 초기화

hive --service schemaTool -dbType mysql -initSchema

HIVE 서버 실행

nohup hiveserver2 &

2023-11-06 07:40:40: Starting HiveServer2
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/KJH/hive/3.1.3/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/KJH/hadoop/3.3.6/share/hadoop/common/lib/slf4j-reload4j-1.7.36.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]
Hive Session ID = ed61967f-d64e-4b92-96ea-2b667be61984
Hive Session ID = 7d1d81f0-dcbe-4557-9e53-734286e64b08
@blahxblah blahxblah added the documentation Improvements or additions to documentation label Nov 7, 2023
@blahxblah blahxblah self-assigned this Nov 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant