HadoopはRackawarenessを実現

1266 ワード

スクリプトを使用してHadoop 2.6 RackAwarenessを実装するには
 
etc/hadoop/core-site.xmlに次の内容を追加します.
<property>
    <name>net.topology.script.file.name</name>
    <value>/usr/local/hadoop/bin/rackawareness.sh</value>
  </property>

/usr/l/ocal/hadoop/bin/rackawareness.shの内容は以下の通りである.
HADOOP_CONF=/usr/local/hadoop/etc/hadoop

while [ $# -gt 0 ] ; do
  nodeArg=$1
  exec< ${HADOOP_CONF}/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 

/usr/local/hadoop/etc/hadoop/topology.dataの内容は以下の通りです.
10.142.164.18    /dn1/rack1 10.142.164.20    /dn1/rack1 10.142.164.21    /dn1/rack2 10.142.164.22    /dn1/rack2 10.142.164.23    /dn2/rack1 10.142.164.25    /dn2/rack1 10.142.164.27    /dn2/rack2 10.142.164.29    /dn2/rack2 10.142.164.30    /dn2/rack3 10.142.164.31    /dn2/rack
namenodeとdatanodeを再起動した後、
 hadoop dfsadmin -report
は、各ノードが存在するRackを表示することができる.