概述
Hadoop本身自带的HDFS和JobTracker监控页面是最好用的监控页面,简单明了。但是现在想要自己开发一套监控系统,那该怎样去获取Hadoop集群的当前状况呢?
网页抓取
首先,想到的办法是抓取网页,通过抓取50030和50070页面获得监控的数据。不得不说,这个办法实在是太土了,不到万不得已真的不好意思用。脚本如下:
[root@localhost libexec]# cat check_hadoop_dfs.py
'''
Created on 20131101
@author: yangyang.feng
'''
#!/usr/bin/env python
import commands
import sys
from optparse import OptionParser
import urllib
import re
def get_dfs_free_percent():
urlItem = urllib.urlopen("http://192.168.20.201:50070/dfshealth.jsp")
html = urlItem.read()
urlItem.close()
return float(re.findall('.+<td id="col1"> DFS Remaining%<td id="col2"> :<td id="col3">\s+(.+)%<tr class="rowNormal">.+', html)[0])
if __name__ == '__main__':
parser = OptionParser(usage="%prog [-w] [-c]", version="%prog 1.0")
parser.add_option("-w", "--warning", type="int", dest="w", default=30, help="total dfs used percent")
parser.add_option("-c", "--critical", type="int", dest="c", default=20, help="total dfs used percent")
Hadoop JMX 接口
经过各种查阅,看到了一位大神写的文档(链接:http://slaytanic.blog.51cto.com/2057708/1179108),再次再膜拜一下这位大神吧。将http://namenode:50070/dfshealth.jsp 替换为 http://namenode:50070/jmx 就可以看到Hadoop自带的JMX接口所返回的JSON格式的数据,信息非常全面。同时,可以在链接的后面,添加参数来获取指定名称的监控信息,例如访问 http://namenode:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo 就可以只获取NameNodeInfo的信息,通过更改qry=后面的参数,可以指定想要获取的内容,qry参数的值即为json信息中name所对应的内容。
通过同样的方法,可以获得:
JobTracker的信息:http://namenode:50030/jmx
DataNode的信息:http://datanode:50075/jmx
TaskTracker信息:http://datanode:50060/jmx
最后
以上就是温暖斑马为你收集整理的监控hadoop及其节点的两种方法的全部内容,希望文章能够帮你解决监控hadoop及其节点的两种方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复