Hadoop HDFS 데이터노드¶
HDFS 데이터노드 지표 정보를 수집합니다.
설치 및 배포¶
DataNode는 Java로 개발되어 있으므로, jmx-exporter 방식으로 지표 정보를 수집할 수 있습니다.
1. DataNode 설정¶
1.1 jmx-exporter 다운로드¶
다운로드 주소: https://github.com/prometheus/jmx_exporter
1.2 jmx 스크립트 다운로드¶
다운로드 주소: https://github.com/lrwh/jmx-exporter/blob/main/hadoop-hdfs-datanode.yml
1.3 DataNode 시작 파라미터 조정¶
DataNode의 시작 파라미터에 다음을 추가합니다.
{{JAVA_GC_ARGS}} -javaagent:/opt/jmx/jmx_exporter-1.0.1.jar=localhost:17106:/opt/jmx/hadoop-hdfs-datanode.yml
1.4 DataNode 재시작¶
2. DataKit 수집기 설정¶
2.1 DataKit 설치¶
2.2 수집기 설정¶
jmx-exporter를 통해 metrics URL을 직접 노출할 수 있으므로, prom 수집기로 바로 수집할 수 있습니다.
DataKit 설치 디렉터리의 conf.d/samples로 이동한 뒤 prom.conf.sample을 datanode.conf로 복사합니다.
cp prom.conf.sample datanode.conf
datanode.conf 내용을 다음과 같이 조정합니다.
urls = ["http://localhost:17106/metrics"]
source ="hdfs-datanode"
[inputs.prom.tags]
component = "hdfs-datanode"
interval = "10s"
다른 설정은 필요에 따라 조정하세요
, 파라미터 설명은 다음과 같습니다.
- urls:
jmx-exporter지표 주소이며, 여기에는 해당 구성 요소가 노출한 지표 URL을 입력합니다 - source: 수집기 별칭이며, 구분할 수 있도록 사용하는 것을 권장합니다
- keep_exist_metric_name: 지표 이름 유지
- interval: 수집 간격
- inputs.prom.tags: 추가 tag 지정
3. DataKit 재시작¶
지표¶
Hadoop 지표 집합¶
DataNode 지표는 Hadoop 지표 집합에 있으며, 여기서는 주로 DataNode 관련 지표를 설명합니다.
| Metrics | 설명 | 단위 |
|---|---|---|
datanode_block_verification_failures |
데이터노드 블록 검증 실패 횟수 |
count |
datanode_blocks_cached |
데이터노드가 캐시한 블록 수 |
count |
datanode_blocks_read |
데이터노드가 읽은 블록 수 |
count |
datanode_blocks_removed |
데이터노드가 제거한 블록 수 |
count |
datanode_blocks_replicated |
데이터노드가 복제한 블록 수 |
count |
datanode_blocks_uncached |
데이터노드의 캐시 해제된 블록 수 |
count |
datanode_blocks_verified |
데이터노드가 검증한 블록 수 |
count |
datanode_blocks_written |
데이터노드가 기록한 블록 수 |
count |
datanode_bytes_read |
데이터노드가 읽은 바이트 수 |
byte |
datanode_bytes_written |
데이터노드가 기록한 바이트 수 |
byte |
datanode_cache_capacity |
데이터노드 캐시 용량 |
byte |
datanode_cache_reports_avg_time |
데이터노드 캐시 보고 평균 시간 |
ms |
datanode_cache_reports_num_ops |
데이터노드 캐시 보고 작업 횟수 |
count |
datanode_cache_used |
데이터노드가 사용한 캐시 용량 |
byte |
datanode_capacity |
데이터노드 용량 |
count |
datanode_data_node_active_xceivers_count |
데이터노드 활성 수신기 수 |
count |
datanode_datanode_network_errors |
데이터노드 네트워크 오류 횟수 |
count |
datanode_dfs_used |
데이터노드가 사용한 DFS 공간 |
btye |
datanode_dropped_pub_all |
데이터노드에서 누락된 전체 발행 메시지 수 |
count |
datanode_estimated_capacity_lost |
데이터노드의 추정 손실 용량 |
byte |
datanode_flush_io_rate_avg_time |
데이터노드 플러시 I/O 평균 속도 시간 |
ms |
datanode_flush_io_rate_num_ops |
데이터노드 플러시 I/O 작업 횟수 |
count |
datanode_flush_nanos_avg_time |
데이터노드 플러시 작업 평균 소요 시간(나노초) |
ns |
datanode_flush_nanos_num_ops |
데이터노드 플러시 작업 횟수 |
count |
datanode_fsync_count |
데이터노드 fsync 작업 횟수 |
count |
datanode_heartbeats_avg_time |
데이터노드 하트비트 평균 시간 |
ms |
datanode_heartbeats_num_ops |
데이터노드 하트비트 작업 횟수 |
count |
datanode_heartbeats_total_avg_time |
데이터노드 전체 하트비트 평균 시간 |
ms |
datanode_heartbeats_total_num_ops |
데이터노드 전체 하트비트 작업 횟수 |
count |
datanode_incremental_block_reports_avg_time |
데이터노드 증분 블록 보고 평균 시간 |
ms |
datanode_incremental_block_reports_num_ops |
데이터노드 증분 블록 보고 작업 횟수 |
count |
datanode_lifelines_avg_time |
데이터노드 생명선 평균 시간 |
ms |
datanode_lifelines_num_ops |
데이터노드 생명선 작업 횟수 |
count |
datanode_metadata_operation_rate_avg_time |
데이터노드 메타데이터 작업 평균 속도 시간 |
ms |
datanode_metadata_operation_rate_num_ops |
데이터노드 메타데이터 작업 횟수 |
count |
datanode_num_active_sinks |
데이터노드 활성 싱크 수 |
count |
datanode_num_active_sources |
데이터노드 활성 소스 수 |
count |
datanode_num_all_sinks |
데이터노드 전체 싱크 수 |
count |
datanode_num_all_sources |
데이터노드 전체 소스 수 |
count |
datanode_num_blocks_cached |
데이터노드가 캐시한 블록 수 |
count |
datanode_num_blocks_failed_to_cache |
데이터노드의 캐시 실패 블록 수 |
count |
datanode_num_blocks_failed_to_un_cache |
데이터노드의 캐시 해제 실패 블록 수 |
count |
datanode_num_blocks_failed_to_uncache |
데이터노드의 캐시 해제 실패 블록 수 |
count |
datanode_num_failed_volumes |
데이터노드 실패 볼륨 수 |
count |
datanode_publish_avg_time |
데이터노드 발행 평균 시간 |
ms |
datanode_publish_num_ops |
데이터노드 발행 작업 횟수 |
count |
datanode_ram_disk_blocks_deleted_before_lazy_persisted |
데이터노드 지연 지속화 전에 삭제된 RAM 디스크 블록 수 |
count |
datanode_ram_disk_blocks_evicted |
데이터노드에서 축출된 RAM 디스크 블록 수 |
count |
datanode_ram_disk_blocks_read_hits |
데이터노드 RAM 디스크 블록 읽기 적중 횟수 |
count |
datanode_ram_disk_blocks_write |
데이터노드 RAM 디스크 블록 쓰기 횟수 |
count |
datanode_ram_disk_bytes_write |
데이터노드 RAM 디스크 쓰기 바이트 수 |
byte |
datanode_read_block_op_avg_time |
데이터노드 블록 읽기 작업 평균 시간 |
ms |
datanode_read_block_op_num_ops |
데이터노드 블록 읽기 작업 횟수 |
count |
datanode_read_io_rate_avg_time |
데이터노드 읽기 I/O 평균 속도 시간 |
ms |
datanode_read_io_rate_num_ops |
데이터노드 읽기 I/O 작업 횟수 |
count |
datanode_reads_from_local_client |
데이터노드의 로컬 클라이언트 읽기 횟수 |
count |
datanode_reads_from_remote_client |
데이터노드의 원격 클라이언트 읽기 횟수 |
count |
datanode_remaining |
데이터노드 남은 공간 |
byte |
datanode_remote_bytes_read |
데이터노드 원격 읽기 바이트 수 |
byte |
datanode_remote_bytes_written |
데이터노드 원격 기록 바이트 수 |
byte |
datanode_replace_block_op_avg_time |
데이터노드 블록 교체 작업 평균 시간 |
ms |
datanode_replace_block_op_num_ops |
데이터노드 블록 교체 작업 횟수 |
count |
datanode_send_data_packet_blocked_on_network_nanos_avg_time |
데이터노드 데이터 패킷 전송 시 네트워크 차단 평균 소요 시간(나노초) |
ns |
datanode_send_data_packet_blocked_on_network_nanos_num_ops |
데이터노드 데이터 패킷 전송 시 네트워크 차단 작업 횟수 |
count |
datanode_send_data_packet_transfer_nanos_avg_time |
데이터노드 데이터 패킷 전송 평균 소요 시간(나노초) |
ns |
datanode_send_data_packet_transfer_nanos_num_ops |
데이터노드 데이터 패킷 전송 작업 횟수 |
count |
datanode_snapshot_avg_time |
데이터노드 스냅샷 평균 시간 |
ms |
datanode_snapshot_num_ops |
데이터노드 스냅샷 작업 횟수 |
count |
datanode_sync_io_rate_avg_time |
데이터노드 동기 I/O 평균 속도 시간 |
ms |
datanode_sync_io_rate_num_ops |
데이터노드 동기 I/O 작업 횟수 |
count |
datanode_total_data_file_ios |
데이터노드 총 데이터 파일 I/O 횟수 |
count |
datanode_total_file_io_errors |
데이터노드 총 파일 I/O 오류 횟수 |
count |
datanode_total_metadata_operations |
데이터노드 총 메타데이터 작업 횟수 |
count |
datanode_total_read_time |
데이터노드 총 읽기 시간 |
ms |
datanode_total_write_time |
데이터노드 총 기록 시간 |
ms |
datanode_volume_failures |
데이터노드 볼륨 실패 횟수 |
count |
datanode_write_block_op_avg_time |
데이터노드 블록 쓰기 작업 평균 시간 |
ms |
datanode_write_block_op_num_ops |
데이터노드 블록 쓰기 작업 횟수 |
count |
datanode_write_io_rate_avg_time |
데이터노드 쓰기 I/O 평균 속도 시간 |
ms |
datanode_write_io_rate_num_ops |
데이터노드 쓰기 I/O 작업 횟수 |
count |
datanode_writes_from_local_client |
데이터노드의 로컬 클라이언트 기록 횟수 |
count |
datanode_writes_from_remote_client |
데이터노드의 원격 클라이언트 기록 횟수 |
count |
datanode_xceiver_count |
데이터노드 수신기 수 |
count |
datanode_xmits_in_progress |
데이터노드에서 진행 중인 전송 수 |
count |