在某些场景下,我们需要及时的得到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一下然后再进行使用。