빅데이터 분석 환경 구축(Docker 활용)

#6 Zookeeper 클러스터 설정 및 Hadoop & Yarn 클러스터 실행

쵸비 2023. 7. 7. 12:49
728x90

 

인스턴스(컨테이너) 복제가 완료되었으니 Zookeeper 클러스터를 설정해주자.

 

  • myid 파일 편집
    : nn1,nn2,dn1 서버에 myid를 각각 1,2,3으로 편집
# nn2 서버에서
vim /usr/local/zookeeper/data/myid
# 아래 내용으로 수정 후 저장
2
# nn1으로 이동
exit

# dn1 서버에서
vim /usr/local/zookeeper/data/myid

# 아래 내용으로 수정 후 저장
3

 

  • Zookeeper 실행

: nn1, nn2, dn1 서버에서 각각 실행한다.

# nn1 서버 zookeeper 시작
/usr/local/zookeeper/bin/zkServer.sh start

# nn2 서버 zookeeper 시작
/usr/local/zookeeper/bin/zkServer.sh start

# dn1 서버 zookeeper 시작
/usr/local/zookeeper/bin/zkServer.sh start

 

  • Zookeeper 상태 확인

: nn1, nn2, dn1 서버에서 각각 실행한다. namenode 하나가 Leader가 나오고 나머지는 Follower가 나오게 된다.

# nn1 서버 zookeeper 확인
/usr/local/zookeeper/bin/zkServer.sh status
#follower

# nn2 서버 zookeeper 확인
/usr/local/zookeeper/bin/zkServer.sh status
#leader

# dn1버 zookeeper 확인
/usr/local/zookeeper/bin/zkServer.sh status
#follower

 

  • HDFS ZKFC 초기화

HDFS에서 ZKFC를 초기화 하는 이유는 HDFS의 고가용성을 유지하기 위해서 주키퍼가 네임노드의 상태를 모니터링하기에 앞서 하는 작업입니다.

 

 nn1 서버에서 진행.

source /etc/environment
# zkfc 초기화
hdfs zkfc -formatZK
  • HDFS ZKFC 초기화 확인

nn1 서버에 진행.

# zookeeper 폴더로 이동
cd /usr/local/zookeeper

# zkCli 실행
./bin/zkCli.sh

# Hadoop 클러스터 확인 [zk: localhost:2181(CONNECTED) 1] 하나확인
ls /hadoop-ha

# [my-hadoop-cluster] 확인 후 quit 명령으로 종료
quit

 

  • Journalnode 실행

: nn1, nn2, dn1 에서 실행한다.

# nn1서버에서 실행
hdfs --daemon start journalnode

# nn2서버에서 실행
hdfs --daemon start journalnode

# dn1에서 실행
hdfs --daemon start journalnode

만약에 에러가 발생하면 시스템 변수가 활성이 안되어서 그럴 수 있으니 아래 코드를 실행해주자.

#필요에 따라 (bash: hdfs: command not found)
source /etc/environment

 

Hadoop & Yarn 클러스터 실행

[ Namenode ]

  • NameNode 초기화

: nn1 에서 실행.

# hdfs namenode 포맷
hdfs namenode -format
  • NameNode 실행

: nn1 에서만 실행.

# hdfs namenode 실행
hdfs --daemon start namenode

jps를 커멘드에 입력했을 때 namenode가 보이는지 체크

[ Standby NameNode ]

  • Standby NameNode 실행

: nn2 에서만 실행.

# hdfs standby namenode 실행
hdfs namenode -bootstrapStandby

 

 

[ Hadoop 실행 ]

  • start-dfs.sh실행

: nn1 에서만 실행. 해당 단계에서 “DFSZKFailoverController” 프로세스가 실행 된다.

start-dfs.sh

 

[ Yarn 실행 ]

  • start-yarn.sh실행

: nn1 에서만 실행. 해당 단계에서 “ResourceManager” 프로세스가 실행된다. 나머지 DataNode 서버에서는 “NodeManager” 프로세스가 실행된다.

start-yarn.sh

jps를 커멘드에 입력하여 각각의 서버에 실행한 Manager, Node가 생성이 되었는지 체크

 

 

[ JobHistory 실행 ]

  • historyserver 실행

: nn1 에서만 실행. 해당 단계에서 “JobHistoryServer” 프로세스가 실행된다.

mapred --daemon start historyserver
  • Active, Standby NameNode 확인
#nn1 서버에서 실행
hdfs haadmin -getServiceState namenode1
#active

#nn2 서버에서 실행
hdfs haadmin -getServiceState namenode2
#standby

active와 standby가 보이는데 active는 말그대로 실행중인 서버로 인식되는 표시이고 standby는 nn1서버가 모종의 이유로 문제가 생길시 nn2가 이어받을 준비가 되었다는 표시이다.

 

jps를 커멘드에 입력하고 manager와 node들이 실행이 되었다면 클러스터를 정상적으로 실행한 것이다.

728x90