今回は、このポストの続きです。
vShere BDE の Hadoop 的なトポロジ認識について。(Rack awareness と HVE)
VMware vSphere Big Data Extensions(BDE)の
トポロジ 認識の設定をしてみます。
Hadoop Virtualization Extensions(HVE)も設定してみます。
BDE をセットアップした直後の
Hadoop クラスタ作成(Create New Big Data Cluster)画面では、
NONE と HOST_AS_RACK のみが選択できます。
そして使用する Hadoop ディストリビューションで HVE が有効で、
BDE に topology 認識させるためのファイルをアップロードしておくと
RACK_AS_RACK と HVE も指定できるようになります。
BDE にトポロジ情報を登録する
BDE 2.0 にデフォルトで含まれるディストリビューションでも、
apache(Apache Hadoop 1.2)は HVE に対応していて、
BDE でも有効化(HVE = true)されています。
serengeti>distro list
NAME VENDOR VERSION HVE ROLES
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
apache Apache 1.2.1 true [hadoop_client, hadoop_datanode, hadoop_jobtracker, hadoop_namenode, hadoop_tasktracker, hbase_client, hbase_master, hbase_regionserver, hive, hive_server, pig, zookeeper]
bigtop BIGTOP 0.7.0 false [hadoop_client, hadoop_datanode, hadoop_journalnode, hadoop_namenode, hadoop_nodemanager, hadoop_resourcemanager, hbase_client, hbase_master, hbase_regionserver, hive, hive_server, pig, zookeeper]
そこで、BDE の管理サーバに serengeti CLI を使用して
ラックと ESXi のマッピングファイルをアップロードすると・・・
serengeti>topology list
serengeti> ★まだ BDE にはトポロジ登録されていない。
serengeti>! cat /home/serengeti/rack_esxi_map.txt
command is:cat /home/serengeti/rack_esxi_map.txt
rack01: hv55n1.vmad.local,hv55n2.vmad.local
rack02: hv55n3.vmad.local,hv55n4.vmad.local
serengeti>
serengeti>topology upload --fileName /home/serengeti/rack_esxi_map.txt
topology uploaded ★BDE にトポロジ登録した。
serengeti>topology list
RACK HOSTS
----------------------------------------------
rack01 [hv55n1.vmad.local, hv55n2.vmad.local]
rack02 [hv55n3.vmad.local, hv55n4.vmad.local]
serengeti>
RACK_AS_RACK と HVE も topology として選択できるようになります。
それぞれのトポロジについては、
マニュアルではこのあたりを参照してください。
VMware vSphere Big Data Extensions Administrator's and User's Guide
> Creating Hadoop and HBase Clusters
About Cluster Topology
BDE トポロジ指定と、Hadoop のトポロジ情報ファイル生成
まず、下記のように HOST_AS_RACK を選択した場合に
Hadoop ノードに作成されるトポロジ情報のファイルを見てみます。
トポロジ情報のファイルは、下記のようにHadoop ノードそれぞれに作成されます。
Hadoop ノードの VM(IP アドレス)が、「/<ESXi>」に紐付けられています。
[root@192 ~]# cat /etc/hadoop/conf/topology.data
192.168.5.123 /hv55n3.vmad.local
192.168.5.130 /hv55n3.vmad.local
192.168.5.129 /hv55n4.vmad.local
192.168.5.120 /hv55n1.vmad.local
192.168.5.121 /hv55n2.vmad.local
192.168.5.122 /hv55n4.vmad.local
このファイルは、下記のスクリプトでのトポロジ判断に使われるようです。
[root@192 ~]# cat /etc/hadoop/conf/topology.sh
#!/bin/bash
# this script is copied from http://wiki.apache.org/hadoop/topology_rack_awareness_scripts
HADOOP_CONF=/etc/hadoop/conf
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
たとえば、下記のような感じです。
[root@192 ~]# bash /etc/hadoop/conf/topology.sh 192.168.5.123
/hv55n3.vmad.local [root@192 ~]#
次に、下記のように RACK_AS_RACK を選択した場合を見てみます。
トポロジ情報のファイルでは、
Hadoop ノードの VM(IP アドレス)が、
「/<BDE の topology で定義したラック名>」に紐付けられています。
[root@192 ~]# cat /etc/hadoop/conf/topology.data
192.168.5.133 /rack01
192.168.5.131 /rack02
192.168.5.136 /rack02
192.168.5.132 /rack01
192.168.5.135 /rack02
192.168.5.134 /rack02
この場合は、下記のようにトポロジが判断されるのでしょう。
[root@192 ~]# bash /etc/hadoop/conf/topology.sh 192.168.5.133
/rack01 [root@192 ~]#
最後に、下記のように RACK_AS_RACK を選択した場合を見てみます。
トポロジ情報のファイルでは、
Hadoop ノードの VM(IP アドレス)が、
「/<BDE の topology で定義したラック名>/<ESXi>」に紐付けられています。
[root@192 ~]# cat /etc/hadoop/conf/topology.data
192.168.5.122 /rack01/hv55n1.vmad.local
192.168.5.127 /rack02/hv55n3.vmad.local
192.168.5.125 /rack02/hv55n4.vmad.local
192.168.5.121 /rack01/hv55n1.vmad.local
192.168.5.124 /rack02/hv55n3.vmad.local
192.168.5.126 /rack01/hv55n2.vmad.local
192.168.5.123 /rack02/hv55n4.vmad.local
192.168.5.120 /rack01/hv55n2.vmad.local
この場合は、下記のようにトポロジが判断されるのでしょう。
[root@192 ~]# bash /etc/hadoop/conf/topology.sh 192.168.5.122
/rack01/hv55n1.vmad.local [root@192 ~]#
ちなみに、
BDE で構成した Hadoop ノードの設定ファイル(core-site.xml)には
HVE を有効化する設定も含まれていました。
[root@192 ~]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- check for all settings at http://hadoop.apache.org/common/docs/stable/core-default.html -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.5.122:8020</value>
</property>
<!-- turn on Hadoop Rack Awareness -->
<property>
<name>topology.script.file.name</name>
<value>/etc/hadoop/conf/topology.sh</value>
<description>Topology scripts are used by hadoop to determine the rack location of nodes. This information is used by hadoop to replicate block data to redundant racks.</description>
</property>
<!-- settings for Hadoop Virtualization Extensions --> ★このあたりから
<property>
<name>net.topology.nodegroup.aware</name>
<value>true</value>
<description>By default, network topology is not aware of nodegroup layer.</description>
</property>
<property>
<name>net.topology.impl</name>
<value>org.apache.hadoop.net.NetworkTopologyWithNodeGroup</value>
<description>The default implementation of NetworkTopology which is classic three layer one.</description>
</property>
<property>
<name>dfs.block.replicator.classname</name>
<value>org.apache.hadoop.hdfs.server.namenode.BlockPlacementPolicyWithNodeGroup</value>
<description>The default implementation of BlockPlacementPolicy.</description>
</property>
<!-- properties specified by users -->
<!-- end -->
</configuration>
BDE については、こちらもどうぞ・・・
vSphere で Hadoop してみる。(Big Data Extentions) 第1回
vSphere BDE(Hadoop)と vSphere HA の関係について。
vSphere BDE の Hadoop 的なデータストア活用について。(Local / Shared)
以上、BDE のトポロジ認識についてでした。