Hadoop机架感知

目的:增加性能
原因:同机架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

--那么恭喜你机架感知添加成功

原文地址:https://www.cnblogs.com/pigdata/p/10305610.html