halookで始めるHadoop/HBaseトラブルシューティング

第2回 halookのセットアップ

この記事を読むのに必要な時間:およそ 4 分

第2回では,第1回で紹介したhalookのセットアップ方法を紹介します。これにより,HDFSの使用状況,MapReduceジョブの実行状況,HBaseの情報を可視化できるようになります。なお,halookの最新版はこちらからダウンロードできます。

また,設定手順はこちらにあります。

この記事では,各コンポーネントの説明を加えながら,実際にセットアップする様子を追っていきます。

halookの構成

セットアップの前に,halookの構成と仕組みについて簡単に説明します。まず,halookを構成する要素は次の3つです。

1.HalookJavelin

NameNode, JobTracker, HBaseMasterに適用するエージェントです。可視化のためのデータを収集して次のDataCollectorに渡します。

動作環境:Hadoop/HBaseの動作環境(Linux)に準じます

2.DataCollector

HalookJavelinから受け取ったデータをDB(PostgreSQL)に書き込みます。また同時に,次のHalookDashboardがリアルタイム描画を実現するためのデータ中継を行います。

  • 動作環境:WindowsまたはLinux,Java5以降,PostgreSQL 9.1以降

3.HalookDashboard

Webブラウザからのアクセスで可視化画面を表示するためのWebアプリケーションです。Tomcat上で動作します。

  • 動作環境:WindowsまたはLinux,Java6以降,Tomcat 7.0.29 以降

ちなみにhalookは,Javaシステムの可視化・診断ツールであるENdoSnipeのプラグインとして開発されています。ENdoSnipeは,Acroquest Technology株式会社が,Javaシステムの障害解決コンサルティングサービス(JaTS)のノウハウを基に開発した製品ですが,halookの公開と同時にOSS化されました。このENdoSnipeが元々,Javelin―DataCollector―WebDashboardという構成をしており,それぞれが,収集―保存―表示の役割を持っています。

データの収集部分と,表示部分にHadoopやHBase用の機能を追加したものが,halookです。取得するデータの追加や,新しいビューの作成が,統一的な枠組みの中で実現可能になっているため,今後はhalookの機能追加だけでなく,他のOSSに対する可視化ツールの開発も予定されています。

halookのセットアップ

それではいよいよ,halookをセットアップしてみましょう。今回は,以下のマシン構成を例に,セットアップ手順を紹介します。

①Hadoopマスターサーバ

CDH3u5のNameNode, JobTracker, HBaseMasterが全てこのサーバ上で動いているとします。HalookJavelinを設定します。

②データ収集サーバ

次に,データを収集するDataCollectorの設定を行います。①でHalookJavelinはすでに起動しているので,DataCollectorを起動するとすぐにDB へのデータ蓄積が始まります。

ここではPostgreSQL 9.2がインストールされているとし,DataCollectorを設定します。

③Web APサーバ

Tomcat 7.0 がインストールされているとします。HalookDashboardを設定します。

こちらの構成は例ですので,NameNode, JobTracker, HBaseMasterが別々のサーバで動いている場合,データ収集サーバとWebAPサーバが同じサーバで動いている場合などは,適宜設定内容を読み替えてください。

セットアップに必要な資材は,こちらからダウンロードすることができます。

必要なのは,以下の3つです。

  1. HalookJavelinFull_5.0.2.zip
  2. endosnipe-datacollector-5.0.2.tar.gz
  3. HalookDashboard.war

なお,DataCollectorをWindows上で動かす場合は,2の代わりに

  • endosnipe-datacollector-5.0.2.zip

を使ってください。

①Hadoopマスターサーバの設定

まず,HalookJavelinFull_5.0.2.zip を任意のディレクトリに展開します。ここでは,/opt/ENdoSnipe の下に展開したものと仮定します。配置後,設定ファイルを編集します。設定するのは,データを送る先のDataCollectorが動くサーバのホスト名と,監視対象のHadoop/HBaseクラスタ名です。

設定ファイルは,(HalookJavelinインストールディレクトリ)/conf/javelin.propertiesになります。

環境に合わせて変更が必要な項目

javelin.connectHost=(Datacollectorのホスト名)
javelin.clusterName=mycluster

javelin.clusterNameは,デフォルト値が「default」となっていますが,必ず変更する必要があります。ここでは,⁠mycluster」と設定します。設定した名前が,画面表示の際に使われます。また,このクラスタ名を変えることにより,複数のクラスタを同時に監視することができます。

次に,NameNode, JobTracker, HBaseMasterが同じマシン上で動いているときは,それぞれのHalookJavelinインストールディレクトリを分ける必要があるので,ディレクトリごとコピーします。また,Javelin実行時のログ出力の関係上,NameNode用のHalookJavelinインストールディレクトリはhdfsユーザに,JobTracker用はmapredユーザに,HBaseMaster用はhbaseユーザに,オーナーを変更しておきます。NameNode, JobTracker, HBaseMasterが別々のマシン上で動いているときは,ディレクトリ名の変更は必要ありません。オーナーの変更のみが必要です。

# cd /opt/ENdoSnipe
# cp -rp HalookJavelin HalookJavelin_NN
# cp -rp HalookJavelin HalookJavelin_JT
# mv HalookJavelin HalookJavelin_HM
# chown -R hdfs:hdfs  HalookJavelin_NN
# chown -R mapred:mapred HalookJavelin_JT
# chown -R hbase:hbase HalookJavelin_HM

続いて,/etc/hadoop/conf/hadoop-env.shと /etc/hbase/conf/hbase-env.shを編集し,NameNode,JobTracker,HBaseMasterの起動時に,HalookJavelinが適用されるようにします。NameNode,JobTrackerについては,
「export HADOOP_NAMENODE_OPTS=……」
「export HADOOP_JOBTRACKER_OPTS=……」の部分に,-javaagentオプションを加えて,HalookJavelinがJavaプロセス起動時にロードされるようにします。

/etc/hadoop/conf/hadoop-env.sh

export HADOOP_NAMENODE_OPTS="-javaagent:/opt/ENdoSnipe/HalookJavelin_NN/lib/halookJavelin.jar -Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"
export HADOOP_JOBTRACKER_OPTS="-javaagent:/opt/ENdoSnipe/HalookJavelin_JT/lib/halookJavelin.jar -Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS"

HBaseMasterについては,-javaagentオプションを加えて,HalookJavelinがJavaプロセス起動時にロードされるように,以下の1行をファイル中に追加します。

/etc/hadoop/conf/hadoop-env.sh

export HBASE_MASTER_OPTS="-javaagent:/opt/ENdoSnipe/HalookJavelin_HM/lib/halookJavelin.jar"

最後に,NameNode,JobTracker,HBaseMasterを再起動すれば,HalookJavelinの適用は完了です。

著者プロフィール

落合雄介(おちあいゆうすけ)

Acroquest Technology株式会社 オブジェクトフレームワークディヴィジョン エンジニアリングクリエーター

http://www.acroquest.co.jp/

コメント

コメントの記入