하둡 강좌 13편: 하둡 클러스터 모니터링 및 관리
이번 강좌에서는 하둡 클러스터를 모니터링하고 관리하는 방법을 다루겠다.
대규모 데이터를 처리하는 시스템에서 문제를 신속하게 파악하고 대응하는 것은 매우 중요하며, 하둡은 이를 위해 다양한 모니터링 도구와 관리 기능을 제공한다.
1. 하둡 모니터링의 중요성
하둡 클러스터는 다수의 노드와 작업을 병렬로 처리하기 때문에 각 노드의 상태, 작업의 진행 상황, 자원 사용량 등을 실시간으로 모니터링하는 것이 중요하다.
모니터링을 통해 시스템 이상 징후를 사전에 파악하고, 성능 문제나 자원 부족 등을 방지할 수 있다.
2. 하둡 모니터링 도구
하둡은 자체적인 웹 UI와 함께 외부 모니터링 도구도 활용할 수 있다.
대표적인 도구들에는 ResourceManager, NameNode UI, Ganglia, Ambari 등이 있다.
2.1 하둡 자체 웹 UI
하둡은 기본적으로 웹 UI를 통해 클러스터 상태를 모니터링할 수 있는 기능을 제공한다.
각각의 웹 UI를 통해 노드 상태, 작업 상태, 데이터 블록 상태 등을 확인할 수 있다.
2.1.1 ResourceManager UI
- URL:
http://<ResourceManager_IP>:8088
- 기능: 클러스터 전체의 자원 사용량, 실행 중인 애플리케이션, 큐 상태 등을 확인할 수 있다.
- Applications: 실행 중인 맵리듀스 작업 목록을 확인하고 각 작업의 진행 상태를 모니터링할 수 있다.
- Nodes: 클러스터 내 각 노드의 메모리 및 CPU 사용량을 확인할 수 있다.
2.1.2 NameNode UI
- URL:
http://<NameNode_IP>:9870
- 기능: HDFS의 상태, 파일 시스템 상태, 블록 및 복제본 정보를 확인할 수 있다.
- Datanodes: 각 데이터 노드의 상태 및 저장된 블록 수, 사용 중인 디스크 용량 등을 모니터링할 수 있다.
- Namenode Logs: NameNode의 로그를 통해 시스템 에러와 경고 메시지를 확인할 수 있다.
2.2 외부 모니터링 도구
하둡은 외부 모니터링 도구와의 통합을 통해 더 정교한 모니터링 기능을 제공한다.
대표적인 도구로는 Ganglia와 Ambari가 있다.
2.2.1 Ganglia
Ganglia는 분산 시스템을 모니터링하기 위한 도구로, 하둡 클러스터에 적합하다.
Ganglia는 시스템 자원 사용량(메모리, CPU, 디스크 등)을 시각화하고, 클러스터 상태를 실시간으로 모니터링할 수 있다.
- 설치: Ganglia는 노드마다 설치해야 하며, 데이터를 수집하는 gmond와 데이터를 표시하는 gmetad로 구성된다.
- 기능: 실시간 클러스터 상태 시각화, 히스토리 데이터 제공, 알람 설정 기능.
2.2.2 Ambari
Ambari는 하둡 클러스터의 설정, 모니터링 및 관리 기능을 제공하는 종합적인 관리 도구이다.
Ambari는 클러스터 노드 추가/제거, 자원 모니터링, 서비스 관리, 보안 설정 등을 한곳에서 관리할 수 있는 웹 UI를 제공한다.
- 설치: Ambari 서버를 설치하고, 각 하둡 노드에 Ambari 에이전트를 설치해야 한다.
- 기능: 하둡 클러스터 구성 관리, 실시간 모니터링, 사용자 및 역할 관리, 보안 설정.
3. 하둡 클러스터 로그 분석
하둡에서 발생하는 문제를 해결하기 위해서는 각 노드 및 작업의 로그를 분석하는 것이 중요하다.
하둡은 노드별, 작업별 로그를 남기므로 이를 통해 에러 원인을 파악할 수 있다.
3.1 NameNode 로그
NameNode 로그는 HDFS 관련 문제를 진단할 때 중요한 정보다.
주로 파일 시스템의 상태, 블록 복제본, 데이터 노드의 상태 등을 확인할 수 있다.
- 로그 경로:
/var/log/hadoop-hdfs/hadoop-hdfs-namenode-<hostname>.log
3.2 DataNode 로그
DataNode 로그는 데이터 노드의 상태를 확인하고, 블록 저장, 전송, 복제 과정에서 발생한 문제를 분석할 때 사용된다.
- 로그 경로:
/var/log/hadoop-hdfs/hadoop-hdfs-datanode-<hostname>.log
3.3 ResourceManager 로그
ResourceManager 로그는 YARN 클러스터에서 발생하는 자원 할당 문제를 진단할 수 있다.
맵리듀스 작업의 상태, 노드 상태 등을 확인할 수 있다.
- 로그 경로:
/var/log/hadoop-yarn/yarn-yarn-resourcemanager-<hostname>.log
3.4 NodeManager 로그
NodeManager 로그는 클러스터 각 노드에서 실행되는 YARN 작업의 상태를 확인할 수 있다.
작업 실패 원인이나 메모리 부족 등의 문제를 파악할 수 있다.
- 로그 경로:
/var/log/hadoop-yarn/yarn-yarn-nodemanager-<hostname>.log
4. 하둡 클러스터 관리
하둡 클러스터는 지속적으로 관리되고 유지보수되어야 한다.
자원 할당 조정, 노드 추가/삭제, 데이터 백업 및 복구 등의 관리 작업을 효율적으로 수행해야 한다.
4.1 노드 추가 및 제거
하둡 클러스터는 동적으로 노드를 추가하거나 제거할 수 있다.
새로운 데이터 노드를 추가하면 클러스터의 저장 용량과 처리 능력을 확장할 수 있다.
노드를 제거할 때는 해당 노드에 있는 데이터를 다른 노드로 복제한 후 안전하게 제거해야 한다.
4.1.1 노드 추가
- 새로운 노드에 하둡을 설치한다.
- hdfs-site.xml과 yarn-site.xml을 기존 클러스터와 동일하게 설정한다.
- 새로운 노드를 slaves 파일에 추가한다.
- NameNode에서
hadoop dfsadmin -refreshNodes
명령을 실행하여 노드 변경 사항을 적용한다.
4.1.2 노드 제거
- 제거할 노드를 slaves 파일에서 삭제한다.
- NameNode에서
hadoop dfsadmin -refreshNodes
명령을 실행한다. - 제거할 노드의 데이터를 다른 노드로 복제한 후 안전하게 종료한다.
4.2 하둡 버전 업데이트
하둡 클러스터를 안정적으로 운영하기 위해서는 주기적인 버전 업데이트가 필요하다.
업데이트 시 주의할 점은 데이터 손실 없이 서비스 중단 시간을 최소화하는 것이다.
- 업데이트 순서:
- 업데이트 전 클러스터의 모든 작업을 완료하거나 중지한다.
- 하둡 설정 파일을 백업한다.
- 새로운 하둡 버전을 설치하고 설정 파일을 기존과 동일하게 설정한다.
- NameNode와 DataNode를 순차적으로 재시작하여 클러스터를 정상화한다.
5. 실습: 하둡 모니터링 및 관리
5.1 ResourceManager UI를 통한 애플리케이션 모니터링
- ResourceManager 웹 UI에 접속하여 실행 중인 애플리케이션을 확인한다.
- 각 애플리케이션의 상태와 자원 사용량을 분석하여 병목 구간을 파악한다.
5.2 로그 파일을 통해 에러 분석
- NameNode 및 DataNode 로그를 확인하여 블록 복제본 문제나 네트워크 오류를 파악한다.
- ResourceManager와 NodeManager 로그를 분석하여 YARN 작업에서 발생한 문제를 해결한다.
6. 마무리
이상으로 하둡 강좌를 마치겠다.