카테고리 없음

[네번째 이야기] Hadoop 장애 Test

CyberI 2017. 7. 14. 16:50

Hadoop Fault Tolerance Test

Hadoop HA 구성이 완료되고 장애발생에 따른 실제 동작을 확인하기 위해 Cluster 환경에서 NameNode와 임의의 DataNode 종료에 따른 결과를 확인하고자 합니다.

 

1. NameNode의 이중화 구성에 대한 장애 Test

Active NameNode에서 장애발생에 의한 시스템 종료시 Standby NameNode가 Active로 승격을 통해 지속적인 서비스가 가능한지 확인한다

1) Active NameNode와 Standby NameNode의 동작상태 확인

2) Active NameNode 프로세스 강제종료

3) Standby NameNode가 Active mode로의 전환 확인

4) 장애발생 NameNode의 재실행 및 정상동작 확인

 

1) Active NameNode와 Standby NameNode의 동작상태 확인

Hadoop UI를 통해 Active NameNode와 Standby NameNode의 설정과 동작 확인을 통해 HA구성이 정상적으로 이루어 졌음을 확인한다.

 

2) Active NameNode 프로세스 강제종료

프로세스의 장애를 가정하기 위해 Terminal을 통해 Active NameNode 프로세스를 강제 종료한다. 이후 jps 명령어를 통해 해당 프로세스의 종료여부를 확인하고, UI 접속을 통해 서비스가 종료되었음을 확인할 수 있다.

 

3) Standby NameNode가 Active mode로의 전환 확인

Active NameNode가 종료되면 DFSZKFailoverController에서 감지하고, Standby NameNode를 Active로 전환시키고, 종료된 Active NameNode를 클러스터에서 제거 후 Zookeeper에 정보를 갱신 함.

Standby Mode에서 Active Mode로 전환되면서 JournalNode의 edit log를 읽어와 fsImage의 갱신여부를 확인하고, Active NameNode로 동작

 

Hadoop HA를 위한 "hdfs-site.xml" 설정정보

 

 

4) 장애발생 NameNode의 재실행 및 정상동작 확인

이전에 종료했던 Active NameNode를 재실행하면, 최초 Active mode로 실행 후 Zookeeper의 정보를 통해 Active->Standby mode로 전환해서 동작한다.

 

 

 

 

2. DataNode 장애 Test

분산 서버환경에서 하나의 DataNode 종료에 대해 다른 Node들의 동작과정을 확인하고, 정상적인 서비스가 지속되는지 확인한다.

1) DataNode에 저장 되어있는 Data 조회 및 Download

2) 동작중인 DataNode 프로세스 강제 종료

3) 강제종료된 DataNode에 저장된 데이터에 대한 정상 서비스 확인

4) 장애발생 DataNode 재실행 및 정상동작 확인

 

1) DataNode에 저장 되어있는 Data 조회 및 Download

Hadoop UI를 통해 HDFS에 저장중인 File을 Download 한다. hdfs-site.xml 환경파일에 Replication 설정을 3으로 지정해서 하나의 파일에 대해 Avaiability에 DataNode가 3개임을 확인할 수 있다.

 

2) 동작중인 DataNode 프로세스 강제 종료

특정 DataNode를 통해 File를 Download 하는 중 해당 Node의 프로세스를 강제 종료한다. 

이런 경우 현재 Download 중인 세션이 종료되면서 Download가 중지되고, 종료된 DataNode에 대해 Last Contact 횟수가 지속적으로 증가함을 확인할 수 있다. Hadoop에서 DataNode의 연결이 끊어지면 즉시 Dead로 판단되지 않고 대략 5분 후 Dead로 판단해서 Cluster에서 빠지고, UI 화면에서 종료되었음을 확인할 수 있다.

 

3) 강제종료된 DataNode에 저장된 데이터에 대한 정상 서비스 확인

하나의 DataNode가 종료되고, Dead로 판단되면 해당 Node에 저장되어 있는 DataBlock에 대해 Replication Node에서 임의의 다른 DataNode로 복제가 이루어 지고, 이를 통해 Replication 설정 수 만큼의 DataBlock을 유지한다.

따라서 UI 화면에서 Download가 중지되었던 File에 대해 Avaiability에 3개의 DataNode를 유지할 수 있게 된다.

 

4) 장애발생 DataNode 재실행 및 정상동작 확인

종료되었던 DataNode의 재기동으로 Cluster에 Node가 추가되면 해당 Node에 저장된 DataBlock의 전체 Replication 수가 환경변수로 설정한 수보다 많아진다. 이에대해 HDFS에서는 동일한 DataBlock을 저장하고 있는 DataNode에서 임의의 Node를 선택해 해당 DataBlock을 InvalidDataBlock으로 지정하고, 이어서 데이터를 삭제한다.

이를 통해 전체 DataNode에서 DataBlock들의 Replication 수가 일정하게 유지되지만, 장애조치에 따라 DataBlock을 저장하고 있는 DataNode는 변경될 수 있음을 확인할 수 있다.

 

 

지금까지 Hadoop의 HDFS에 대한 설치와 HA에 대해 확인해 보았습니다.

Hadoop 1.X에 비해 HA 구성으로 기존 NameNode에 대한 SOF가 해결되면서 장애에 대한 안정성이 높아졌음을 알 수 있었고, DataBlock에 Replication 수를 유지하기 위한 동작과정을 이해할 수 있었습니다.

 

시리즈 내용은 아래 링크를 통해 확인해주세요.

 

[첫번째 이야기] 빅데이터란?

[두번째 이야기] 데이터 분산처리 시스템, Hadoop

[세번째 이야기] Hadoop Cluster 설치하기