vSphere Big Data Extensions(BDE)では、
コマンドラインのツール(Serengeti CLI)から
Hadoop クラスタを自動構築することもできます。
今回は、Serengeti CLI の「cluster create ~」で作成したクラスタが
ほとんどデフォルトの状態でどのような構成になるのか見てみようと思います。
Serengeti-CLI については、こちらもどうぞ。
vSphere で Hadoop してみる。BDE 第6回(Serengeti CLI)
Serengeti CLI での Hadoop クラスタ作成
まず、serengeti で、BDE の管理サーバに接続します。
BDE の管理サーバ(management-server VM)に SSH でログインして、
そこから Serengeti CLI を起動します。
[serengeti@192 ~]$ serengeti
=================================================
* _____ _ _ *
* / ____| ___ _ __ ___ _ __ __ _ ___| |_(_) *
* \____ \ / _ \ '__/ _ \ '_ \ / _` |/ _ \ __| | *
* ____) | __/ | | __/ | | | (_| | __/ |_| | *
* |_____/ \___|_| \___|_| |_|\__, |\___|\__|_| *
* |___/ *
* *
=================================================
Version: 2.0.0
Welcome to Serengeti CLI
serengeti>connect --host localhost:8443
Enter the username: vmad\administrator ★vCenterSSO 認証できるユーザでログイン。
Enter the password: **********
Connected
serengeti>
BDE には、ディストリビューションを追加していないので、
デフォルトの「apache」(Apache Hadoop 1.2.1)が使われます。
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]
vCenter で既にリソースプールが作成してあり、
BDE 側では「auto--~」という名前で自動認識されています。
今回は「hdp_pool01」というリソースプールに Hadoop クラスタを作成しようと思うので、
「auto--4278031577701708056」を create コマンドに指定します。
serengeti>resourcepool list
NAME PATH
----------------------------------------------------------
defaultRP cluster01_mgmt/
auto--4278031577701708056 cluster02/hdp_pool01
auto--6950730206449699834 cluster02/sv-pool01
Hadoop クラスタで使用するつもりの データストアも、BDE に登録してあります。
※これらは、以前に手動登録しました。
serengeti>datastore list
NAME TYPE REG EX
----------------------------------
defaultDSLocal LOCAL FALSE
ds_local_hadoop_01 LOCAL FALSE
ds_local_hadoop_02 LOCAL FALSE
ds_local_hadoop_03 LOCAL FALSE
ds_local_hadoop_04 LOCAL FALSE
ds_nfs_hadoop_01 SHARED FALSE
Hadoop クラスタのノードが接続するポートグループも、BDE に登録してあります。
※これも、以前に手動登録しました。
今回は、vCenter の「dvpg-vlan-0005」というポートグループを使用するつもりなので
コマンドでは、BDE に登録する時につけた「bde-vlan-0005」という名前を指定します。
serengeti>network list
NAME PORTGROUP TYPE IP_RANGES DNS1 DNS2 GATEWAY MASK
--------------------------------------------------------------------------
defaultNetwork pg-vlan-0005 dhcp
bde-vlan-0005 dvpg-vlan-0005 dhcp
それでは、Hadoop クラスタ作成コマンドを実行してみます。
今回指定したパラメータは、下記の3つだけです。
- --name → 新規作成する Hadoop クラスタの名前
- --rpNames → Hadoop クラスタを作成するリソースプール
- --networkName → クラスタノードが利用する、BDEポートグループ
serengeti>cluster create --name hdp_cluster03 --rpNames auto--4278031577701708056 --networkName bde-vlan-0005
コマンドを実行すると、下記のような進捗表示になります。
STARTED 0%
node group: master, instance number: 0
roles:[hadoop_namenode, hadoop_jobtracker]
node group: worker, instance number: 0
roles:[hadoop_datanode, hadoop_tasktracker]
node group: client, instance number: 0
roles:[hadoop_client, pig, hive, hive_server]
ちなみに、Serengeti-CLI の「cluster create ~」では、
他にも下記のようなパラメータが指定できます。※下記以外にもいくつかあります。
- --type → Hadoop / HBase どちらのクラスタか
- --distro → Hadoop ディストリビューション
- --networkName → Hadoop クラスタで使用する NW(ポートグループ)を指定する。
- --hdfsNetworkName → HDFS の NW を分ける場合に指定する。
- --mapredNetworkName → MapReduce の NW を分ける場合に指定する。
- --topology → トポロジ。HOST_AS_RACK、HVE など
- --password → Hadoop ノードに設定するパスワード
- --specFile →クラスタ構成をファイルで指定することもできる。
詳しくは下記のあたりを参照・・・
VMware vSphere Big Data Extensions Command-Line Interface Guide
> Serengeti CLI Command Reference
> cluster Commands
クラスタ自動構築の様子
徐々にクラスタが構築されていきます。
STARTED 22%
node group: master, instance number: 1
roles:[hadoop_namenode, hadoop_jobtracker]
NAME IP STATUS TASK
-------------------------------------------------
hdp_cluster03-master-0 Not Exist Cloning VM
node group: worker, instance number: 3
roles:[hadoop_datanode, hadoop_tasktracker]
NAME IP STATUS TASK
---------------------------------------------------------
hdp_cluster03-worker-0 Not Exist Cloning VM
hdp_cluster03-worker-1 Not Exist Cloning VM
hdp_cluster03-worker-2 Powered Off Reconfiguring VM
node group: client, instance number: 1
roles:[hadoop_client, pig, hive, hive_server]
NAME IP STATUS TASK
---------------------------------------------------------
hdp_cluster03-client-0 Powered Off Reconfiguring VM
ジョジョにクラスタが構築されていきます。
この画面は Ctrl+C キーなどで抜けてしまっても、自動構築は止まらないようです。
STARTED 78%
node group: master, instance number: 1
roles:[hadoop_namenode, hadoop_jobtracker]
NAME IP STATUS TASK
-----------------------------------------------------------------
hdp_cluster03-master-0 192.168.5.138 VM Ready Bootstrapping VM
node group: worker, instance number: 3
roles:[hadoop_datanode, hadoop_tasktracker]
NAME IP STATUS TASK
--------------------------------------------------------------------------
hdp_cluster03-worker-0 192.168.5.129 VM Ready Formatting data disks
hdp_cluster03-worker-1 192.168.5.128 VM Ready Installing package hadoop
hdp_cluster03-worker-2 192.168.5.137 VM Ready Formatting data disks
node group: client, instance number: 1
roles:[hadoop_client, pig, hive, hive_server]
NAME IP STATUS TASK
-----------------------------------------------------------------
hdp_cluster03-client-0 192.168.5.139 VM Ready Bootstrapping VM
ちなみに、上記の状態は、BDE の Web Client プラグインからも確認できます。
Task 列にも、上記と同じものが表示されています。
Serengeti-CLI から「cluster list ~」コマンドで
デプロイ処理中の Hadoop クラスタを表示すると、
STATUS が PROVISIONING になっています。
serengeti>cluster list --name hdp_cluster03
============================================================================
CLUSTER NAME : hdp_cluster03
AGENT VERSION : 2.0.0
DISTRO : apache
AUTO ELASTIC : N/A
MIN COMPUTE NODES NUM : N/A
MAX COMPUTE NODES NUM : N/A
IO SHARES : NORMAL
STATUS : PROVISIONING
GROUP NAME ROLES INSTANCE CPU MEM(MB) TYPE SIZE(GB)
---------------------------------------------------------------------------------------------
master [hadoop_namenode, hadoop_jobtracker] 1 2 7500 SHARED 50
worker [hadoop_datanode, hadoop_tasktracker] 3 1 3748 LOCAL 50
client [hadoop_client, pig, hive, hive_server] 1 1 3748 SHARED 50
============================================================================
構築された Hadoop クラスタの様子
自動構築が完了すると、cluster list コマンドでは
STATUS が「RUNNING」になります。
トポロジ指定(HOST_AS_RACK、HVE など)は、デフォルトではないようです。
HDFS / MapReduce のマスタノードは、「master」として 1つの VM にまとめられています。
スレーブノード(DataNode + TaskTracker)は 3台作成されます。
serengeti>cluster list --name hdp_cluster03
============================================================================
CLUSTER NAME : hdp_cluster03
AGENT VERSION : 2.0.0
DISTRO : apache
AUTO ELASTIC : N/A
MIN COMPUTE NODES NUM : N/A
MAX COMPUTE NODES NUM : N/A
IO SHARES : NORMAL
STATUS : RUNNING
GROUP NAME ROLES INSTANCE CPU MEM(MB) TYPE SIZE(GB)
---------------------------------------------------------------------------------------------
master [hadoop_namenode, hadoop_jobtracker] 1 2 7500 SHARED 50
worker [hadoop_datanode, hadoop_tasktracker] 3 1 3748 LOCAL 50
client [hadoop_client, pig, hive, hive_server] 1 1 3748 SHARED 50
============================================================================
もう少し詳細な、Hadoop クラスタとノードの構成情報を表示してみました。
マスタノードでは、vSphere HA が有効です。("haFlag" : "on")
serengeti>cluster export --name hdp_cluster03
{
"nodeGroups" : [
{
"name" : "master",
"roles" : [
"hadoop_namenode",
"hadoop_jobtracker"
],
"instanceNum" : 1,
"instanceType" : "MEDIUM",
"storage" : {
"type" : "shared",
"sizeGB" : 50
},
"cpuNum" : 2,
"memCapacityMB" : 7500,
"swapRatio" : 1.0,
"haFlag" : "on",
"configuration" : {
}
},
{
"name" : "worker",
"roles" : [
"hadoop_datanode",
"hadoop_tasktracker"
],
"instanceNum" : 3,
"instanceType" : "SMALL",
"storage" : {
"type" : "local",
"sizeGB" : 50
},
"cpuNum" : 1,
"memCapacityMB" : 3748,
"swapRatio" : 1.0,
"haFlag" : "off",
"configuration" : {
}
},
{
"name" : "client",
"roles" : [
"hadoop_client",
"pig",
"hive",
"hive_server"
],
"instanceNum" : 1,
"instanceType" : "SMALL",
"storage" : {
"type" : "shared",
"sizeGB" : 50
},
"cpuNum" : 1,
"memCapacityMB" : 3748,
"swapRatio" : 1.0,
"haFlag" : "off",
"configuration" : {
}
}
],
"configuration" : {
},
"networkNames" : [ ]
}
今回は、create コマンドにパスワードを指定していないので、
Hadoop ノードの OS にログインするためのパスワードは自動生成されます。
自動生成されたパスワードは VM のコンソール画面に表示されるので・・・
ノードのゲスト OS にアクセスする場合は
いったん serengeti ユーザで SSH ログインして変更します。
これは面倒なので、パスワードは Hadoop クラスタ構築時に指定しておいた方がよさそうです。
[serengeti@192 ~]$ sudo /opt/serengeti/sbin/set-password -u
New password: ★パスワードを入力する。
Retype password:
特にトポロジ指定していないので、
Hadoop ノードの topology.data は空ファイルになっています。
[serengeti@192 ~]$ cat /etc/hadoop/conf/topology.data
★何も記載なし。
[serengeti@192 ~]$ ls -l /etc/hadoop/conf/topology.data
-rw-r--r-- 1 root root 1 Oct 4 07:10 /etc/hadoop/conf/topology.data
今回の話は、マニュアルではこのあたりです。
VMware vSphere Big Data Extensions Command-Line Interface Guide
> Creating Hadoop and HBase Clusters
Serengeti’s Default Hadoop Cluster Configuration
BDE については、こちらもどうぞ・・・
vSphere で Hadoop してみる。(Big Data Extentions) 第1回
vSphere BDE(Hadoop)と vSphere HA の関係について。
vSphere BDE の Hadoop 的なデータストア活用について。(Local / Shared)
vShere BDE の Hadoop 的なトポロジ認識について。(Rack awareness と HVE)
以上、Serengeti CLI で Hadoop クラスタを作成してみる話でした。