HadoopはRackawarenessを実現
1266 ワード
スクリプトを使用してHadoop 2.6 RackAwarenessを実装するには
etc/hadoop/core-site.xmlに次の内容を追加します.
/usr/l/ocal/hadoop/bin/rackawareness.shの内容は以下の通りである.
/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を再起動した後、
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を表示することができる.