机架感知是什么?
告诉hadoop集群中的服务器节点属于哪个机柜
实现
我的hadoop解压目录是 /export/servers/hadoop-2.6.0-cdh5.14.0
1.在hadoop解压目录下创建 vim RackAware.py 里面代码如下:
#!/usr/bin/python
#-*-coding:UTF-8 -*-
import sys
rack = {
"12.12.3.1":"SW6300-1",
"12.12.3.2":"SW6300-1",
"12.12.3.3":"SW6300-1",
"12.12.3.25":"SW6300-2",
"12.12.3.26":"SW6300-2",
"12.12.3.27":"SW6300-2",
"12.12.3.49":"SW6300-3",
"12.12.3.50":"SW6300-3",
"12.12.3.51":"SW6300-3",
"12.12.3.73":"SW6300-4",
"12.12.3.74":"SW6300-4",
"12.12.3.75":"SW6300-4",
}
if __name__=="__main__":
print "/" + rack.get(sys.argv[1],"SW6300-1-2")
2.添加完成保存退出
3.验证
python RackAware.py 节点IP地址
4 .编辑 core-site.xml 配置文件
<property>
<name>topology.script.file.name</name>
<value>/export/servers/hadoop-2.6.0-cdh5.14.0/hadoop/etc/hadoop/RackAware.py</value>
</property>
这样就是一个简单的机架感知