Skip navigation
2014

今回は、VMware vSphere Big Data Extensions(BDE) の

Hadoop 的なネットワークトポロジ 認識についての話です。


Hadoop には処理を効率化するためにネットワーク トポロジ(構成)を認識する仕組みがあります。

これは ラック ウェアネス などと呼ばれていて、

分散処理中の大量データ転送を避けるための考慮をしたりデータローカリティ)

HDFS でデータレプリカ配置をうまく分散して

ノード障害時の可用性向上、データ消失防止したりするために重要です。


トポロジ認識は、サーバ(Hadoop のノード)とサーバラックを

紐づけるマッピングファイルを用意することで実現しています。

たとえば、下記のようにサーバとラックの対応を定義して Hadoop にトポロジを伝えます。

# cat topology.data

hadoop-node1.vmad.local  /datacenter01/rack01

hadoop-node2.vmad.local  /datacenter01/rack02

 

BDE では Hadoop クラスタの自動構築時に、このマッピングファイルを自動生成できます。

さらに VMware による、サーバ仮想化レイヤを考慮できるようになる

Hadoop Virtualization Extensions(HVE)という機能拡張も利用することができます。

Hadoop Virtualization Extensions on VMware vSphere 5

http://www.vmware.com/files/pdf/Hadoop-Virtualization-Extensions-on-VMware-vSphere-5.pdf

 

Hadoop Common / HADOOP-8468

Umbrella of enhancements to support different failure and locality topologies

https://issues.apache.org/jira/browse/HADOOP-8468

 

トポロジ認識は、BDE で Hadoop クラスタを作成するときに

4種類の認識方法から選択できます。

  • NONE
    トポロジを気にしない。
  • HOST_AS_RACK
    ゲスト OS を Hadoop のノード、ESXi を Hadoop でのラックとして扱う。
  • RACK_AS_RACK
    ゲスト OS を Hadoop のノード、マッピングファイルでのラック を Hadoop でのラックとして扱う。
  • HVE
    ゲスト OS、ESXi、ラックそれぞれを認識する。
    ※ただし、Hadoop ディストリビューションでも HVE 対応が必要。

 

BDE では、デフォルトで上記のうち NONE と HOST_AS_RACK だけが選択でき、

BDE 管理サーバ(Serengeti)にラックと ESXi のマッピングを定義するファイル

(上の方で例とした topology.data ファイルとは別のもの)をアップロードすることで

RACK_AS_RACK と HVE が選択できるようになります。

 

たとえば、下記のようなマッピングファイルになります。

# cat /home/serengeti/rack_esxi_map.txt

rack01: esxi01.vmad.local,esxi02.vmad.local

rack02: esxi03.vmad.local,esxi04.vmad.local

 

BDE では HVE を使用しない場合、

BDE に は、物理ラックか、ESXi どちらかを

Hadoop のラックとして認識させることになります。

bde-topology -01.png


このとき Hadoop のラック認識として、

ESXi を選ぶと物理ラックが境界として認識できず、

物理ラックを選ぶと ESXi が境界として認識できなくなってしまいます。

※下の図だと、オレンジ点線の部分が Hadoop から認識できなくなってしまいます。

bde-topology -02.png


そして、境界が下記の赤枠のように認識されるので、

うまくラック内にデータ転送を収めたりできなくなったり(HOST_AS_RACK)

同一 ESXi で稼働する VM 同士でデータの複製を持ったり(RACK_AS_RACK)

することが起こりえます。

bde-topology -03.png

 

そこで、HVE を使用することで

VM、ESXi、物理ラック それぞれを意識した

トポロジ 構成のマッピングファイルを自動生成できるようになります。

BDE のホワイトペーパーなどでは、ESXi は「Node Group」という概念で説明されています。

bde-topology -04.png

 

というわけで、Hadoop ディストリビューションが HVE が対応しているのであれば

HVE にしておくのがよいと思います。結構、HVE 対応しているようです。

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

  > Managing Hadoop Distributions

Hadoop Distribution Deployment Types

 

以上、BDE のトポロジ認識についてでした。

つづく・・・

vShere BDE の Hadoop 的なトポロジ認識について。その2(HVE Topology 設定編)

Hadoop では、ローカルディスクを活用をすることで知られています。

一方、サーバ仮想化環境は共有ディスクを使用することが一般的なので

Hadoop とサーバ仮想化はあまり相性がよくないといわれることがあります。


というわけで、

BDE はどのようにデータストア(ローカル / 共有ディスク)を使用するのか見てみました。

 

BDE でのデータストア利用イメージ


BDE にデフォルトで含まれている

Apache Hadoop 1.2 で、Basic Hadoop Cluster を作成した場合を

例にすると、だいたい下記のような感じです。

BDE-Hadoop-ds-01.png


Hadoop でマスタノードと呼ばれるものは

一般的に、そこまでデータの I/O が無いとされていますが

そのかわり耐障害性が求められます。

今回の例では、下記がマスタノードにあたります。

  • HDFS の NameNode(NN)
  • MapReduce の JobTracker(JT)


一方スレーブノードは、

大量のデータを格納していて

それをもとに分散処理を実行したりするので

ローカルディスクを活用したいサーバです。

今回の例では、下記がマスタノードにあたります。

  • HDFS の DataNode(DN)
  • MapReduce の TaskTracker(TT)


BDE では、ノードの役割によって

ローカルデータストアと共有データストアを使い分けていて、

だいたい下記のような役割分担です。

  • マスタノード → ESXi のローカルデータストアを使用する。
  • スレーブノード → 共有データストアを利用する。

 

マスタノードは、共有データストアに

仮想マシン(VMDK ファイル)が配置されているため、

vMotion や、vSphere HA といった仮想化環境特有の

高可用性の機能を利用できるようになっています。

もうすぐ vSphere FT が複数 vCPU 対応になるようなので

そうなったらさらに有益かと思いました・・・

 

スレーブノードは、ローカルディスクを使用しますが、

もともと MapReduce / HDFS で冗長化が考慮されているので

ノード障害が発生してもそうに問題にならないという想定でしょう。

 

BDE でのデータストアの指定


BDE ではローカルデータストアと共有データストアを使い分けますが、

そのためにvSphere 環境で利用しているデータストアを

さらに BDE で使用するデータストアとしてリソース登録します。

BDE-Hadoop-ds-02.png

 

BDE で Hadoop クラスタを作成するまえにリソース登録しておき、

Hadoop クラスタ作成時には

ノードグループごとにデータストアの種類(Local / Shared)だけ指定します。

 

BDE Web Client プラグイン画面での見え方。


ローカルデータストアを、BDE に登録する例です。

Local / Shared データストアは、それぞれ

まとめて1つのリソースとして登録することができます。

bde-ds-01.png

 

下記の例では、1つの BDE データストア リソースとして

4つのデータストア(VC Datastores)を登録しています。

bde-ds-02.png


逆に、VC データストアそれぞれを

1つずつ BDE データストア リソースとして登録することもできます。

bde-ds-03.png

 

その場合は、下記のようになります。

bde-ds-04.png


Hadoop のノードのデータストアの種類は

Hadoop クラスタの作成(Create New Big Data Cluster)の時に

選択することができます。デフォルトでは、

マスタノード(~Master Node Group)は共有データストア(Shared datastore)、

スレーブノード(Worker Node Group)はローカルデータストア(Local datastores)

になっています。

bde-ds-05.png

 

Resource template で「Customize」を選択すると

データストアを変更することができますが、データストア名を指定するわけではなく

「Local」もしくは「Shared」を指定することで

あとは BDE によって自動的にデータストアが選択されます。

bde-ds-06.png

 

設定はポリシーベースっぽい感じです。

 

マニュアルでは下記のあたり・・・

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

Big Data Extensions: Add a Datastore

Create a Hadoop or HBase Cluster in the vSphere Web Client

 

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

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

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

 

以上、BDE とデータストアの話でした。

Hadoop では、分散処理のマスタとなるノード(サーバ)の

冗長化が課題となることがあると思います。


たとえば下記のあたりの障害対策をどうするかが、よく話題になっています。

  • HDFS のマスタノード(NameNode)
  • MapReduce のマスタノード(JobTrackser)

 

vSphere Big Data Extensions(BDE) と

vSphere での冗長化については、

マニュアルだと下記のあたりにそれとなく記載があります。

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

  > Managing Hadoop and HBase Clusters

About vSphere High Availability and vSphere Fault Tolerance

http://pubs.vmware.com/bde-2/topic/com.vmware.bigdataextensions.admin.doc/GUID-C69A72A1-93B8-4EB9-A2B2-16E1FCAC108D.html

 

FT では当然、保護可能だと思います。

ただし FT は vSphere 5.5 までだと 1vCPU しか割り当てられないので

実際のところは vSphere HA が有効そうな気がします。


そして、vSphere HA については

マスタノードのプロセス検知まで対応しているのか気になったので試してみました。

 

BDE で自動構築した VM の HA 保護構成について


BDE で自動構築(テンプレートからクローン)された VM のうち、

マスタノードになるものは、デフォルトで

共有データストア(Shared datastores)に配置されます。


DataMaster が、HDFS の NameNode で、

ComputeMaster が、MapReduce の JobTracker です。

bde-vha-02.png

 

vSphere HA での VM の保護設定を確認してみると、

マスタノードは HA が有効で、それ以外は無効になっていました。

※仮想マシンの監視は「仮想マシンとアプリケーションの監視」にしてあります。

bde-vha-03.png

 

マスタノードの確認

 

ためしにマスタノード障害を発生させてみるために、

マスタノードを確認します。

BDE では、BDE の Web Client プラグイン画面から、マスタノードがわかります。

それぞれゲスト OS の、IP アドレスがわかります。

bde-vha-01.png

 

他にも、BDE の管理サーバに 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>cluster target --name hdp_cluster01

serengeti>cfg info

Hadoop [1.2.1 rev.1503152][fs=hdfs://192.168.5.128:8020][jt=192.168.5.125:8021]

「fs=~」が HDFS のマスタノード(NameNode)、

「jt=~」が MapReduce のマスタノード(JobTracker)です。

 

 

マスタノードを停止してみる。

 

まず、HDFS のマスタノードを停止してみます。

hdp_cluster01-DataMaster-0 に SSH でログインして

NameNode プロセスを停止してみました。

[root@192 ~]# uname -n

192.168.5.128  ★ホスト名は IP アドレスと同じになっている。

[root@192 ~]# jps

4930 NameNodeMonitor

25430 Jps

2680 NameNode

 

kill コマンドで、プロセス停止してみました。

[root@192 ~]# kill 2680

[root@192 ~]# jps

4930 NameNodeMonitor

25466 Jps

 

少し待つと、vSphere HA が作動します。

bde-vha-04.png

 

プロセスの再起動ではなく、

VM がリセットされ、ゲスト OS があらためて起動されます。

bde-vha-05.png

 

VM が vSphere HA でリセットされたことが

イベント にも残っています。

bde-vha-06.png

 

ゲスト OS 起動後は、

NameNode のプロセスが自動起動します。

[root@192 ~]# uname -n

192.168.5.128

[root@192 ~]# uptime

13:45:38 up 6 min,  1 user,  load average: 0.10, 0.45, 0.29

[root@192 ~]# jps

2716 NameNodeMonitor

2309 NameNode

2830 Jps

 

同様に、MapResuce の JobTracker のプロセスを停止してみました。

hdp_cluster01-ComputeMaster-0 に SSH でログインして、

JobTracker のプロセスを停止してみます。

[root@192 ~]# uname -n

192.168.5.125  ★ホスト名は IP アドレスと同じになっている。

[root@192 ~]# jps

2656 JobTracker

15403 Jps

2802 JobTrackerMonitor

[root@192 ~]# kill 2656

[root@192 ~]# jps

15418 Jps

2802 JobTrackerMonitor

 

しばらくすると、JobTracker の VM も

vSphere HA によってリセットされました。

VM がリセットされることで、

ゲスト OS の起動に合わせて JobTracker のプロセスが起動(復旧)されます。

bde-vha-07.png

 

vSphere HA では、ESXi ホスト障害や、VM(ゲスト OS)のハングといった

障害は標準で検知でき、自動復旧できます。

アプリケーション障害を検知する場合には

そのアプリケーション側で vSphere HA に対応している必要があるのですが、

BDE で自動構築した Apache Haoop のマスタノードは

NameNode も、JobTracker も vSphere HA のアプリケーション監視に

対応しているようです。

 

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

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

 

以上、BDE と vSphere HA についてでした。

今回も、VMware と Hadoop の話です。

 

vSphere Big Data Extensions(BDE) のこれまでのポスト

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

vSphere で Hadoop してみる。BDE 第2回

vSphere で Hadoop してみる。BDE 第3回

vSphere で Hadoop してみる。BDE 第4回

vSphere で Hadoop してみる。BDE 第5回

 

今回は、Serengeti CLI の話です。

BDE には、serengeti という CLI が用意されていて、

BDE の管理サーバ(management-server VM)に SSH でアクセスして

serengeti」 と実行すると、起動できます。

bde-serengeti-01.png

テキストだとこんな感じです。

[serengeti@192 ~]$ serengeti

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

*  _____                                 _   _  *

* / ____|  ___ _ __ ___ _ __   __ _  ___| |_(_) *

* \____ \ / _ \ '__/ _ \ '_ \ / _` |/ _ \ __| | *

*  ____) |  __/ | |  __/ | | | (_| |  __/ |_| | *

* |_____/ \___|_|  \___|_| |_|\__, |\___|\__|_| *

*                             |___/             *

*                                               *

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

Version: 2.0.0

Welcome to Serengeti CLI

serengeti>

 

BDE 管理サーバのサービス(localhost:8443)に接続することで

vSphere BDE 環境の Hadoop を確認したり、操作したりすることができます。

※ここのログインは、Web Client と同様に、vCenter SSO の認証を利用しています。

serengeti>connect --host localhost:8443

Enter the username: vmad\administrator ※vCenterSSOの認証でログイン

Enter the password: **********

Connected

 

たとえば、前回までに作成した Hadoop クラスタを表示してみます。

serengeti>cluster list --name hdp_cluster01

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

 

  CLUSTER NAME              :  hdp_cluster01

  AGENT VERSION             :  2.0.0

  DISTRO                    :  apache

  TOPOLOGY                  :  HOST_AS_RACK

  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)

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

  DataMaster     [hadoop_namenode]                        1         1    3748     SHARED  10

  ComputeMaster  [hadoop_jobtracker]                      1         1    3748     SHARED  10

  Worker         [hadoop_datanode, hadoop_tasktracker]    2         1    3748     SHARED  20

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

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

 

実際にターミナルで表示する場合はこのようになります。

bde-serengeti-02.png

 

このクラスタは、BDE の Web Client プラグインから下記のように見えていたものです。

bde-new-cluster-12.png

 

BDE にリソースとして登録した、データストアや、ポートグループなどを

表示することもできます。

serengeti>datastore list

  NAME              TYPE    REG EX

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

  defaultDSLocal    LOCAL   FALSE

  ds_nfs_hadoop_01  SHARED  FALSE

 

serengeti>network list

  NAME            PORTGROUP       TYPE  IP_RANGES  DNS1  DNS2  GATEWAY  MASK

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

  defaultNetwork  pg-vlan-0005    dhcp

  bde-vlan-0005   dvpg-vlan-0005  dhcp

 

クラスタに接続して操作することもできます。

ためしに、BDE で構築した hdp_cluster01 というクラスタの HDFS 領域を参照してみます。

serengeti>cluster target --name hdp_cluster01

serengeti>cfg info

Hadoop [1.2.1 rev.1503152][fs=hdfs://192.168.5.128:8020][jt=192.168.5.125:8021]

serengeti>fs ls /tmp

Found 3 items

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:14 /tmp/hadoop-mapred

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:13 /tmp/hadoop-yarn

drwxrwxrwx   - root hadoop          0 2014-09-21 23:38 /tmp/test

serengeti>fs ls /tmp/test

Found 2 items

drwxrwxrwx   - root hadoop          0 2014-09-21 23:37 /tmp/test/input

drwxrwxrwx   - root hadoop          0 2014-09-21 23:39 /tmp/test/output

 

serengeti CLI のヘルプは、下記のような感じです。

serengeti>help

* ! - Allows execution of operating system (OS) commands

* // - Inline comment markers (start of line only)

* ; - Inline comment markers (start of line only)

* cfg fs - Sets the Hadoop namenode - can be 'local' or <namenode:port>

* cfg info - Returns basic info about the Hadoop configuration

* cfg jt - Sets the Hadoop job tracker - can be 'local' or <jobtracker:port>

* cfg load - Loads the Hadoop configuration from the given resource

* cfg props get - Returns the value of the given Hadoop property

* cfg props list - Returns (all) the Hadoop properties

* cfg props set - Sets the value for the given Hadoop property - <name=value>

* clear - Clears the console

* cls - Clears the console

* cluster config - Config an existing cluster

* cluster create - Create a hadoop cluster

* cluster delete - Delete a cluster

* cluster export - Export cluster specification

* cluster fix - Fix a cluster failure

* cluster list - Get cluster information

* cluster resetParam - reset cluster parameters

* cluster resize - Resize a cluster

* cluster setParam - set cluster parameters

* cluster start - Start a cluster

* cluster stop - Stop a cluster

* cluster target - Set or query target cluster to run commands

* cluster upgrade - Upgrade an old cluster

* connect - Connect a serengeti server

* datastore add - Add new datastore(s)

* datastore delete - Delete an unused datastore

* datastore list - Display datastore list.

* date - Displays the local date and time

* disconnect - Disconnect a serengeti server

* distro list - Get distro information

* exit - Exits the shell

* fs cat - Copy source paths to stdout

* fs chgrp - Change group association of files

* fs chmod - Change the permissions of files

* fs chown - Change the owner of files

* fs copyFromLocal - Copy single src, or multiple srcs from local file system to the destination file system. Same as put

* fs copyMergeToLocal - Takes a source directory and a destination file as input and concatenates files in src into the destination local file

* fs copyToLocal - Copy files to the local file system. Same as get

* fs count - Count the number of directories, files, bytes, quota, and remaining quota

* fs cp - Copy files from source to destination. This command allows multiple sources as well in which case the destination must be a directory

* fs du - Displays sizes of files and directories contained in the given directory or the length of a file in case its just a file

* fs expunge - Empty the trash

* fs get - Copy files to the local file system

* fs ls - List files in the directory

* fs mkdir - Create a new directory

* fs moveFromLocal - Similar to put command, except that the source localsrc is deleted after it's copied

* fs mv - Move source files to destination in the HDFS

* fs put - Copy single src, or multiple srcs from local file system to the destination file system

* fs rm - Remove files in the HDFS

* fs setrep - Change the replication factor of a file

* fs tail - Display last kilobyte of the file to stdout

* fs text - Take a source file and output the file in text format

* fs touchz - Create a file of zero length

* help - List all commands usage

* hive cfg - Configures Hive

* hive script - Executes a Hive script

* loggedConnect - Connect a serengeti server with username/password as options and get logged into cli history

* mr jar - Run Map Reduce job in the jar

* mr job counter - Print the counter value of the MR job

* mr job events - Print the events' detail received by jobtracker for the given range

* mr job history - Print job details, failed and killed job details

* mr job kill - Kill the Map Reduce job

* mr job list - List the Map Reduce jobs

* mr job set priority - Change the priority of the job

* mr job status - Query Map Reduce job status.

* mr job submit - Submit a Map Reduce job defined in the job file

* mr task fail - Fail the Map Reduce task

* mr task kill - Kill the Map Reduce task

* network add - Add a network to Serengeti

* network delete - Delete a network from Serengeti by name

* network list - Get network information from Serengeti

* network modify - Modify a network from Serengeti by name

* pig cfg - Configures Pig

* pig script - Executes a Pig script

* quit - Exits the shell

* resourcepool add - Add a new resource pool

* resourcepool delete - Delete an unused resource pool

* resourcepool list - Get resource pool information

* script - Parses the specified resource file and executes its commands

* system properties - Shows the shell's properties

* topology list - List a rack-->hosts mapping topology

* topology upload - Upload a rack-->hosts mapping topology file

* version - Displays shell version

 

Web Client よりも細かい設定をする場合は、

この serengeti CLI を使用します。

 

マニュアルもあります。英語ですが・・・

VMware vSphere Big Data Extensions

Command-Line Interface Guide

vSphere Big Data Extensions 2.0

http://pubs.vmware.com/bde-2/topic/com.vmware.ICbase/PDF/vsphere-big-data-extensions-20-command-line-guide.pdf

 

以上、BDE のコマンドラインツールの話でした。

今回は、前回までに vSphere Big Data Extensions(BDE)で作成した

Hadoop 環境を、もう少し見てみようと思います。

そして、かるく WordCount してみます。


これまでの流れは・・・

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

vSphere で Hadoop してみる。BDE 第2回

vSphere で Hadoop してみる。BDE 第3回

vSphere で Hadoop してみる。BDE 第4回


BDE で構築した Hadoop 環境について


Client ノードとして作成された VM に SSH でログインして確認してみます。

※Client 以外の、マスタ / スレーブ ノードも同様の構成になります。

bde-trywc-01.png

 

Hadoop クラスタに作成されたノードは、

CentOS 6.4 64bit です。

[root@192 ~]# cat /etc/centos-release

CentOS release 6.4 (Final)

[root@192 ~]# uname -r

2.6.32-358.el6.x86_64

 

IP アドレスが、そのままホスト名になっています。

[root@192 ~]# uname -n

192.168.5.124

 

Java は、Oracle (Sun)の HotSpot 1.7.0_51 でした。

[root@192 ~]# /usr/java/default/bin/java -version

java version "1.7.0_51"

Java(TM) SE Runtime Environment (build 1.7.0_51-b13)

Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

 

Apache Hadoop のバージョンは、1.2.1 です。

[root@192 ~]# hadoop version

Hadoop 1.2.1

Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152

Compiled by mattf on Mon Jul 22 15:23:09 PDT 2013

From source with checksum 6923c86528809c4e7e6f493b6b413a9a

This command was run using /usr/lib/hadoop-1.2.1/hadoop-core-1.2.1.jar

 

HDFS のマスターノード(NameNode)と

MapReduce のマスターノード(JobTracker)が

自動的に設定ファイルに記載されています。

※今回の IP アドレスは、DHCP で設定されたものです。

[root@192 ~]# grep -A1 "fs.default.name" /etc/hadoop/conf/core-site.xml

  <name>fs.default.name</name>

  <value>hdfs://192.168.5.128:8020</value>

[root@192 ~]# grep -A1 "mapred.job.tracker<" /etc/hadoop/conf/mapred-site.xml

  <name>mapred.job.tracker</name>

  <value>192.168.5.125:8021</value>

 

HDFS の操作をしてみる。

 

Client ノードから NameNode の URL を指定して HDFS を見てみます。

[root@192 ~]# hadoop fs -fs hdfs://192.168.5.128:8020 -ls /

Found 3 items

drwxrwxr-x   - hdfs hadoop          0 2014-09-17 23:11 /hadoop

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:14 /tmp

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:12 /user

[root@192 ~]# hadoop fs -fs hdfs://192.168.5.128:8020 -ls /tmp

Found 2 items

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:14 /tmp/hadoop-mapred

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:13 /tmp/hadoop-yarn

 

デフォルトの NameNode が設定してあるので、「-fs hdfs://~」は

省略しても HDFS にアクセスできます。

※ついでに HDFS にディレクトリを作成しています。

[root@192 ~]# hadoop fs -ls /tmp

Found 2 items

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:14 /tmp/hadoop-mapred

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:13 /tmp/hadoop-yarn

[root@192 ~]# hadoop fs -mkdir /tmp/test

[root@192 ~]# hadoop fs -mkdir /tmp/test/input

[root@192 ~]# hadoop fs -chmod -R 777 /tmp/test

[root@192 ~]# hadoop fs -lsr /tmp/test

drwxrwxrwx   - root hadoop          0 2014-09-21 23:22 /tmp/test/input

 

MapReduce ジョブ(サンプルの WordCount)を実行してみようと思うので、

HDFS にファイルをアップロードしておきます。

今回は、hadoop コマンドのヘルプを WordCount してみます。

[root@192 ~]# hadoop help > sample.txt

[root@192 ~]# head sample.txt

Usage: hadoop [--config confdir] COMMAND

where COMMAND is one of:

  namenode -format     format the DFS filesystem

  secondarynamenode    run the DFS secondary namenode

  namenode             run the DFS namenode

  datanode             run a DFS datanode

  dfsadmin             run a DFS admin client

  mradmin              run a Map-Reduce admin client

  fsck                 run a DFS filesystem checking utility

  fs                   run a generic filesystem user client

[root@192 ~]# hadoop fs -put ./sample.txt /tmp/test/input/

[root@192 ~]# hadoop fs -ls /tmp/test/input

Found 1 items

-rw-r--r--   3 root hadoop       1567 2014-09-21 23:37 /tmp/test/input/sample.txt

 

ちなみに、Web Client の BDE プラグインから、

おなじみの HDFS ステータス確認のページを表示することができます。

クラスタを右クリックして 「Open HDFS Status Page」をクリックすると・・・

bde-trywc-02.png

 

Web ブラウザで HDFS の NameNode のページが開きます。

bde-trywc-03.png

 

MapReduce ジョブの実行

 

サンプルアプリケーションの WordCount を実行してみます。

Client ノードに配置されている、

hadoop-examples-1.2.1.jar を使用します。

[root@192 ~]# ls -l /usr/lib/hadoop-1.2.1/hadoop-examples-1.2.1.jar

-rw-rw-r-- 1 hdfs hadoop 142726 Jul 22  2013 /usr/lib/hadoop-1.2.1/hadoop-examples-1.2.1.jar

 

それでは、MapResuce してみます。

先ほど、HDFS にアップロードした hadoop コマンドのヘルプを WordCount してみます。

[root@192 ~]# hadoop jar /usr/lib/hadoop-1.2.1/hadoop-examples-1.2.1.jar wordcount /tmp/test/input /tmp/test/output

14/09/21 23:38:47 INFO input.FileInputFormat: Total input paths to process : 1

14/09/21 23:38:47 INFO util.NativeCodeLoader: Loaded the native-hadoop library

14/09/21 23:38:47 WARN snappy.LoadSnappy: Snappy native library not loaded

14/09/21 23:38:49 INFO mapred.JobClient: Running job: job_201409172315_0006

14/09/21 23:38:50 INFO mapred.JobClient:  map 0% reduce 0%

14/09/21 23:39:27 INFO mapred.JobClient:  map 100% reduce 0%

14/09/21 23:39:49 INFO mapred.JobClient:  map 100% reduce 100%

14/09/21 23:39:50 INFO mapred.JobClient: Job complete: job_201409172315_0006

14/09/21 23:39:50 INFO mapred.JobClient: Counters: 29

14/09/21 23:39:50 INFO mapred.JobClient:   Job Counters

14/09/21 23:39:50 INFO mapred.JobClient:     Launched reduce tasks=1

14/09/21 23:39:50 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=28592

14/09/21 23:39:50 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

14/09/21 23:39:50 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

14/09/21 23:39:50 INFO mapred.JobClient:     Launched map tasks=1

14/09/21 23:39:50 INFO mapred.JobClient:     Data-local map tasks=1

14/09/21 23:39:50 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=22396

14/09/21 23:39:50 INFO mapred.JobClient:   File Output Format Counters

14/09/21 23:39:50 INFO mapred.JobClient:     Bytes Written=1081

14/09/21 23:39:50 INFO mapred.JobClient:   FileSystemCounters

14/09/21 23:39:50 INFO mapred.JobClient:     FILE_BYTES_READ=1552

14/09/21 23:39:50 INFO mapred.JobClient:     HDFS_BYTES_READ=1683

14/09/21 23:39:50 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=139783

14/09/21 23:39:50 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=1081

14/09/21 23:39:50 INFO mapred.JobClient:   File Input Format Counters

14/09/21 23:39:50 INFO mapred.JobClient:     Bytes Read=1567

14/09/21 23:39:50 INFO mapred.JobClient:   Map-Reduce Framework

14/09/21 23:39:50 INFO mapred.JobClient:     Map output materialized bytes=1552

14/09/21 23:39:50 INFO mapred.JobClient:     Map input records=30

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce shuffle bytes=1552

14/09/21 23:39:50 INFO mapred.JobClient:     Spilled Records=234

14/09/21 23:39:50 INFO mapred.JobClient:     Map output bytes=1999

14/09/21 23:39:50 INFO mapred.JobClient:     Total committed heap usage (bytes)=200806400

14/09/21 23:39:50 INFO mapred.JobClient:     CPU time spent (ms)=4120

14/09/21 23:39:50 INFO mapred.JobClient:     Combine input records=192

14/09/21 23:39:50 INFO mapred.JobClient:     SPLIT_RAW_BYTES=116

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce input records=117

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce input groups=117

14/09/21 23:39:50 INFO mapred.JobClient:     Combine output records=117

14/09/21 23:39:50 INFO mapred.JobClient:     Physical memory (bytes) snapshot=270094336

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce output records=117

14/09/21 23:39:50 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=1282797568

14/09/21 23:39:50 INFO mapred.JobClient:     Map output records=192

 

ちなみに、Web Client の BDE プラグインから、

おなじみの MapReduce ステータス確認のページも表示することができます。

クラスタを右クリック → 「Open MapReduce Status Page」をクリックすると・・・

bde-trywc-04.png

 

Web ブラウザで Map/Reduce Administration ページが開きます。

bde-trywc-05.png

 

Running Jobs のあたりで、実行中のジョブを確認できたりします。

bde-trywc-06.png

 

ジョブが終了すると、ワードをカウントしたファイルが作成されます。

[root@192 ~]# hadoop fs -ls /tmp/test/output

Found 3 items

-rw-r--r--   3 root hadoop          0 2014-09-21 23:39 /tmp/test/output/_SUCCESS

drwxrwxrwx   - root hadoop          0 2014-09-21 23:38 /tmp/test/output/_logs

-rw-r--r--   3 root hadoop       1081 2014-09-21 23:39 /tmp/test/output/part-r-00000

[root@192 ~]# hadoop fs -get /tmp/test/output/part-r-00000 ./sample_wc.txt

[root@192 ~]# wc -l sample_wc.txt

117 sample_wc.txt  ★117ワードありました。

[root@192 ~]# head -n 20 sample_wc.txt

-archiveName    1

-format 1

-p      1

2       1

<dest>  1

<desturl>       2

<jar>   1

<parent 1

<src>*  1

<srcurl>        2

CLASSNAME       2

COMMAND 2

DFS     6

DistCp  1

Hadoop  1

JobQueues       1

Map-Reduce      1

MapReduce       3

Most    1

NAME    1

 

ちなみに、ヘルプには run というワードが多いですね。

[root@192 ~]# sort -k2 -n -r sample_wc.txt | head -n 20

run     14

the     12

a       12

DFS     6

namenode        4

job     4

version 3

jar     3

filesystem      3

client  3

MapReduce       3

utility 2

to      2

print   2

or      2

node    2

hadoop  2

get     2

fsimage 2

file    2

 

以上、BDE で構築した Hadoop 環境についてでした。

たぶん、まだ続けます・・・

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

今回は、前回までの流れをひきついで

vSphere Big Data Extensions(BDE)で Hadoop クラスタを作成してみます。


Web ブラウザからでも、CLI でもクラスタ作成することができますが、

今回は Web ブラウザ(BDE の vSphere Web Client プラグイン)から実施します。

この Web Client は、普段 vCenter にアクセスする Web Client と同じものです。

 

これまでの BDE ポストはこちら。

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

vSphere で Hadoop してみる。BDE 第2回

vSphere で Hadoop してみる。BDE 第3回

 

BDE でデプロイする Hadoop ディストリビューションについて

 

BDE には、デフォルトでは

Apache の コミュニティ版 の Hadoop 1.2 と bigtop が

ディストリビューションとして登録されています。


BDE に登録されているディストリビューションは、

BDE の vSphere Web Client プラグインの「Hadoop Distributions」から確認できます。

bde-new-cluster-01.png


他にもいくつかの Hadoop ディストリビューション(CDH や MapR など)

に対応していて、追加するとこの画面に表示されるようになります。

 

マニュアルでは下記のあたりを参照・・・

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

Hadoop Feature Support By Distribution

http://pubs.vmware.com/bde-2/topic/com.vmware.bigdataextensions.admin.doc/GUID-2D9092BA-771B-4FCC-AE5C-72761720D303.html

 

BDE での Hadoop クラスタ自動構築

 

それでは、Hadoop クラスタを作成してみます。

「ホーム」から「Big Data Extentions」の画面を開いて、

「Big Data Clusters」→「Getting Started」→

「Create a New Big Data Cluster」をクリックします。

bde-new-cluster-02.png

 

Name and node group 画面で、下記を指定します。

  • Name
    BDE で独自に使用するクラスタの名前を指定します。
  • Hadoop distribution
    使用する Hadoop ディストリビューションを選択します。
    今回はコミュニティ版 Hadoop を使用します。
  • Deployment type
    Hadoop をどのようなクラスタ構成にするか、HBbase クラスタにするかなど。
    この選択内容によって、すぐ下に表示されている Node group で
    設定できるものが変化します。

bde-new-cluster-03.png

 

Hadoop クラスタのノード構成を決めます。今回のように

Deployment type で「Basic Hadoop Cluster」を指定している場合は

ノードグループは下記の4つになります。

  • DataMaster Node Group(HDFS のマスタになるサーバ)
  • ComputeMaster Node Group(MapReduce のマスタになるサーバ)
  • Worker Node Group(HDFS と MapReduce のスレーブになるサーバ)
  • Client Node Group(Hadoop に処理をさせるクライアント。なくてもよい)

 

それぞれのグループで、仮想マシン数を指定し、

「Resource template」で割り当てるリソースを指定します。

Large、Medium...といったあらかじめ用意されたテンプレートがありますが、

今回は出来るだけ小規模にしたいので、すべて「Customize」を指定しました。


DataMaster と ComputeMaster は下記が最小リソース構成です。

「Basic Hadoop Cluster」を指定する場合は、

DataMaster、ComputeMaster どちらも 1台だけになります。

bde-new-cluster-04.png

 

Worker と Client は下記が最小リソース構成のようです。

Worker は、せっかくなので2台にしました。(デフォルトは3台)

bde-new-cluster-05.png

 

「Resource template」で「Customize」を選択する場合は、

下記のような指定ができます。

  • vCPU 数
  • メモリ容量
  • ストレージ容量
    各サーバに、この容量の VMDK ファイルが 自動追加されます。
  • Datastore type
    事前に BDE で使用できるようにリソース登録したデータストアのうち、
    Local、Shared どちらとして定義したものを使用するか指定します。

bde-new-cluster-05a.png

 

ちなみに、最小値よりも小さくしようとするとエラーになります。

メモリなどは最小値自体が結構大きいので、

検証目的で利用する場合など、物理サーバのスペックが低い環境では要注意だと思います。

bde-new-cluster-05b.png

 

Hadoop のトポロジと、クローンされた VM を接続するネットワークを指定します。

トポロジは、BDE デプロイ直後は「HOST_AS_RACK」と「NONE」が選択できます。

※これは MapReduce や HDFS の動作に影響を与えます。詳しくは別途…(ないかも)


ネットワークは、BDE に事前登録してあるポートグループから指定できます。

ここで選択する名前は、通常のポートグループ名でははなく

BDE にリソース登録した時に指定した名前です。

※Customize にチェックを入れると、もう少し細かく使用ネットワークを指定できます。

bde-new-cluster-06.png

 

Hadoop クラスタの作成先となるリソースプールを指定します。

ここで指定するリソースプールは、事前に作成しておく必要があります。

このリソースプールの下に、さらに子リソースプールが自動作成されて VM がクローンされます。

bde-new-cluster-07.png

 

自動クローンされる VM の、ゲスト OS の root パスワードを指定します。

今回は、「Set password」を指定します。

デプロイされた Hadoop クラスタに含まれるゲスト OS の root ユーザには

自動的にこのパスワードがセットされます。

ちなみに、デプロイされるゲスト OS は CentOS 6.4 64bit です。

bde-new-cluster-08.png

 

設定内容が表示されるので、確認して「終了」をクリックします。

bde-new-cluster-09.png

 

Hadoop クラスタの自動構築が開始されます。

bde-new-cluster-10.png

 

vCenter に vSphere Client で接続してみると、

リソースプール作成や VM をクローンしている様子が見やすいと思います。

bde-new-cluster-11.png

 

処理がすべて完了すると、

自動構築したクラスタのすべてのゲスト OS が自動設定されて、VM が起動された状態になります。

bde-new-cluster-12.png

 

クラスタ名をダブルクリックして開くと、

今回の Hadoop クラスタ(hdp_cluster01)には5台の VM が含まれることがわかります。

VM 名は自動設定されたものです。

bde-new-cluster-13.png

 

「ホストおよびクラスタ」インベントリから見ると、このような感じになります。

bde-new-cluster-14.png

 

ちなみに、このクラスタ自動構築処理は複数台の VM をクローンしたりするので、

結構時間がかかります。(数時間かかることがあります)

Nested ESXi 環境などで Hadoop クラスタを 1台の HDD にすべて乗せたりする場合は

半日くらいかかると思っておいた方がよいです。

 

以上、Web Client + BDE での Hadoop クラスタ自動作成でした。

まだまだ続く・・・

vSphere で Hadoop してみる。BDE 第5回

今回から、

vSphere Big Data Extensions(BDE)で

vSphere 環境に Hadoop クラスタを作成してみます。

 

これまでの流れ

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

vSphere で Hadoop してみる。BDE 第2回

 

今回は BDE で Hadoop クラスタを作成する準備として下記を実施します。

  • BDE で使用するストレージの指定
  • BDE で使用するネットワークの指定
  • Hadoop クラスタで利用するリソースプールの作成

 

BDE でリソースの指定は、

vSphere Web Client の BDE プラグインの画面で設定します。

 

Web Client にログインしたら、「ホーム」で

「Big Data Extentions」を開きます。

bde-res-setting-01.png

 

BDE の画面が開くので「Resources」を開きます。

bde-res-setting-02.png

 

BDE で使用するストレージの指定


BDE でストレージを利用するには、

すでに vSphere 環境で作成してあるデータストアを指定します。


「Invenory Lists」配下の「Datastores」を開いて「+」ボタンをクリックして下記を設定します。

  • BDE でのデータストアの名前。データストアに BDE 独自の名前を設定します。
  • Type → データストアのタイプを指定します。Local か Shared。
  • 使用するデータストアのチェックを ON にします。

bde-res-setting-03.png

 

指定したデータストアは、

下記のように表示されるようになります。

bde-res-setting-04.png

 

BDE で使用するネットワークの指定


BDE でストレージを利用するには、

すでに vSphere 環境で作成してあるポートグループを指定します。

vSS の標準ポートグループでも、vDS の分散ポートグループでも

どちらでも指定できます。


「Invenory Lists」配下の「Networks」を開いて「+」ボタンをクリックして下記を設定します。

  • BDE でのネットワークの名前。ポートグループに BDE 独自の名前を設定します。。
  • 使用するデータストアのチェックを選択する。
  • IP アドレス設定を、DHCP か、静的に指定かを選択します。

 

ちなみに、今回はもともと DHCP サーバがいるネットワークセグメントの

ポートグループを使用するつもりなので、DHCP を選択しています。

bde-res-setting-05.png

 

指定したネットワークは、

下記のように表示されるようになります。

bde-res-setting-06.png

 

Hadoop クラスタで利用するリソースプールの作成

 

BDE での Hadoop クラスタを作成先として

リソースプールを作成しておきます。

これは、BDE 独自のリソースではなく

普通に vSphere 環境で作成できる一般的な「リソースプール」のことです。

 

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

vSphere のクラスタに対して「新規リソースプール」を作成します。

bde-res-setting-07.png

 

今回のリソースプールには、リソースプール名だけ指定しておきます。

ちなみにリソースプールで CPU、メモリのリソース制御設定をした場合は、

BDE で作成する Hadoop クラスタにも反映されるはずです。

bde-res-setting-08.png

 

リソースプールが作成されました。

この時点では VM 等が何も含まれていません。

bde-res-setting-09.png

 

このあとは BDE での Hadoop クラスタ作成に続く・・・

vSphere で Hadoop してみる。BDE 第4回

前回につづき、

vSphere Big Data Extensions(BDE)をセットアップしていきます。

 

前回はこちら・・・

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

 

まずは、BDE の vApp を起動します。

bde-setup01.png

 

vApp に含まれる VM のうち、

BDE 管理サーバ(management-server)だけがパワーオンされます。

bde-setup02.png

 

management-server をコンソールで開くと

初期パスワードが表示されているので、

このまま Enter キーなどを押して serengeti ユーザでログインして

すぐ下に表示されているコマンドラインでパスワードを変更します。

※ちなみに、SSH で ログインしてパスワード変更することもできます。

bde-setup03.png

 

パスワード変更は、こんな感じです。

[serengeti@192 ~]$ sudo /opt/serengeti/sbin/set-password -u

New password: ★パスワードを入力する。

Retype password: ★もう一度パスワードを入力する。

[serengeti@192 ~]$

 

Web Client に BDE のプラグインを登録します。

下記の URL にアクセスすると、登録画面が表示されます。

    https://<management-server の IP アドレス>:8443/register-plugin/

 

「Install」を選択して、vCenter のアドレスと

vCenter にログインできる管理者ユーザ名 / パスワード を入力します。

 

「Big Data Extentions Package URL」の

IP アドレスの部分は、起動した BDE 管理サーバのものです。

 

入力したら「Submit」します。

bde-setup04.png

 

「Installation successful! ~」と表示されます。

bde-setup05.png

 

Web Client にログインしなおすと・・・

bde-setup06.png

 

BDE のプラグインが登録されています。

アイコンをクリックして、BDE の画面を開きます。

bde-setup07.png

 

BDE の管理サーバに接続します。

「Getting Start」のタブで

「Connect to a Serengeti Server」をクリックします。

※Serengeti Server は、BDE 管理サーバのことです。

bde-setup08.png

 

インベントリから、management-server を選択して「OK」をクリックします。

bde-setup09.png

 

証明書の警告が出ますが「OK」をクリックします。

bde-setup10.png

 

BDE 管理サーバが登録されて、

Big Data Cluster 作成などができるようになりました。

これで、GUI (この Web Client)から Hadoop クラスタがデプロイできるようになります。

bde-setup11.png

 

「Summary」タブでも、

BDE 管理サーバが登録されたことがわかります。

bde-setup12.png

 

ちなみに、BDE 管理サーバに SSH でログインすると

CLI で Hadoop クラスタをデプロイすることもできます。

 

日本語環境の都合でバックスラッシュが「\」になって

CLI ログイン時の serengeti のロゴがうまく表示できてませんが・・・

bde-setup13.png

 

以上、BDE のセットアップでした。まだつづく・・・

vSphere で Hadoop してみる。BDE 第3回

Hadoop 検証環境がほしくなり、

せっかくなので vSphere Big Data Extentions(BDE)を試してみようと思います。


vSphere Big Data Extensions

http://www.vmware.com/jp/products/big-data-extensions

 

BDE は、vSphere 環境で

Hadoop クラスタの自動プロビジョニングや VM 追加などができるソリューションです。

GUI(vSphere Web Client のプラグイン)と

CLI(serengeti)どちらでも、Hadoop 環境を構築できます。

ちなみに、これまで serengeti というプロジェクトで取り組まれていたもので

その名前が残っています。

 

この機能は、OVF 形式(.ova ファイル)で提供されていて、

vCenter から vApp としてデプロイできます。

 

BDE の vApp は、2つの VM を含みます。

この BDE で Hadoop クラスタを構成する場合は

検証目的でも Hadoop 環境にそこそこマシンスペックが高くないと厳しいと思いますが

この vApp 自体にはそんなにリソースを必要としません。

  • management-server
    Hadoop クラスタの自動プロビジョニングや、
    クラスタへのノード追加、自動削除をする、BDEの管理サーバです。
    SSH でログインして、CLI(serengeti という名前)を実行することもできます。
  • hadoop-template
    Hadoop 関連のサーバを自動構成する時に使用するテンプレート用 VM です
    vApp に含まれますが、普段は起動しない VM です。

 

それでは、BDE をデプロイしてみます。

今回は、vSphere 5.5 u1 の環境を使用しています。

 

まず、Web Client で vCenter にログインして、

インベントリのどこかに「OVF テンプレートのデプロイ」 をします。

vApp なので、一応 DRS クラスタにデプロイしています。

bde-deploy01.png

 

BDE の OVF ファイルを指定します。

  • VMware-BigDataExtensions-2.0.0.951-1885370_OVF10.ova

今回は、BDE 2.0 を使用しています。評価版は MyVMware からダウンロードできます。

bde-deploy02.png

 

BDE の vApp は、

シックプロビジョニングの場合、デプロイに 40GB 以上のディスク容量が必要です。

シン プロビジョニングであれば、10GB に収まるようです。(初期だと 7.6GB)

これとはべつに、Hadoop クラスタの容量が必要になります。

bde-deploy03.png

 

EULA を「承諾」して「次へ」をクリック。

bde-deploy04.png

 

vApp の名前を変更できます。デフォルトだと

「vSphere Big Data Extensions Server」です。

bde-deploy05.png

 

デプロイ先のデータストアを指定します。

今回は データストアの空き容量があまりなく、

検証環境なので、今回は「Thin Provision」(シン プロビジョニング)にしました。

bde-deploy06.png

 

BDE の vApp に含まれる、

管理サーバが使用するネットワーク(ポートグループ)を指定します。

Network 1 は IPv4、Network 2 は IPv6 で使用するようです。

bde-deploy07.png

 

BDE の管理サーバに対する設定を入力します。

  • 「Initialize Resources?」のチェックは ON にしておきます。
  • VCSSO(vCenter SSO)の Lookup Service の URL は、
    ホスト名の部分を VCSSOのアドレスに書き換えます。
    VCSSOは、だいたいvCenter と一緒だと思うので、
    ここでは、vCenter のアドレスを指定することが多いでしょう。
  • 参照する DNS サーバのアドレスもここで指定します。

まだこの画面で入力します・・・

bde-deploy08.png

 

管理サーバのネットワーク設定も入力します。

  • ネットワーク設定のタイプ(Static か、DHCP か)
  • IP アドレス
  • ネットマスク
  • デフォルトゲートウェイ

入力したら「次へ」。

bde-deploy09.png

 

ちなみに、上記の画面の「~ Network 2 Settings」では IPv6 の設定も出来ますが、

今回は IPv6 を使用しないのでデフォルトのままにしています。

bde-deploy10.png

 

「次へ」・・・

bde-deploy11.png

 

確認画面が表示されるので、内容を確認して「終了」すると

OVF のデプロイ処理が開始されます。

bde-deploy12.png

 

OVF のデプロイ処理が完了すると、

下記のように vApp が作成されています。

VM が 2つ含まれていることもわかります。

bde-deploy13.png

 

vApp を「パワーオン」します。

bde-deploy14.png

 

BDE の管理サーバ(management-server)だけ起動し

テンプレート用 VM(hadoop-template) は起動されません。

bde-deploy15.png

 

以上、BDE のデプロイでした。セットアップはつづく・・・

vSphere で Hadoop してみる。BDE 第2回


Log Insight と、

vCenter Operations Manager(VCOPS)が統合できるようなので

ためしに統合してみました。

 

VCOPS はバージョン 5.8.1 、

Log Insight は バージョン 2.0.3 です。

 

ちなみに VCOPS の admin UI を見ると、統合前は下記のように

「vCenter Log Insight は統合されていません。」 となっています。

vcops-logInsight01.png

 

Log Insight を VCOPS に統合する設定


VCOPS との統合は、Log Insight 側で設定します。

vcops-logInsight02.png

 

Log Insight の Web UI 画面右上から「Administration」を開きます。

vcops-logInsight03.png

 

右画面にある「vCenter Operations Manager」を開いて、

VCOPS のアドレスと、

標準 UI にログインできるユーザ(例では admin)とパスワードを入力します。

 

「Enable alerts integration」と

「Enable launch in context」は

どちらもチェックを ON にしておきます。


「Test Connection」をクリックして「Test successful」 になることを確認したら

「Save」します。

vcops-logInsight04.png


設定が終わるまで、数分待ちます。

vcops-logInsight05.png

 

設定が終わりました。

vcops-logInsight06.png

 

VCOPS と Log Insight が統合されたことを確認

 

VCOPS の admin UI で確認してみると・・・

vcops-logInsight07.png

 

「登録」タブの一番下に、

Log Insight サーバのアドレスが表示されるようになります。

vcops-logInsight08.png

 

VCOPS の標準 UI では、

「アクション」メニューに

「Search for Logs in vCenter Log Insight...」が追加されます。

これをクリックすると、VCOPS で選択されているオブジェクト

検索された状態の Log Insight が開かれます。

※下記の例だと、hv55n2.vmad.local という ESXi が検索された状態で表示されます。

vcops-logInsight09.png

 

VCOPS でアラートが検知されている場合は、

そのアラート(例では「vSphere HA detected ~」)を選択して

「外部アプリケーションで開く」ボタンをクリックしても

同様に Log Insight 開くことができます。

vcops-logInsight10.png

 

開かれる Log Insight は、こんな感じです。

「Interactive Analytics」画面が、

そのオブジェクトを検索した状態で表示されます。

表示された結果から、さらにログを絞り込んだりできます・・・

vcops-logInsight11.png

 

逆に、Log Insight が収集したログ内容をもとに

VCOPS にむけてアラート発報したりもできるようです。

 

こちらもどうぞ・・・

vCenter Log Insight のデプロイ。

vCenter Log Insight のデプロイの続き。

vCenter Log Insight に VC 追加登録。

 

以上、VCOPS と Log Insight を連携させてみる話でした。

以前、PowerCLI で vCenter の設定情報を取得するポストをしましたが・・・

vCenter 5.x の設定をPowerCLIで確認してみる


もっと、簡単なコマンドラインで取得できることに気づきました。

$global:DefaultVIServers と、Get-AdvancedSetting を使用します。

PowerCLI で接続中 vCenter の確認。($global:DefaultVIServers)

 

この1行だけでも、接続中 vCenter の設定情報が取得できます。

PowerCLI> $global:DefaultVIServers | Get-AdvancedSetting

 

最初に、vCenter に接続しておきます。

この例の環境では、独自の Active Directory を使用しているため

VMAD\Administrator というユーザで接続していますが、

administrator@vsphere.local (デフォルト管理者)などのユーザのほうが一般的かもしれません。

PowerCLI> Connect-VIServer vc55u1-1.vmad.local -User vmad\administrator -Password ******

 

Name                           Port  User

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

vc55u1-1.vmad.local            443   VMAD\Administrator

 

PowerCLI> $global:DefaultVIServers

 

Name                           Port  User

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

vc55u1-1.vmad.local            443   VMAD\Administrator


Get-AdvancedSetting では、下記のように情報取得できます。

※見やすくするために「select ~」も付けています。

PowerCLI> $global:DefaultVIServers | Get-AdvancedSetting | select Entity,Name,Value | ft -AutoSize

 

Entity              Name                            Value

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

vc55u1-1.vmad.local ads.checkInterval                1440

vc55u1-1.vmad.local ads.checkIntervalEnabled         True

vc55u1-1.vmad.local ads.maxFetch                     5000

vc55u1-1.vmad.local ads.maxFetchEnabled              True

vc55u1-1.vmad.local ads.timeout                        60

vc55u1-1.vmad.local AgentUpgrade.autoUpgradeAgents   True

vc55u1-1.vmad.local AgentUpgrade.checkPeriodSeconds    30

vc55u1-1.vmad.local alarms.upgraded                 False

vc55u1-1.vmad.local alarms.version                     30

vc55u1-1.vmad.local client.timeout.long               120

(以下省略)

 

設定項目が多いので、下記のように Export-Csv を使うと、

CSV ファイルに設定を保存できます。

※例では「C:\work\vc_advanced_setting.csv」というファイルに保存しています。

PowerCLI> $global:DefaultVIServers | Get-AdvancedSetting | select Entity,Name,Value,Description | Export-Csv -Encoding utf8 -NoTypeInformation -Path C:\work\vc_advanced_setting.csv

PowerCLI> cat C:\work\vc_advanced_setting.csv

"Entity","Name","Value","Description"

"vc55u1-1.vmad.local","ads.checkInterval","1440","User validation interval"

"vc55u1-1.vmad.local","ads.checkIntervalEnabled","True","Enable user validation"

"vc55u1-1.vmad.local","ads.maxFetch","5000","Maximum users to retrieve"

"vc55u1-1.vmad.local","ads.maxFetchEnabled","True","Enable user retrieve limits"

"vc55u1-1.vmad.local","ads.timeout","60","User retrieve timeout"

"vc55u1-1.vmad.local","AgentUpgrade.autoUpgradeAgents","True","vCenter Agent Upgrade"

"vc55u1-1.vmad.local","AgentUpgrade.checkPeriodSeconds","30","Host upgrade check frequency"

"vc55u1-1.vmad.local","alarms.upgraded","False","Default alarms have been created"

"vc55u1-1.vmad.local","alarms.version","30","Default alarm upgrade version"

(以下省略)


下記のように、個別のパラメータだけに絞って

確認したい設定項目だけを表示することもできます。

PowerCLI> $global:DefaultVIServers | Get-AdvancedSetting | select Entity,Name,Value,Description | where {$_.Name -like "event.*"} | ft -AutoSize

 

Entity              Name                Value Description

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

vc55u1-1.vmad.local event.maxAge          180 Maximum event age

vc55u1-1.vmad.local event.maxAgeEnabled False Enable event cleanup

 

PowerCLI> $global:DefaultVIServers | Get-AdvancedSetting | select Entity,Name,Value,Description | where {$_.Name -eq "event.maxAge"} | ft -AutoSize

 

Entity              Name         Value Description

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

vc55u1-1.vmad.local event.maxAge   180 Maximum event age

 

ちなみに、今回も PowerCLI バージョンは 5.5 R2 でした。

PowerCLI> $version.UserFriendlyVersion

VMware vSphere PowerCLI 5.5 Release 2 build 1671586

 

以上です。PowerCLI での vCenter 設定情報取得についてでした。

PowerCLI で、接続中の vCenter を確認したいことがあります。


実は $global:DefaultVIServer、$global:DefaultVIServers

という変数に、接続中 vCenter が含まれまれるので

それを参照するとよいのではないかと思いました。

 

まず、PowerCLI で vCenter に接続しておきます。

今回は、2台の vCenter に接続します。

 

※複数 vCenter への接続については下記もどうぞ。

PowerCLI から複数の vCenter に接続する方法。

PowerCLI> Connect-VIServer vc55u1-1.vmad.local, vc55u1-2.vmad.local

 

Name                           Port  User

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

vc55u1-1.vmad.local            443   VMAD\Administrator

vc55u1-2.vmad.local            443   VMAD\Administrator

 

このような感じで、何らかのオブジェクトの UID で

確認もできるのですが、結構微妙な感じです。

PowerCLI> Get-Datacenter | select Uid -Unique

 

Uid

---

/VIServer=vmad\administrator@vc55u1-1.vmad.local:443/Datacenter=Datacenter-datacenter-21/

/VIServer=vmad\administrator@vc55u1-2.vmad.local:443/Datacenter=Datacenter-datacenter-2/

 

PowerCLI> Get-Datacenter | select @{N="VIServer";E={$_.Uid -replace ".*@|:443.*",""}} -Unique

 

VIServer

--------

vc55u1-1.vmad.local

vc55u1-2.vmad.local

 

そんなとき

上記よりよさそうな確認方法を見つけました。

 

では、$global:DefaultVIServer と $global:DefaultVIServers

という変数を見てみます。

接続中の vCenter 情報が入っていて、

$global:DefaultVIServers の方が複数 vCenter に接続した時も使えて便利そうです。

PowerCLI> $global:DefaultVIServer

 

Name                           Port  User

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

vc55u1-2.vmad.local            443   VMAD\Administrator

 

PowerCLI> $global:DefaultVIServers

 

Name                           Port  User

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

vc55u1-2.vmad.local            443   VMAD\Administrator

vc55u1-1.vmad.local            443   VMAD\Administrator

 

下記のようなコマンドラインで、接続中の vCenter が確認できます。

2台の vCenter 5.5 に接続していることがわかります。

PowerCLI> $global:DefaultVIServers | select Name,IsConnected,Version,Build | ft -AutoSize

 

Name                IsConnected Version Build

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

vc55u1-2.vmad.local        True 5.5     1623101

vc55u1-1.vmad.local        True 5.5     1623101

 

ちなみに、ESXi にも PowerCLI 接続した場合も、

ちゃんと見分けることができます。

ためしに、ESXi 5.1 u1 に追加接続してみました。

PowerCLI> Connect-VIServer hv51-opt1.gowatana.lab

Name                           Port  User

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

hv51-opt1.gowatana.lab         443   root

 

ProductLine が

vpx だと vCenter で、embeddedEsx だと ESXi です。

PowerCLI> $global:DefaultVIServers | select Name,IsConnected,ProductLine,Version,Build | ft -AutoSize

 

Name                   IsConnected ProductLine Version Build

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

hv51-opt1.gowatana.lab        True embeddedEsx 5.1     1065491

vc55u1-2.vmad.local           True vpx         5.5     1623101

vc55u1-1.vmad.local           True vpx         5.5     1623101

 

作業手順書とかで「接続している vCenter が正しいことを確認して~」

みたいなときに便利そうな気がしました。

 

ちなみに、今回試した PowerCLI のバージョンはこれです。

PowerCLI> $version.UserFriendlyVersion

VMware vSphere PowerCLI 5.5 Release 2 build 1671586

 

以上、PowerCLI で接続中 vCenter を確認する方法でした。