我是靠谱客的博主 温暖斑马,最近开发中收集的这篇文章主要介绍监控hadoop及其节点的两种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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及其节点的两种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部