1. 程式人生 > >Hadoop獲取namenode的命令

Hadoop獲取namenode的命令

在某些場景下,我們需要及時的得到Hadoop的當前的一些配置資訊,例如namenode。

hadoop下的命令如下:


為了更好的在程式中使用,我們可以封裝一個相應的方法:

#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一下然後再進行使用。