如何判断Hadoop Namenode状态

主要借助Hadoop JMX 提供的API信息获取信息来判断Namenode的状态,一般使用类似语句

http://namenode.abc.com:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus

其返回信息如下:

{
  "beans" : [ {
    "name" : "Hadoop:service=NameNode,name=NameNodeStatus",
    "modelerType" : "org.apache.hadoop.hdfs.server.namenode.NameNode",
    "State" : "active",
    "SecurityEnabled" : false,
    "NNRole" : "NameNode",
    "HostAndPort" : "vm-9-51-centos:8020",
    "LastHATransitionTime" : 1531130404392
  } ]
}

可以借助Python代码解析返回信息中的State字段信息,如果为active,就表示为活跃状态,反之则不是,其Python代码的实现可以参考如下

#!/usr/bin/env python
import urllib, json, sys
 
def get_namenode_status(hostname):
    jmxport = 50070
    url = "http://{0}:{1}/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus".format(hostname, jmxport)
    try:
        response = urllib.urlopen(url)
        jsonString = json.load(response)
        nnstatus = jsonString.get('beans', [{}])[0].get('State', '')
        if 'active' == nnstatus:
            return 'active'
        elif 'standby' == nnstatus:
            return 'standby'
        else:
            return
    except:
        return

JMX除了提供namenode状态判断的接口,还有其他信息,详情可见:https://cwiki.apache.org/confluence/display/EAG/Hadoop+JMX+Monitoring+and+Alerting

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值