vSphere Big Data Extentions(BDE)の

Hadoop クラスタで Elastic Scaling を有効化してみました。


これまでの話は・・・

vSphere BDE で Elastic Scaling してみる。第1回

vSphere BDE で Elastic Scaling してみる。第2回(Compute-only Hadoop Cluster)

 

Elastic Scaling により、 BDE で構築した Compute-only Hadoop Cluster の

スレーブノード数(MapReduce の TaskTracker)が自動増減します。

ここでの「Compute-only」とは MapReduce と HDFS のうち、

「MapResuce 部分だけ」のクラスタということです。

※HDFS などのデータ格納領域は別途用意する想定の構成です。


ちなみに Elastic Scaling の設定は、BDE で Hadoop クラスタを

停止→起動するたびに Manual に戻るようになっているようなので、

有効化する場合は Hadoop クラスタを起動するたびに再設定します。

 

 

Elastic Scaling の設定(Web Client + BDE プラグインの場合)

 

Elastic Scaling はデフォルトでは無効なので、Elasticity Mode は「Manual」です。

「1 ComputeMaster」で「DataMaster」がないことから、

Compute-olny のクラスタ(HDFS が含まれない)クラスタであることがわかります。

bde-elastic scaling-01.png


Elastic Scaling を設定するクラスタを右クリックして

「Set Elasticity Mode」を開きます。

bde-elastic scaling-02.png


Elasticity Mode で「Auto」を選択して、

スレーブノード(Compute nodes)の最大数、最小数を設定します。

bde-elastic scaling-03.png

 

Elastic Scaling が有効化され、Elasticity Mode は「Auto」になりました。

bde-elastic scaling-04.png

 

 

Elastic Scaling の設定(Serengeti CLI の場合)

 

BDE 管理サーバの Serengeti CLI からでも Elastic Scaling を有効化できます。

 

Serengeti CLI についてはこちらもどうぞ。

vSphere で Hadoop してみる。BDE 第6回(Serengeti CLI)

 

デフォルトだと、Elastic Scaling は無効(AUTO ELASTIC : Disable)です。

serengeti> cluster list --name mr_cluster01

  ============================================================================

 

  CLUSTER NAME              :  mr_cluster01

  AGENT VERSION             :  2.0.0

  DISTRO                    :  apache

  TOPOLOGY                  :  HVE

  AUTO ELASTIC              :  Disable

  MIN COMPUTE NODES NUM     :  Unset

  MAX COMPUTE NODES NUM     :  Unset

  IO SHARES                 :  NORMAL

  STATUS                    :  RUNNING

  EXTERNAL HDFS             :  hdfs://192.168.5.145:8020

 

  GROUP NAME     ROLES                                    INSTANCE  CPU  MEM(MB)  TYPE    SIZE(GB)

  ------------------------------------------------------------------------------------------------

  ComputeMaster  [hadoop_jobtracker]                      1         1    3748     SHARED  10

  Worker         [hadoop_tasktracker]                     3         1    3748     LOCAL   20

  Client         [hadoop_client, pig, hive, hive_server]  1         1    3748     SHARED  20

 

  ============================================================================

 

Elastic Scale を有効にしてみます。

Serengeti CLI の「cluster setParam ~」で設定します。

  • --elasticityMode AUTO → 「AUTO」だと自動スケールします。
  • --minComputeNodeNum 2 → スレーブノードの最小数です。
  • --maxComputeNodeNum 3 → スレーブノードの最大数です。

serengeti> cluster setParam --name mr_cluster01 --elasticityMode AUTO --minComputeNodeNum 2 --maxComputeNodeNum 3

cluster mr_cluster01 adjusted

 

有効化すると「AUTO ELASTIC : Enable」になります。

MIN COMPUTE NODES NUM と MAX COMPUTE NODES NUM も設定されました。

serengeti> cluster list --name mr_cluster01

  ============================================================================

 

  CLUSTER NAME              :  mr_cluster01

  AGENT VERSION             :  2.0.0

  DISTRO                    :  apache

  TOPOLOGY                  :  HVE

  AUTO ELASTIC              :  Enable

  MIN COMPUTE NODES NUM     :  2

  MAX COMPUTE NODES NUM     :  3

  IO SHARES                 :  NORMAL

  STATUS                    :  RUNNING

  EXTERNAL HDFS             :  hdfs://192.168.5.145:8020

 

  GROUP NAME     ROLES                                    INSTANCE  CPU  MEM(MB)  TYPE    SIZE(GB)

  ------------------------------------------------------------------------------------------------

  ComputeMaster  [hadoop_jobtracker]                      1         1    3748     SHARED  10

  Worker         [hadoop_tasktracker]                     3         1    3748     LOCAL   20

  Client         [hadoop_client, pig, hive, hive_server]  1         1    3748     SHARED  20

 

  ============================================================================

 

ちなみにこの機能は、デプロイ済みのスレーブ用 VM を 自動起動 / 自動停止します。

自動クローンでノード追加したりするような機能ではなく

maxComputeNodeNum を TaskTracker VM 数よりも多くしたりできません。

※今回のスレーブノードは 3 VM です。

serengeti> cluster setParam --name mr_cluster01 --elasticityMode AUTO --minComputeNodeNum 2 --maxComputeNodeNum 5

cluster mr_cluster01 setParam failed: Invalid value: maxComputeNodeNum=5. Value must be less than or equal to the number of compute-only nodes (3) and greater than or equal to minComputeNodeNum (2).

serengeti>

 

 

自動スケールイン / スケールアウトの様子

 

BDE の Elastic Scaling では、

自動スケールイン(ノード削除) / スケールアウト(ノード追加)は

クローン済みの VM を 停止 / 起動 することで実現されます。


たとえば、Hadoop クラスタではデフォルトでは

デフォルトではスレーブノード(Worker)がすべて起動されています。

bde-elastic scaling-05.png

 

Elastic Scaling を有効にすると

リソースに余裕がある状態では

自動的にスレーブノードが停止されます。(スケールイン)

bde-elastic scaling-06.png


リソースに余裕がなくなると

自動的にスレーブノードが起動され、クラスタに組み込まれます。(スケールアウト)

bde-elastic scaling-07.png


Web Clientの「ホストおよびクラスタ」のインベントリでも

「監視」→「タスク」タブで様子が見られます。

bde-elastic scaling-08.png


BDE 管理サーバのログファイル(/opt/serengeti/logs/serengeti.log)にも

スレーブノードの停止 / 起動 の様子が出力されます。


スレーブノードの停止

[2014-10-10T23:21:29.742+0000] INFO  pool-2-thread-5| com.vmware.bdd.service.event.VmEventManager: synced power state poweredOff on vm: null:VirtualMachine:vm-346

[2014-10-10T23:21:29.749+0000] INFO  pool-2-thread-5| com.vmware.bdd.service.event.VmEventManager: received vm Powered Off event for vm: mr_cluster01-Worker-2

 

スレーブノードの起動

[2014-10-10T16:19:58.269+0000] INFO  pool-2-thread-3| com.vmware.bdd.service.event.VmEventManager: synced power state poweredOn on vm: null:VirtualMachine:vm-347

[2014-10-10T16:19:58.275+0000] INFO  pool-2-thread-3| com.vmware.bdd.service.event.VmEventManager: received vm Powered On event for vm: mr_cluster01-Worker-1

 

マニュアルだと、下記のあたりです。

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

  > Managing Hadoop and HBase Clusters

About Resource Usage and Elastic Scaling

 

BDE については、こちらもどうぞ。

vSphere で Hadoop してみる。(Big Data Extentions) 第1回

vSphere BDE(Hadoop)と vSphere HA の関係について。

vSphere BDE の Hadoop 的なデータストア活用について。(Local / Shared)

vShere BDE の Hadoop 的なトポロジ認識について。(Rack awareness と HVE)

 

以上、BDE の Elastic Scaling についてでした。