目的:增加性能
原因:同机架io快。可以两个块部署统一机架的不同机器。
前提是集群搭建开启成功
1.查看机架感知:
hdfs dfsadmin -printTopology
2. 增加机架感知(一下都是在master(NameNode)上操作)
a.修改core-site.xml,将下面内容添加进去
<property>
<name>topology.script.file.name</name>
<value>/develop/hadoop/hadoop-2.7.5/etc/hadoop/rackaware/rackaware.sh</value>
</property>
/develop/hadoop/hadoop-2.7.5/etc/hadoop/rackaware/rackaware.sh:表示编写脚本的地址
b.编写脚本--rackaware.sh
---注意修改脚本权限
chmod a+x filename
#!bin/sh
while [ $# -gt 0 ] ; do
nodeArg=$1
exec< /develop/hadoop/hadoop-2.7.5/etc/hadoop/rackaware/topology.data
result=""
while read line ; do
ar=( $line )
if [ "${ar[0]}" = "$nodeArg" ] ; then
result="${ar[1]}"
fi
done
shift
if [ -z "$result" ] ; then
echo -n "/default/rack "
else
echo -n "$result "
fi
done
/develop/hadoop/hadoop-2.7.5/etc/hadoop/rackaware/topology.data脚本中的这个表示填写的topology.data文件的地址
------解读rackaware.sh脚本文件
将输入的参数跟topology.data(类似于map)中的IP(key)比较看看有没有与之对应的机架名(value)
如果有将输出机架名,如果没有与之对应的则是/default/rack
c.编写配置文件--topology.data
192.168.28.10 /dc1/rack1
192.168.228.11 /dc1/rack2
192.168.228.12 /dc1/rack2
前面表示集群中的ip 后面表示IP所对应的机架名(这之间有空格)
测试脚本:./rackaware ip(192.168.228.10)
最终测试:
hdfs dfsadmin -printTopology
--那么恭喜你机架感知添加成功