Hadoop获取namenode的命令

在某些场景下,我们需要及时的得到Hadoop的当前的一些配置信息,例如namenode。

hadoop下的命令如下:

Hadoop获取namenode的命令_第1张图片

为了更好的在程序中使用,我们可以封装一个相应的方法:

#coding:utf-8
import os
import subprocess

def getNameNode():
    hadoopPath = os.environ["HADOOP_CONF_DIR"].replace("/etc/hadoop","")
    cmd = "%s/bin/hdfs getconf -namenodes"%(hadoopPath,)
    nameNode = ""

    try:
        subp = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
        nameNode = subp.stdout.readline()
        nameNode = nameNode.replace("\n","")
    except Exception,e:
        raise e

    return nameNode

if __name__ == '__main__':
    print getNameNode()


如果是用了Hadoop HA的话,可能是有多个namenode的(主namenode和standby namenode),此时的返回值是空格分隔的namenode,可以得到后用空格split一下然后再进行使用。

你可能感兴趣的:(Hadoop获取namenode的命令)