技巧Get:如何使用Hadoop API实现集群信息统计
更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud
适用于hadoop 2.7及以上版本)
涉及到RESTful API
ResourceManager REST API’s:
https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html
WebHDFS REST API:
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html
MapReduce History Server REST API’s:
https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/HistoryServerRest.html
Spark Monitoring and Instrumentation
http://spark.apache.org/docs/latest/monitoring.html
1. 统计HDFS文件系统实时使用情况
URL
http://emr-header-1:50070/webhdfs/v1/?user.name=hadoop&op=GETCONTENTSUMMARY
返回结果:
{"ContentSummary":
关于返回结果的说明:
{"name" : "ContentSummary","properties":
注意length与spaceConsumed的关系,跟hdfs副本数有关。
如果要统计各个组工作目录的使用情况,使用如下请求:
http://emr-header-1:50070/webhdfs/v1/user/feed_aliyun?user.name=hadoop&op=GETCONTENTSUMMARY
2. 查看集群的实时信息和状态
URL
http://emr-header-1:8088/ws/v1/cluster
返回结果
{ "clusterInfo": { "id": 1495123166259,
3. 查看资源队列的实时信息,包括队列的配额信息、资源使用实时情况
URL
http://emr-header-1:8088/ws/v1/cluster/scheduler
返回结果
{ "scheduler": { "schedulerInfo": { "type": "capacityScheduler",
具体参数说明参考: https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Application_Queue_API
4. 查看实时的作业列表,列表信息中也包含了作业运行的详情信息,包括作业名称、id、运行状态、起止时间,资源使用情况。
URL
http://emr-header-1:8088/ws/v1/cluster/apps
返回结果
{ "apps":
如果要统计固定时间段的,可以加上"?finishedTimeBegin={时间戳}&finishedTimeEnd={时间戳}"参数,例如 http://emr-header-1:8088/ws/v1/cluster/apps?finishedTimeBegin=1496742124000&finishedTimeEnd=1496742134000
5. 统计作业扫描的数据量情况
job扫描的数据量,需要通过History Server的RESTful API查询,MapReduce的和Spark的又有一些差异。
5.1 Mapreduce job扫描数据量
URL
http://emr-header-1:19888/ws/v1/history/mapreduce/jobs/job_1495123166259_0962/counters
返回结果
{ "jobCounters" : { "id" : "job_1326381300833_2_2", "counterGroup" : [
其中org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter里面的BYTES_READ为job扫描的数据量
具体参数:https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/HistoryServerRest.html#Job_Counters_API
5.2 Mapreduce job扫描数据量
URL
http://emr-header-1:18080/api/v1/applications/application_1495123166259_1050/executors
每个executor的totalInputBytes总和为整个job的数据扫描量。
更多参考:http://spark.apache.org/docs/latest/monitoring.html