docker에서 하둡/스파크 설치를 위한 첫번째 도전...
2021.07.27 - [Docker] 빅데이터 분석환경 구성1-Ubuntu&Java설치
2021.07.27 - [Docker] 빅데이터 분석환경구성2-Hadoop 2.7.7
2021.07.27 - [Docker] 빅데이터 분석환경구성3-Spark 3.0설치
2021.07.27 - [Docker]빅데이터 분석환경 구성4-Zeppelin0.9 설치
이번엔 두번째 도전이다...
첫번째 도전일때도 되긴되었지만, 뭔가 뭣모르고 따라한 기분이랄까..?
그래서 뭔가 찜찜한 기분이 들엇다. 그런데 이번 두번째 설치를 함으로써 이제 어느정도 알 것 같다.
역시 한번해보는거랑 두번해보는거랑 달라......그리고 그때 안됐던 웹UI도 다 확인해볼수 있었다..!
1. Ubuntu 및 Java 설치
1-1. ubuntu이미지 받아옴
docker pull ubuntu:18.04
1-2. unbunt 접속
docker run -it --name bigdata_final ubuntu:18.04
1-3. ssh 설정
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
1-4. java 설치
wget https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.tar.gz
tar xvfz amazon-corretto-11-x64-linux-jdk.tar.gz
mv amazon-corretto-11.0.12.7.1-linux-x64/ java #파일명변경
1-5. java path 설정
# path
vim ~/.bashrc
# java
export JAVA_HOME=/root/java
export PATH=$PATH:$JAVA_HOME/bin
# path 저장
source ~/.bashrc
1-6. java 설치확인
java —version
javac —version
2. Hadoop 설치
2-1. hadoop 3.3.1 버전 다운로드
# hadoop 설치
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar xvzf hadoop-3.3.1.tar.gz
mv hadoop-3.3.1 hadoop
2-2. hadoop path 설정
#path
vim ~/.bashrc
#hadoop
export HADOOP_HOME=/root/hadoop
export HADOOP_CONF_DIR=/root/hadoop/etc/hadoop
export PATH = $PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#hadoop user
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#path 저장
source ~/.bashrc
2-3. hadoop config변경
vi hadoop/etc/hadoop/core-site.xml
### 아래와 같이 configuration 작성
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
vi hadoop/etc/hadoop/hdfs-site.xml
### 아래와 같이 configuration 작성 (singletone이라서 replication 1)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
vi hadoop/etc/hadoop/mapred-site.xml`
### 아래와 같이 configuration 작성
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2-4. format
hdfs namenode -format
## 아래와 같이 나타나면 정상
2021-09-06 09:23:39,542 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at 34fa4f8b4498/172.17.0.3
************************************************************/
hdfs datanode -format
## 아래와 같이 나타나면 정상
2021-09-06 09:23:49,251 WARN datanode.DataNode: Exiting Datanode
2021-09-06 09:23:49,265 INFO util.ExitUtil: Exiting with status 1: ExitException
2021-09-06 09:23:49,276 INFO datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at 34fa4f8b4498/172.17.0.3
************************************************************/
2-5. Hadoop 시작
start-dfs.sh
## 아래와 같이 나타나면 정상
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [34fa4f8b4498]
7f62cc7004c2: Warning: Permanently added '34fa4f8b4498,172.17.0.3' (ECDSA) to the list of known hosts.
start-yarn.sh
## 아래와 같이 나타나면 정상
Starting resourcemanager
Starting nodemanagers
start-all.sh
## 아래와 같이 나타나면 정상
Starting namenodes on [localhost]
localhost: namenode is running as process 821. ..생략
Starting secondary namenodes [34fa4f8b4498]
34fa4f8b4498: secondarynamenode is running as process 1313. ..생략
resourcemanager is running as process 2445. ..생략
localhost: nodemanager is running as process 2644. ..생략
jps
## 아래와 같이 나타나면 정상
1346 NodeManager
517 DataNode
2342 Jps
808 SecondaryNameNode
1147 ResourceManager
315 NameNode
hdfs dfsadmin -report
## 아래와 같이 나타나면 정상
Configured Capacity: 0 (0 B)
Present Capacity: 0 (0 B)
DFS Remaining: 0 (0 B)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Replicated Blocks:
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
Erasure Coded Block Groups:
Low redundancy block groups: 0
Block groups with corrupt internal blocks: 0
Missing block groups: 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
- 혹시 환경설정이 안잡힌다면? → 가상환경설정에도 넣어주기
cd hadoop/etc/hadoop/ vi hadoop-env.sh 54번째줄 export JAVA_HOME=/root/java 58번째줄 export HADOOP_HOME=/root/hadoop 68번째줄 export HADOOP_CONF_DIR=/root/hadoop/etc/hadoop (${HADOOP_HOME}/etc/hadoop)
- 혹시 아래처럼 22 port connection문제가 생긴다면? → hosts.allow 파일 작성하기
- 가장 상위루트에 가서
vi etc/hosts.allow
아래와 같이 입력 - ssh 재시작 :
etc/init.d/ssh restart
- 22포트가 열린게 확인이 되면 exit하고 나온다.
- ssh접속테스트 :
ssh 0.0.0.0
3. Spark설치
3-1.spark 3.1.2 버전 (without hadoop) 다운로드
# spark설치
wget https://dlcdn.apache.org/spark/spark-3.1.2/spark-3.1.2-bin-without-hadoop.tgz
tar xvzf spark-3.1.2-bin-without-hadoop.tgz
mv spark-3.1.2-bin-without-hadoop spark
3-2. python3 설치
sudo apt install python3-pip -y
pip install numpy
3-3. Spark Path 설정
# path
sudo vim ~/.bashrc
# spark
export SPARK_HOME=/root/spark
export PATH=$PATH:$SPARK_HOME/bin
export PATH=$PATH:$SPARK_HOME/sbin
export SPARK_DIST_CLASSPATH=$(/root/hadoop/bin/hadoop classpath)
# path저장
source ~/.bashrc
3-4. Spark 환경설정
cd $SPARK_HOME/conf
root@891323fd7b49:~/spark/conf# ls
fairscheduler.xml.template metrics.properties.template spark-env.sh.template
log4j.properties.template spark-defaults.conf.template workers.template
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
#아래와 같이 작성
export JAVA_HOME=/root/java
export HADOOP_CONF_DIR=/root/hadoop/etc/hadoop
export YARN_CONF_DIR=/root/hadoop/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/root/hadoop/bin/hadoop classpath)
cp workers.template workers
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
#아래와 같이 작성
spark.master yarn
3-5. pySpark 실행
- pyspark가 제대로 실행이 되지 않는다면?spark를 실행하기 위해서 이전에 hadoop도 켜져 있어야한다
- 현재 하둡관리자가 spark도 관리할 수 있도록 설정한것이기 떄문에
추가. WebUI접근하기 위한 docker의 네트워크 설정
하둡과 스파크는 웹ui를 제공해준다.
그런데 지금 나같은 경우는 도커 컨테이너에서 하둡이랑 스파크를 실행하다보니
외부에서 컨테이너에 접속이 필요하기 때문에 포트포워딩을 해줘야한다
1. 지금까지 구성한 컨테이너를 commit → 이미지로 저장
docker ps
docker commit [컨테이너이름] [저장할 이미지이름:태그]
컨테이너이름 : bigdata_final
이미지 : bigdata:210906
2. 생성된 이미지로 컨테이너 시작 → 포트포워딩 적용
docker images
docker run -it -p 9870:9870 -p 9000:9000 -p 4040:4040 -p 8088:8088
--name final_test bigdata:210906
컨테이너이름 : bigdata_final
사용이미지 : bigdata:210906
3. 시작한 컨테이너에 접속해서 hadoop실행
root@34fa4f8b4498:/# service ssh start
* Starting OpenBSD Secure Shell server sshd
root@34fa4f8b4498:/# start-all.sh
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [34fa4f8b4498]
Starting resourcemanager
Starting nodemanagers
4.hadoop 웹 ui접속 : localhost:9870
5. hadoop yarn 웹 접속 : localhost:8088
running중인 pyspark 어플리케이션 확인
6.시작한 컨테이너에 접속해서 pyspark실행
7.spark 웹 ui 접속 : localhost:4040
도커내부 호스트이름(34fa4f8b4498)의 8088로 바뀌면서 접속이 되지 않는다............ㅠㅠ
'🌴 DevOps > Docker & K8s' 카테고리의 다른 글
[유데미 강의 정리 1] docker 개념 및 도커 네트워킹 통신 (0) | 2024.03.31 |
---|---|
[docker] Mac M1 이미지 빌드 오류 : qemu: uncaught target signal 6 (Aborted) - core dumped (0) | 2022.03.28 |
[Docker] (보류) 도커허브에 이미지 배포 +TroubleShooting (0) | 2021.07.27 |
[Docker]빅데이터 분석환경 구성4-Zeppelin0.9 설치 (0) | 2021.07.27 |
[Docker] 빅데이터 분석환경구성3-Spark 3.0설치 (0) | 2021.07.27 |
[Docker] 빅데이터 분석환경구성2-Hadoop 2.7.7 (0) | 2021.07.27 |