鉄扇の紹介
Serengetiでは、最も重要でクリティカルな機能が2つあります。1つは仮想マシン管理で、vCenterでHadoopクラスタを作成して必要な仮想マシンを管理します。もう1つはクラスタソフトウェアのインストールと構成管理で、オペレーティングシステムで仮想マシンにHadoopコンポーネントをインストールし、構成ファイルを更新して、Hadoopサービスを開始します。IronfanはSerengetiのクラスタソフトウェアのインストールと構成管理コンポーネントを担当しています。
Ironfanは、PuppetやCFEngineに似たオープンソースのシステム構成管理ツールであるChefをベースとしたクラスタソフトウェアのデプロイと構成管理ツールです。Chefは、基本的なオペレーティングシステムがインストールされたマシンに任意のソフトウェアをインストールして構成したり、システム自体を構成したりするための使いやすいDSL(Domain Specific Language)言語のセットを定義しています。ChefのフレームワークとAPIをベースにしたIronfanは、コマンドラインツールのクラスタの自動デプロイと管理を使いやすくします。 Ironfanは、Zookeeper、Hadoop、HBaseクラスタのデプロイをサポートしています。
アイアンファン建築
以下の図はIronfanのアーキテクチャを示しており、主にCluster OrchestrationEngine、VM Provisioning Engine、SoftwareProvision Engine、そしてデータを保存するためのChef ServerとPackage Serverで構成されています。
-ClusterOrchestration Engine: Ironfanのマスターコントローラで、クラスタ定義ファイルの読み込みと解析、仮想マシンの作成、ChefServerへのクラスタ設定情報の保存、Chef REST APIを呼び出して各仮想マシンに対応するChefNodeとChef Clientの作成、各仮想マシンのChefRoleの設定を担当します。各仮想マシンの ChefRole。
SoftwareProvision Engine: あらかじめ仮想マシンに作成されたデフォルトのユーザ名とパスワードを使って、SSHリモートですべての仮想マシンにログインし、同時にソフトウェアをインストールするためにchef-clientを起動します。chef-clientはChefフレームワークのエージェントで、実行中のノードでChef Roleによってあらかじめ指定されたインストールと設定のスクリプトを実行します。chef-clientは実行の進捗データもChef Serverに保存します。
-PackageServer:必要なHadoopおよびその他のHadoop依存のインストールパッケージを保存するために使用します。
IronfanはKnife CLIのコマンドラインインターフェイスを外部に提供し、その呼び出し元はKnife CLIを呼び出すための別プロセスを作成し、そのプロセスの終了ステータス値によって成否を判断します。特定のクラスタノードのデータと実行進捗情報は、呼び出し元がいつでもChefServerから取得できます。
アイアンファンナイフCLI
SerengetiCLIの各クラスタコマンドは、IronfanKnife CLIコマンドに対応しています。create、list (view cluster)、config (configure cluster)、stop (stop cluster)、start (start cluster)、delete (delete cluster)などです。
clustercreate => knife クラスタの作成
clusterlist => knife cluster show
clusterconfig => knife クラスターブートストラップ
clusterstop => ナイフクラスターストップ
clusterstart => ナイフクラスタ開始
clusterdelete => knife cluster kill
ここで、パラメータ/opt/serengeti/logs/task/は
Ironfancluster定義ファイル
次に、Ironfanがクラスタを定義する方法を見てみましょう。これはIronfanが定義したDSL言語でクラスタの構成を記述したRubyファイルで、3つの仮想グループを定義しています。これらのファセットはそれぞれ、同じソフトウェアがインストールされた複数の仮想マシンを含む仮想グループを定義します。各グループのノード数はインスタンスで指定し、VMにインストールするソフトウェアはロールで指定します。ロールは Chef で定義されたロールです。
シェフの役割と料理本
Chef Cookbook ファイルは /opt/serengeti/cookbooks/cookbooks/ に格納されています。
name 'hadoop_namenode'
説明 '完全に分散モードでネームノードを実行します。 クラスタごとに正確に1つ存在する必要があります'
run_list %w[
role[hadoop] # ロールは別のロールへの参照を含むことができます。
hadoop_cluster::namenode # hadoop_clusterはクックブックで、namenodeはこのクックブックのレシピです。
]
開発者がデバッグ・ロールとクッキーを修正する必要がある場合、ロールとクッキーは、ロールとクッキー・ファイルを修正した後に以下のコマンドを実行することでアップロードできます。
knife role from file/opt/serengeti/cookbooks/roles/.
knifecookbookアップロード
クラスタサービスの発見
例えば、DatanodeサービスはNamenodeサービスの起動後に、 TasktrackerサービスはJobtrackerサービスの起動後に起動する必要があります。Ironfanはcluster_service_discoveryというCookiebookを使って関連するノードを同期させます。
例えば、Zookeeperノードはお互いを待ち、HBaseノードはZookeeperノードを待ちます。メソッド呼び出しの詳細については、cluster_service_discovery、zookeeper、hadoop、hbase cookbookのソースコードを参照してください。
vSphere Big Data Extensionsについて。
VMware vSphere Big Data Extensions(BDE)は、vSphereプラットフォームをベースとしたビッグデータとApache Hadoopの運用をサポートします。オープンソースのSerengetiプロジェクトをベースとしたBDEは、vSphere上でApache Hadoopを仮想化することで、インフラストラクチャ上でのビッグデータの柔軟性、回復力、安全性、および高速な展開と管理を実現する一連の統合管理ツールをエンタープライズユーザに提供します。vSphere 上の Apache Hadoop を仮想化することで、インフラストラクチャ上での柔軟性、回復力、安全性、および高速なビッグ データの展開、運用、管理を実現します。VMware vSphere Big Data Extensions の詳細については、http://.../をご覧ください。



