Hadoop 고가용성 클러스터 구성

HDFS 고가용성 아키텍처

QJM(Quorum Journal Manager)

1. QJM은 Hadoop 공식 HA 솔루션으로 분산 저널링 시스템
2. Zookeeper 기반 ZKFC를 통한 Active/Standby 전환
3. Journal Node 클러스터에서 edits log 공유 및 동기화

ZKFailoverController 장애 전환

ZKFC의 주요 기능:
  1. NameNode 상태 모니터링
  2. Zookeeper와의 지속적 연결 유지
  3. 선출 메커니즘: 
      - 상태 확인 후 znode 잠금 시도
      - 잠금 성공 시 Active 상태 전환
      - 실패 시 이벤트 감지 후 재시도

Fencing 격리 메커니즘

뇌분할(brain split) 방지를 위한 이중화 기술:
  - sshfence: SSH 접속 후 fuser 명령으로 프로세스 종료
  - shellfence: 사용자 정의 스크립트 실행
  - tcp 포트 검증을 통한 정확한 프로세스 식별

Journal Node 데이터 동기화

2N+1 구성의 JN 클러스터 특징:
  - Active NN의 모든 수정 작업은 과반수 JN에 기록
  - Standby NN은 JN 변경 감지 후 자동 동기화
  - 분산 합의 알고리즘 기반 데이터 일관성 유지

클러스터 구성 요구사항

1. 호스트명/IP 설정
2. /etc/hosts 파일 구성
3. 방화벽 비활성화
4. SSH 키 기반 인증 설정
5. JDK 설치 및 환경 변수 설정
6. NTP 기반 시간 동기화
7. NN 상호간 비밀번호 없음 로그인
8. fence 명령어 설치: # yum install psmisc nc -y

Hadoop 설정 절차

환경 변수 설정

# /etc/profile.d/hadoop-env.sh
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export JAVA_HOME=/usr/lib/jvm/java-11
export HDFS_NAMENODE_USER=hadoop
export HDFS_ZKFC_USER=hadoop

core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hacluster</value>
  </property>
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>zk1:2181,zk2:2181,zk3:2181</value>
  </property>
</configuration>

hdfs-site.xml

<property>
  <name>dfs.nameservices</name>
  <value>hacluster</value>
</property>
<property>
  <name>dfs.ha.namenodes.hacluster</name>
  <value>nn-primary,nn-secondary</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.hacluster.nn-primary</name>
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

클러스터 배포

# 모든 노드에 설정 동기화
rsync -av /opt/hadoop/ node2:/opt/hadoop/
rsync -av /opt/hadoop/ node3:/opt/hadoop/

클러스터 초기화 및 시작

저널노드 시작

# 각 노드에서 실행
hdfs --daemon start journalnode

네임노드 초기화

# 주 노드에서
hdfs namenode -format
hdfs --daemon start namenode

# 대기 노드에서
hdfs namenode -bootstrapStandby

ZKFC 초기화

hdfs zkfc -formatZK

서비스 시작

start-dfs.sh
start-yarn.sh

# 보조 리소스매니저 수동 시작
yarn --daemon start resourcemanager

장애 조치 검증

상태 확인

hdfs haadmin -getServiceState nn-primary
hdfs dfsadmin -report

장애 시뮬레이션

# Active NN 프로세스 종료
kill -9 $(jps | grep NameNode | awk '{print $1}')

# Standby NN 자동 전환 확인
curl http://node2:9870

복구 후 상태

# 종료된 NN 재시작
hdfs --daemon start namenode

# 자동 Standby 전환 확인
hdfs haadmin -getAllServiceState

태그: hadoop HA클러스터 HDFS고가용성 QJM ZKFC

7월 18일 21:10에 게시됨