Taaewoo
Data Engineering Blog
Taaewoo
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • Computer Science (16)
      • Algorithm (6)
      • OS (1)
      • Java (2)
      • C++ (6)
      • Python (1)
    • Hadoop Ecosystem (27)
      • Hadoop (6)
      • Spark (5)
      • NiFi (6)
      • Hive (9)
      • Kafka (1)
    • BigData Engineering (14)
      • Jupyter (1)
      • Docker (3)
      • CDH (3)
      • Riot Data Pipeline (7)
    • Back-end 개발 (0)
      • Spring (0)
    • Algorithm 문제 풀이 (9)
      • 백준 (5)
      • LeetCode (4)
    • Conference (1)
      • LINE DEVELOPER DAY 2021 (1)
      • if(kakao) 2021 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • sort
  • BigData
  • 프로그래밍
  • kafka
  • hadoop
  • hdfs
  • CS
  • 빅데이터
  • 알고리즘
  • spark
  • 코딩
  • 정렬
  • docker
  • C++
  • Hive
  • NiFi
  • Coding
  • algorithm
  • metastore
  • java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Taaewoo

Data Engineering Blog

[HDFS] JMX Metrics 값 불러오기
Hadoop Ecosystem/Hadoop

[HDFS] JMX Metrics 값 불러오기

2023. 4. 2. 19:29

 Hadoop의 HDFS를 사용하다보면 현재 HDFS의 사용량을 여러가지 방법들로 확인합니다. 예를 들어 NameNode의 Web UI를 접속해 확인하거나 Ambari와 같은 배포판 관리 시스템에서도 쉽게 확인할 수 있습니다. 그런데 만약 모니터링 시스템을 직접 개발해서 사용한다면 코드 상에서 어떻게 HDFS의 정보를 가져올 수 있을까요? 이 방법에 대해 소개해드리겠습니다.

 

NameNode Web UI

 

 우리가 흔히 원하는 HDFS 정보들은 NameNode Web UI에서 모두 제공을 하고있습니다. 보통 NameNode의 50070 포트로 쉽게 접속할 수 있습니다. ( http://{NameNode}:50070 )

 

NameNode JMX

 

 위의 NameNode Web UI는 HDFS 정보들을 어디서 가져오는 것일까요? 구글링을 여러가지 키워드로 검색해봤지만 원하는 답을 알 수 없었습니다. 그래서 결국 NameNode Web 소스 코드를 확인해봤습니다. 

 

 위의 GUI에서 제가 원하는 정보인 "DFS Used"를 Hadoop Github에서 검색해 html 파일을 찾았습니다.

https://github.com/apache/hadoop

 

dfshealth.html

{#nn}
<table class="table table-bordered table-striped">
  <tr><th> Configured Capacity:</th><td>{Total|fmt_bytes}</td></tr>
  <tr><th> Configured Remote Capacity:</th><td>{ProvidedCapacity|fmt_bytes}</td></tr>
  <tr><th> DFS Used:</th><td>{Used|fmt_bytes} ({PercentUsed|fmt_percentage})</td></tr>
  <tr><th> Non DFS Used:</th><td>{NonDfsUsedSpace|fmt_bytes}</td></tr>
  <tr><th> DFS Remaining:</th><td>{Free|fmt_bytes} ({PercentRemaining|fmt_percentage})</td></tr>
  <tr><th> Block Pool Used:</th><td>{BlockPoolUsedSpace|fmt_bytes} ({PercentBlockPoolUsed|fmt_percentage})</td></tr>
  <tr><th> DataNodes usages% (Min/Median/Max/stdDev): </th>
	<td>{#NodeUsage.nodeUsage}{min} / {median} / {max} / {stdDev}{/NodeUsage.nodeUsage}</td></tr>
{/nn}

 

 dfshealth.html 파일에서 해당 값을 사용하는 것을 확인했습니다. 그리고 html 파일이 있는 경로에 비슷한 이름으로 dfshealth.js 파일을 발견했습니다. 그래서 dfshealth.js 파일을 확인한 결과 HDFS 정보를 가져오는 출처를 알 수 있어습니다.

 

dfshealth.js

 $.get(
      '/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo',
      guard_with_startup_progress(function (resp) {
        var data = workaround(resp.beans[0]);
        ....

 dfshealth.js에서 JMX 호출을 통해 NameNode의 metric 값을 가져오는 것을 확인할 수 있었습니다. 그래서 해당 주소로 제가 사용하는 NameNode에 접근해봤습니다. 결과는 원하는 정보를 문제없이 불러올 수 있었습니다. 

 

 

 위의 Metric에서 현재 HDFS의 전체 용량, 사용량, 사용률, node별 사용 현황 등 여러가지 값들을 받을 수 있습니다.

 

 NameNodeInfo라는 이름의 Metric 값을 불러왔는데 다른 Metric 값은 없을까하는 궁금증이 생겼습니다. 그래서 위의 주소 값에서 jmx만 남겨두고 확인을 해봤습니다.

 그 결과 HDFS의 여러 Metric 값들을 모두 확인할 수 있었습니다. 만약 웹이나 여러 프로그래밍 코드에서 해당 HDFS 정보를 이용하고 싶다면 JMX Metric 값들을 호출해서 HTTP response로 활용할 수 있을 것 같습니다.

저작자표시 비영리 (새창열림)

'Hadoop Ecosystem > Hadoop' 카테고리의 다른 글

[Hadoop] YARN Capacity scheduler 특징 및 Queue 옵션  (0) 2022.04.22
[Hadoop] HDFS NameNode의 Metadata 관리와 Failover 상세 과정  (0) 2022.02.15
[Hadoop] YARN - Yet Another Resource Negotiator  (0) 2021.06.12
[Hadoop] MapReduce - Simplified Data Processing on Large Clusters  (0) 2021.03.25
[Hadoop] HDFS - The Hadoop Distributed File System  (0) 2021.03.14
    'Hadoop Ecosystem/Hadoop' 카테고리의 다른 글
    • [Hadoop] YARN Capacity scheduler 특징 및 Queue 옵션
    • [Hadoop] HDFS NameNode의 Metadata 관리와 Failover 상세 과정
    • [Hadoop] YARN - Yet Another Resource Negotiator
    • [Hadoop] MapReduce - Simplified Data Processing on Large Clusters
    Taaewoo
    Taaewoo

    티스토리툴바