centos7 기준입니다.

PostgreSQL, hadoop이 설치됨을 가정합니다.

 

서버는 호스트네임기준 mast02서버에 설치할 예정이고,

PostgreSQL 역시 mast02서버에 설치됨을 가정합니다.

hive폴더는 hadoop 유저권한,

hive metaDB(PostgreSQL)는 DB명 hive, DB 유저 hive입니다.

 

PostgreSQL설치 

https://developer-woong.tistory.com/41

 

PostgreSQL 11 오프라인 설치

centos7 기준입니다. 준비 파일입니다. libicu-50.2-4.el7_7.x86_64.rpm postgresql11-libs-11.15-1PGDG.rhel7.x86_64.rpm postgresql11-11.15-1PGDG.rhel7.x86_64.rpm postgresql11-server-11.15-1PGDG.rhel7.x86_64.rpm 위 파일들을 /root경로에 업로

developer-woong.tistory.com

HADOOP 설치

https://developer-woong.tistory.com/36

 

hadoop 설치 (정리모음버전)

centos7 기준입니다. 6대의 서버가 준비되어있고, ntp설정, ip설정 및 호스트네임 등록, jdk 설정, zookeeper 설치가 완료됨을 가정합니다. https://developer-woong.tistory.com/37 centos linux ntp enable centos7 기준입니

developer-woong.tistory.com

 

1. Hive에서 사용할 PostgreSQL 유저 및 DB 생성

action server: mast02

user: root

pwd: -

cmd:

su - postgres

# 다른 포트로 설치하였습니다.
psql -p 14325
create user hive password 'hive';
create database hive owner hive;
grant all privileges on database hive to hive;
\connect hive;
\q

# root계정 전환
exit

 

2. Hive 압축파일 다운로드

action server: mast02

user: root

pwd: -

cmd:

cd /opt/apps
wget https://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz

# 압축 해제 및 이름 변경
tar xvfz apache-hive-3.1.3-bin.tar.gz
mv apache-hive-3.1.3-bin hive-3.1.3

 

3. Hive 환경변수 지정 및 권한 변경

action server: mast02

user: root

pwd: -

cmd:

chown -R hadoop:hadoop /opt/apps/hive-3.1.3

vi /etc/profile.d/hive.sh

export HIVE_HOME=/opt/apps/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile.d/hive.sh

# 계정 전환 및 경로 이동
su - hadoop
cd /opt/apps/hive-3.1.3

 

4. Hive 설정 파일 수정

action server: mast02

user: hadoop

pwd: /opt/apps/hive-3.1.3

cmd:

cp conf/hive-env.sh.template conf/hive-env.sh

# hive 실행 환경 수정
vi conf/hive-env.sh

HADOOP_HOME=/opt/apps/hadoop-3.3.5
export HIVE_AUX_JARS_PATH=/opt/apps/hive-3.1.3/lib/

# Folder containing extra libraries required for hive compilation/execution can be controlled by:
if [ "${HIVE_AUX_JARS_PATH}" != "" ]; then
 if [ -f "${HIVE_AUX_JARS_PATH}" ]; then
 export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}
 elif [ -d "/opt/apps/hive-3.1.3/hcatalog/share/hcatalog" ]; then
 export HIVE_AUX_JARS_PATH=/opt/apps/hive-3.1.3/hcatalog/share/hcatalog/hive-hcatalog-core-3.1.3.jar
 fi
elif [ -d "/opt/apps/hive-3.1.3/hcatalog/share/hcatalog" ]; then
 export HIVE_AUX_JARS_PATH=/opt/apps/hive-3.1.3/hcatalog/share/hcatalog/hive-hcatalog-core-3.1.3.jar
fi


# hive 설정 변경
vi conf/hive-site.xml

<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:postgresql://mast02:14325/hive</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>org.postgresql.Driver</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>hive</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>hive</value>
        </property>
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive/warehouse</value>
        </property>
        <property>
                <name>hive.server2.enable.doAs</name>
                <value>false</value>
        </property>
        <property>
                <name>hive.server2.authentication</name>
                <value>NONE</value>
        </property>
        <property>
                <name>hive.security.authorization.sqlstd.confwhitelist.append</name>
                <value>mapreduce.*|mapred.*|hadoop.*|user*|password*|hive.*</value>
        </property>
        <property>
                <name>hive.strict.managed.tables</name>
                <value>false</value>
        </property>
        <property>
                <name>hive.exec.scratchdir</name>
                <value>/tmp/hive</value>
        </property>
        <property>
                <name>hive.user.install.directory</name>
                <value>/user/</value>
        </property>
        <property>
                <name>hive.exec.parallel</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.exec.parallel.thread.number</name>
                <value>8</value>
        </property>
</configuration>

cp conf/hive-log4j2.properties.template conf/hive-log4j2.properties
chmod 755 conf/hive-log4j2.properties

# hive log 디렉토리지정
vi conf/hive-log4j2.properties

property.hive.log.dir = /data/hive/log
property.hive.log.file = hive.log

# hive log 디렉토리 생성 및 권한 부여
exit
mkdir -p /data/hive/log
chown -R hadoop:hadoop /data/hive/
su - hadoop
cd /opt/apps/hive-3.1.3

 

5. jar 파일 변경 및 추가

action server: mast02

user: hadoop

pwd: /opt/apps/hive-3.1.3

cmd:

# hadoop의 구아바버전과 동일하게 설정
find ./ -name guava*.jar -> 구아바 파일 찾기
rm -rf ./lib/guava-19.0.jar -> 해당 하이브는 구아바 19버전을 사용하였습니다.
# 하둡 폴더 내의 구아바파일을 복사합니다.
cp ../hadoop-3.3.5/share/hadoop/common/lib/guava-27.0-jre.jar ./lib

# postgresql.jar파일을 업로드합니다.
cp postgresql-42.2.6.jar /opt/apps/hive-3.1.3/lib/

# 업로드 후 파일 권한들 hadoop:hadoop으로 되어있는지 확인해주세요!

 

6. Hive에서 사용할 HDFS 경로 생성

action server: mast02

user: hadoop

pwd: /opt/apps/hive-3.1.3

cmd:

hdfs dfs -mkdir /user/hive
hdfs dfs -mkdir /user/hive/warehouse

hdfs dfs -mkdir /tmp/hive

hdfs dfs -chmod g+w /user/hive
hdfs dfs -chmod g+w /user/hive/warehouse

hdfs dfs -chmod 777 /tmp/hive

 

7. Hive 초기화 및 기동

action server: mast02

user: hadoop

pwd: /opt/apps/hive-3.1.3

cmd:

./bin/schematool -initSchema -dbType postgres

cd bin

# hiveserver2 기동
nohup hive --service hiveserver2 >> /data/hive/log/hiveserver2.log 2>&1 &

# hive metastore 기동
nohup hive --service metastore >> /data/hive/log/hive-metastore.log 2>&1 &

# 기동 확인
netstat -ntlp | grep 9083
netstat -ntlp | grep 10000
netstat -ntlp | grep 10002

mast02:10002

 

8. Hive 콘솔진입 

action server: mast02

user: hadoop

pwd: /opt/apps/hive-3.1.3/bin

cmd:

# 콘솔 진입
hive

create database test;
use test;
create table first (col1 string);
select * from first;

 

다음 포스팅에 tez엔진 교체를 다루어보겠습니다!

반응형

'BigData > Hive' 카테고리의 다른 글

Hive) 테이블 컬럼명 변경  (0) 2023.12.28
apache hive 엔진 tez 교체  (0) 2023.09.08
Hive server, metastore 로그  (0) 2023.09.07
apache tez build error 트러블슈팅  (0) 2023.07.26
apache tez 빌드  (2) 2023.07.24

+ Recent posts