本篇文章接着上篇内容继续,地址:IDC集群相关指标获取
在获取了对应的IDC机器自身的指标之后,还需要对Hadoop集群中HDFS和YARN的指标进行采集,大体思路上可以有2种:
- 第一种当然还是可以延用CM API去获取,因为CM中的tssql提供了非常丰富的各种指标监控
- 第二种即通过jmxJ去获取数据,其实就是通过访问上述这些相关的URL,然后将得到的json进行解析,从而获取到我们需要的数据,最终将这些数据归并到一起,定时的去执行采集操作
在实际的实践过程当中使用jmx这种方式去进行获取,涉及到的url请求如下:
http://localhost:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo
http://localhost:50070/jmx?qry=Hadoop:service=NameNode,name=FSNamesystemState
具体的代码实现思路如下:
- 首先需要有个httpclient,去向server发起请求,从而获得对应的json数据,这里自己编写了StatefulHttpClient
- 其次使用JsonUtil该工具类,用于Json类型的数据与对象之间的转换
- 当然,我们也需要将所需要获取的监控指标给梳理出来,编写我们的entity,这里以HDFS为例,主要为HdfsSummary和DataNodeInfo
本案例的代码在github上,地址:Hadoop monitor
这里主要展示核心的代码:
MonitorMetrics.java:
public class MonitorMetrics {
// beans为通过jmx所返回的json串中最起始的key
// 结构为{"beans":[{"":"","":"",...}]}
List<Map<String, Object>> beans = new ArrayList<>();
public List<Map<String, Object>> getBeans() {
return beans;
}
public void setBeans(L

本文介绍通过jmx方式从Hadoop集群收集HDFS和YARN监控指标的方法,包括使用自定义StatefulHttpClient发送HTTP请求获取JSON数据,利用JsonUtil进行数据转换,以及编写HdfsSummary和DataNodeInfo实体来组织监控数据。
最低0.47元/天 解锁文章
1438

被折叠的 条评论
为什么被折叠?



