今回は、このポストの続きです。

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-topology-conig-01.png


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 として選択できるようになります。

bde-topology-conig-02.png

 

それぞれのトポロジについては、

マニュアルではこのあたりを参照してください。

VMware vSphere Big Data Extensions Administrator's and User's Guide

  > Creating Hadoop and HBase Clusters

About Cluster Topology

http://pubs.vmware.com/bde-2/index.jsp#com.vmware.bigdataextensions.admin.doc/GUID-C2A2E573-5BD7-4BEC-9F72-5F161A8BDFC6.html

 


BDE トポロジ指定と、Hadoop のトポロジ情報ファイル生成

 

まず、下記のように HOST_AS_RACK を選択した場合に

Hadoop ノードに作成されるトポロジ情報のファイルを見てみます。

bde-topology-conig-03.png

 

トポロジ情報のファイルは、下記のように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 を選択した場合を見てみます。

bde-topology-conig-04.png

 

トポロジ情報のファイルでは、

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 を選択した場合を見てみます。

bde-topology-conig-05.png

 

トポロジ情報のファイルでは、

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 のトポロジ認識についてでした。