Hadoop/설치
Hadoop Resource Manager HA 구성하기
보니아빠
2020. 9. 8. 18:36
Namenode 를 HA 구성하여 SPOF(Single Point Of Failure)에서 벗어났지만, 이번엔 리소스관리자인 YARN이 또다른 SPOF입니다. 이번에는 Resource Manager를 HA 구성하는 방법에 대하여 알아보겠습니다.
1. 서버 구성
1.1 yarn-site.xml
yarn-site.xml을 아래와 같이 수정해 줍니다.
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/hadoop/hadoopdata/yarn/nm-local-dir</value>
</property>
<property>
<name>yarn.resourcemanager.fs.state-store.uri</name>
<value>/home/hadoop/hadoopdata/yarn/system/rmstore</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>0.0.0.0:8089</value>
</property>
<!-- for Resource Manager HA configuration -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop02</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop01:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop02:8088</value>
</property>
<property>
<name>hadoop.zk.address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>
1.5 설정파일 전송
모든 설정 파일을 다른 hadoop 서버로 전송해 줍니다. 아래 명령을 이용합니다.
scp $HADOOP_HOME/etc/hadoop/* hadoop02:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/* hadoop03:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/* hadoop04:$HADOOP_HOME/etc/hadoop/
2. 하둡 실행
아래 명령으로 하둡을 시작 합니다.
start-dfs.sh
start-yarn.sh
3. Resource Manager 상태 확인
아래 명령으로 Resource Manager의 상태를 확인합니다.
$ yarn rmadmin -getServiceState rm1
active
$ yarn rmadmin -getServiceState rm2
standby
4. Fail-over 테스트
4.1 Active Resource 종료
hadoop01 에서 아래 명령으로 Resource Manager 를 강제 종료 합니다.
$ jps
148195 Jps
144490 NameNode
145722 WebAppProxyServer
146696 ResourceManager
144750 JournalNode
144942 DFSZKFailoverController
$ kill -9 146696
4.2 Resource Manager 상태 확인
다음 명령으로 rm1 과 rm2 의 상태를 확인합니다.
$ yarn rmadmin -getServiceState rm1
2020-09-10 12:44:27,784 INFO ipc.Client: Retrying connect to server: hadoop01/192.168.35.81:8033. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=1, sleepTime=1000 MILLISECONDS)
Operation failed: Call From hadoop01/192.168.35.81 to hadoop01:8033 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
$ yarn rmadmin -getServiceState rm2
active
위와 같이 rm1 에서는 실패하고 rm2에서는 active 로 표시되면 정상입니다.
4.2 Job 실행
다음 명령으로 Sample Job 을 실행해 봅니다.
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar pi 16 1000
정상적으로 실행이 되면 Fail-over 가 성공한 겁니다.