클라이언트 서버 연결
HDE 클러스터에 사용자가 생성한 클라이언트 VM을 연결하는 방법은 다음과 같습니다.
Hadoop
하둡을 연결하는 순서는 다음과 같습니다.
1. 설정 파일 복사
HDE 클러스터에 설치된 컴포넌트의 설정은 /etc/[컴포넌트 명]/conf
에 위치합니다.
각 노드에 설치된 컴포넌트에 따라 설정이 존재하는 경우와 없는 경우가 있을 수 있으며, Hadoop, Hive의 설정을 확인하는 방법은 아래와 같습니다.
(각 컴포넌트의 설정 파일 위치에 접근하여 tar 명령으로 압축 후 scp 명령으로 복사하면 됩니다.)
########################################
# hadoop 설정 확인
########################################
$ cd /etc/hadoop/conf
$ ls -alh
total 216
drwxr-xr-x 3 ubuntu ubuntu 4096 Sep 26 18:19 ./
drwxr-xr-x 3 ubuntu ubuntu 4096 Sep 26 18:18 ../
-rw-r--r-- 1 ubuntu ubuntu 9610 Sep 26 18:19 capacity-scheduler.xml
-rw-r--r-- 1 ubuntu ubuntu 1335 Jul 29 2022 configuration.xsl
-rw-r--r-- 1 ubuntu ubuntu 2567 Jul 29 2022 container-executor.cfg
-rw-r--r-- 1 ubuntu ubuntu 5017 Sep 26 18:19 core-site.xml
-rw-rw-r-- 1 ubuntu ubuntu 0 Sep 26 18:19 dfs.hosts.exclude
-rw-r--r-- 1 ubuntu ubuntu 3999 Jul 29 2022 hadoop-env.cmd
########################################
# hive 설정 확인
########################################
$ cd /etc/hive/conf
$ ls -alh
total 380
drwxr-xr-x 2 ubuntu ubuntu 4096 Sep 26 18:19 ./
drwxr-xr-x 10 ubuntu ubuntu 4096 Sep 26 18:21 ../
-rw-r--r-- 1 ubuntu ubuntu 1596 Oct 24 2019 beeline-log4j2.properties.template
-rw-r--r-- 1 ubuntu ubuntu 300727 Apr 4 2022 hive-default.xml.template
-rw-rw-r-- 1 ubuntu ubuntu 2194 Sep 26 18:19 hive-env.sh
-rw-r--r-- 1 ubuntu ubuntu 2365 Oct 24 2019 hive-env.sh.template
########################################
# hadoop 설정 압축 및 복사
########################################
# hadoop 설정 압축
$ tar czf hadoop-conf.tgz /etc/hadoop/conf/*
# hadoop 설정 복사
$ scp -i {PRIVATE_KEY 파일} hadoop-conf.tgz ubuntu@{대상 노드 IP}:{PATH}
2. /etc/hosts 설정 추가
클러스터와 연결을 위해서 사용자 VM에 호스트 정보를 추가해야 합니다.
이를 위해 연결하고자 하는 클러스터의 VM에서 /etc/hosts 파일을 확인하고 이를을 복사합니다.
(사용자 VM의 정보도 클러스터의 각 노드에 추가해 주어야 합니다.)
- HDE 클러스터의 노드
- 사용자 VM의 호스트 정보 추가 필요
- 사용자 VM
- HDE 클러스터 노드의 정보 추가 필요
########################################
# /etc/hosts 파일 수정
########################################
$ sudo vi /etc/hosts
########################################
# /etc/hosts 설정 확인
######################################## $ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
172.30.35.48 host-172-30-35-48
172.30.34.235 host-172-30-34-235
172.30.34.124 host-172-30-34-124
3. 파일 다운로드 및 압축 해제
Java는 다음 버전을 다운로드하고, 하둡은 HDE 버전에 맞게 다운로드합니다.
컴포넌트 | 버전 | 위치 |
---|---|---|
java | jdk8 | |
HDE-1.0.0 | hadoop 2.10.1 | |
HDE-1.1.0 | hadoop 2.10.1 | |
HDE-1.1.1 | hadoop 2.10.2 | |
HDE-2.0.0 | hadoop 3.3.4 |
########################
# 파일 다운로드
# Java, Hadoop
$ wget https://objectstorage.kr-central-1.kakaocloud.com/v1/c745e6650f0341a68bb73fa222e88e9b/kbp-install-file/component/OpenJDK8U-jdk_x64_linux_hotspot_8u262b10.tar.gz
$ wget https://objectstorage.kr-central-1.kakaocloud.com/v1/c745e6650f0341a68bb73fa222e88e9b/kbp-install-file/component/hadoop-3.3.4-kbp.tar.gz
########################
# 압축 해제
$ tar zxf hadoop-3.3.4-kbp.tar.gz
$ tar zxf OpenJDK8U-jdk_x64_linux_hotspot_8u262b10.tar.gz
4. 명령어 실행
압축 해제 후 다음과 같이 명령을 실행할 수 있습니다.
# 현재 파일 구조 확인
$ ls -alh
total 782620
drwxr-x--- 7 ubuntu ubuntu 4096 Sep 27 08:57 ./
drwxr-xr-x 3 root root 4096 Sep 27 08:54 ../
-rw-r--r-- 1 ubuntu ubuntu 220 Jan 6 2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Jan 6 2022 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Sep 27 08:56 .cache/
-rw-r--r-- 1 ubuntu ubuntu 807 Jan 6 2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Sep 27 08:54 .ssh/
-rw-rw-r-- 1 ubuntu ubuntu 191 Sep 27 08:56 .wget-hsts
-rw-rw-r-- 1 ubuntu ubuntu 103200089 Aug 9 05:14 OpenJDK8U-jdk_x64_linux_hotspot_8u262b10.tar.gz
drwxrwxr-x 3 ubuntu ubuntu 4096 Sep 27 08:57 etc/
drwxr-xr-x 10 ubuntu ubuntu 4096 Jul 29 2022 hadoop-3.3.4/
-rw-rw-r-- 1 ubuntu ubuntu 698117781 Aug 9 05:10 hadoop-3.3.4-kbp.tar.gz
-rw-rw-r-- 1 ubuntu ubuntu 28867 Sep 27 08:57 hadoop-conf.tgz
drwxr-xr-x 8 ubuntu ubuntu 4096 Jul 15 2020 jdk8u262-b10/
# 환경 변수 export
$ export JAVA_HOME=/home/ubuntu/jdk8u262-b10
$ export HADOOP_CONF=/home/ubuntu/etc/hadoop/conf/
# HDFS 조회 명령어 실행
$ ./hadoop-3.3.4/bin/hadoop fs -ls hdfs://host-172-30-35-48/
Found 8 items
drwxrwxrwt - yarn hadoop 0 2023-09-27 00:07 hdfs://host-172-30-35-48/app-logs
drwxrwxrwx - hdfs hadoop 0 2023-09-26 23:18 hdfs://host-172-30-35-48/apps
drwxr-xr-t - yarn hadoop 0 2023-09-26 09:20 hdfs://host-172-30-35-48/ats
drwxr-xr-x - hdfs hadoop 0 2023-09-26 09:20 hdfs://host-172-30-35-48/hadoop
drwxr-xr-x - mapred hadoop 0 2023-09-26 09:20 hdfs://host-172-30-35-48/mr-history
drwxrwxrwt - hdfs hadoop 0 2023-09-26 09:21 hdfs://host-172-30-35-48/tmp
drwxr-xr-x - hdfs hadoop 0 2023-09-26 09:21 hdfs://host-172-30-35-48/user
drwxrwxrwt - yarn hadoop 0 2023-09-26 09:20 hdfs://host-172-30-35-48/var
Hive
Hive를 연결하는 순서는 다음과 같습니다.
- 설정 파일 복사
- /etc/hosts 설정 추가
- 파일 다운로드 및 압축 해제
- 명령어 실행
설정 파일 복사
와 /etc/hosts 설정
은 Hadoop과 동일합니다.
파일 다운로드 및 압축 해제
Java는 다음 버전을 다운로드하고, Hive은 HDE 버전에 맞게 다운로드합니다.
컴포넌트 | 버전 | 위치 |
---|---|---|
java | jdk8 | |
HDE-1.0.0 | hive 2.3.2 | |
HDE-1.1.0 | hive 2.3.9 | |
HDE-1.1.1 | hive 2.3.9 | |
HDE-2.0.0 | hive 3.1.3 |
Hive 설정 연결
Hive 설정을 연결하기 위해서 먼저 Hadoop을 설정해야 합니다.
Hadoop을 설정한 후, 필요한 설정을 연결하기 전에 export하고, 서버의 설정 파일에서 Hive 설정을 연결하여 작업을 진행합니다.
#######################################
# 환경변수 설정
$ export JAVA_HOME=/home/ubuntu/jdk8u262-b10
$ export HADOOP_HOME=/home/ubuntu/hadoop-3.3.4/
$ export HADOOP_CONF=/home/ubuntu/etc/hadoop/conf/
$ export HIVE_CONF_DIR=/home/ubuntu/etc/hive/conf/
#######################################
# beeline 실행 및 연결 후 database 정보 확인
$ ./apache-hive-3.1.3-bin/bin/beeline
Beeline version 3.1.3 by Apache Hive
beeline> !connect jdbc:hive2://host-172-30-35-48:10000/default
Connecting to jdbc:hive2://host-172-30-35-48:10000/default
Enter username for jdbc:hive2://host-172-30-35-48:10000/default:
Enter password for jdbc:hive2://host-172-30-35-48:10000/default:
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://host-172-30-35-48:10000/defau> show databases;
INFO : Compiling command(queryId=ubuntu_20230927090910_62ea1ad1-58b6-49ee-871b-ee07cb7ed32a): show databases
INFO : Semantic Analysis Completed (retrial = false)
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:database_name, type:string, comment:from deserializer)], properties:null)
INFO : Completed compiling command(queryId=ubuntu_20230927090910_62ea1ad1-58b6-49ee-871b-ee07cb7ed32a); Time taken: 1.181 seconds
INFO : Executing command(queryId=ubuntu_20230927090910_62ea1ad1-58b6-49ee-871b-ee07cb7ed32a): show databases
INFO : Starting task [Stage-0:DDL] in serial mode
INFO : Completed executing command(queryId=ubuntu_20230927090910_62ea1ad1-58b6-49ee-871b-ee07cb7ed32a); Time taken: 0.63 seconds
INFO : OK
+----------------+
| database_name |
+----------------+
| default |
+----------------+
1 row selected (2.467 seconds)
Spark
파일 다운로드 및 압축 해제
Java는 다음 버전을 다운로드하고, Spark는 HDE 버전에 맞게 다운로드합니다.
컴포넌트 | 버전 | 위치 |
---|---|---|
java | jdk8 | |
HDE-1.0.0 | spark 2.4.6 | |
HDE-1.1.0 | spark 2.4.8 | |
HDE-1.1.1 | spark 2.4.8 | |
HDE-2.0.0 | spark 3.2.2 |
Spark 설정 연결
#######################################
# 환경변수 설정
$ export JAVA_HOME=/home/ubuntu/jdk8u262-b10
$ export HADOOP_HOME=/home/ubuntu/hadoop-3.3.4/
$ export HADOOP_CONF=/home/ubuntu/etc/hadoop/conf/
$ export HIVE_CONF_DIR=/home/ubuntu/etc/hive/conf/
# spark-env.sh 에 hadoop classpath 명령으로 출력되는 정보를 추가
# PATH에 hadoop 명령어의 경로가 추가되어 있다면 따로 설정하지 않아도 됨
$ export SPARK_DIST_CLASSPATH="../home/ubuntu/spark/hadoop-3.3.4//share/hadoop/yarn/lib/*:/home/ubuntu/spark/hadoop-3.3.4//share/hadoop/yarn/*.."
#######################################
# /etc/hosts 정보 확인
$ 사용자 VM과 클러스터에 사용자 VM의 호스트 정보, 클러스터의 호스트 정보가 모두 추가되어 있어야 함
$ spark-shell
23/09/29 04:23:12 INFO YarnClientSchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.8
23/09/29 04:23:12 INFO BlockManagerMasterEndpoint: Registering block manager host-172-30-33-233:41301 with 366.3 MiB RAM, BlockManagerId(1, host-172-30-33-233, 41301, None)
Spark context Web UI available at http://host-172-30-33-46:4040
Spark context available as 'sc' (master = yarn, app id = application_1695806330771_0003).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.2.2
/_/
Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java 1.8.0_262)
Type in expressions to have them evaluated.
Type :help for more information.
오류 확인
- 자주 발생하는 오류
- Caused by: java.net.UnknownHostException: host-172-30-33-46
- 사용자 VM에 클러스터의 호스트 정보, 클러스터의 VM에 사용자 VM의 호스트 정보가 추가되지 않았을 때 발생
- Caused by: java.lang.ClassNotFoundException: org.apache.log4j.spi.Filter
- SPARK_DIST_CLASSPATH에 정보가 정확하게 추가되어 있지 않을 때 발생
- Caused by: java.net.UnknownHostException: host-172-30-33-46
HBase
파일 다운로드 및 압축 해제
Java는 다음 버전을 다운로드하고, HBase는 HDE 버전에 맞게 다운로드합니다.
컴포넌트 | 버전 | 위치 |
---|---|---|
java | jdk8 | |
HDE-1.0.0 | hbase 1.4.13 | |
HDE-1.1.0 | hbase 1.7.1 | |
HDE-1.1.1 | hbase 1.7.1 | |
HDE-2.0.0 | hbase 2.4.13 |
HBase 설정 연결
Hbase 설정을 위해서 Hadoop도 함께 설정해야 합니다.
#######################################
# 환경변수 설정
export JAVA_HOME=/home/ubuntu/jdk8u262-b10
export HADOOP_CONF_DIR=/home/ubuntu/etc/hadoop/conf/
export HBASE_CONF_DIR=/home/ubuntu/etc/hbase/conf/
$ ./hbase-1.4.13/bin/hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
Version 1.4.13, r38bf65a22b7e9320f07aeb27677e4533b9a77ef4, Sun Feb 23 02:06:36 PST 2020
hbase(main):001:0> status
1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load
hbase(main):002:0> exit