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

第1回 halookでHadoop/HBaseを可視化しよう

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

MapReduce Jobを時系列に表示する

続いて,MapReduce Jobガントチャートです図3)⁠名前のとおり,MapReduce Jobの一覧を,ガントチャートで表示します。Hadoopの標準のWebUIだと,表形式で一覧化されるだけなので,たとえば「処理時間の長かったJobはどれか」というのもすぐにはわかりません。このように,Jobの開始時刻と終了時刻を線で表現することによって,時間のかかったJobがわかるようになり,同時に複数のJobが実行されている様子も把握できるようになります。

図3 MapReduce Jobガントチャート

図3 MapReduce Jobガントチャート

MapReduceのタスク実行状況を表示する

MapReduce Jobの一覧画面で,どれかのJobを選択すると表示される画面です。MapReduce Jobの実行内容を,Map TaskとReduce Taskを矢印で表現することで詳細に表します。時系列にソートしたり,Taskの実行ホストごとにソートしたりすることができるため,時系列にソートすれば処理の進む様子を視覚的に追うことができ,ホストごとにソートすれば各ノード上での実行状況を把握することができます。特定のノードで,Taskの失敗が集中していることや,他のノードより処理時間が長くなっていることがわかれば,ノードを切り離して調査するなどの対策を取ることができます。また,画面の下の方に表示されているグラフは,同時に実行しているTask数を表します。

たとえば,Jobの実行時間が長くなっている原因を調べる際に,このグラフによりTaskの同時実行数が少なくなっている時間帯があることがわかれば,⁠遅くなった原因は,同時に実行された他のJobによりTaskの実行数が制限されたから」と結論付けることが可能になります。

図4 MapReduce Taskを矢印で表示

図4 MapReduce Taskを矢印で表示

MapReduce Jobの特性を現すグラフを表示する

MapReduce Jobの特性を把握するのに便利なグラフを表示します。とくに,Map TaskとReduce Taskの数が多いときに効果を発揮します。横軸がTaskの開始時間もしくは終了時間,縦軸がTaskの実行時間です。このグラフにより,Taskの処理時間のばらつきを把握することができます。たとえば,Map Taskの処理時間が長いものと短いものがあれば,どこか特定のサーバで問題が発生し,処理に時間がかかるようになっているのではないか,などを疑うことになります。Reduce Taskの中に極端に処理時間の長いものがあれば,Partitionerの設定やMapperの実装見直しでJob全体の処理時間が短くなる可能性があると考えることもできます。

また,失敗したTaskの傾向も把握できます。たとえば,同じ処理時間で失敗するTaskが多ければ,Timeoutによる失敗を疑うことができます。うまく活用すれば便利なグラフです。

図5 MapReduce Jobの特性を現すグラフ

図5 MapReduce Jobの特性を現すグラフ

HBaseのRegion数の推移を表示する

HBaseのRegion数の推移を表したグラフで,HBaseクラスタの成長の様子を把握することができます。Region数の増加は,予想外の動きを示すことがあるので注意が必要です。HBaseに一定のペースでデータを書き込み続けた場合,RegionのSplitを自動に任せると,Splitのタイミングが集中し,グラフが階段状になる場合があります。

HBaseのRegionは,デフォルトでは256Mバイトに達すると,128MバイトのRegionに2分割されます。そのため,すべてのRegionに均等に書き込みが発生するケースでは,すべてのRegionのSplitが同時期に起こり,しばらくSplitが起こらない状態が続いたあと,ほぼ同時にすべてのRegionのサイズが256Mバイトに達し,Splitのタイミングがまた集中します。Splitにはコストがかかるので,Splitが集中するタイミングでパフォーマンスが低下する可能性があります。こういったことも,グラフ化することによって把握することができ,事前に手を打つことができます。

図6 HBaseのRegion数の推移グラフ

図6 HBaseのRegion数の推移グラフ

HBaseのRegion分布を表示する

HBaseのRegionの分布をサーバごとに表示します。グラフがテーブルごとに色分けされており,合計したRegion数の分布だけでなく,テーブルごとのRegion数の分布もわかるようになっています。Region数は各サーバで均等になっていても,テーブルごとのRegion数には偏りがあるかもしれません。この場合,テーブルへのデータ書き込みが分散せず,パフォーマンスが低下します。そのような状況がグラフ化でわかるようになります。

図7 HBaseのRegion分布グラフ

図7 HBaseのRegion分布グラフ

他のアプリケーションと合わせて監視する

halookはENdoSnipeのプラグインとして開発されたため,Hadoopの監視をしながら,同時に他のJavaシステムを監視することもできます。このは,2つのHadoopクラスタとフロントエンドのWebアプリケーションを同時に監視した場合の,ツリー表示のメニュー部分を表示したものです。

図8 Webアプリケーションと合わせて監視する

図8 Webアプリケーションと合わせて監視する

今回はここまでです。なお,今回紹介したhalookの機能は,次の動画で見ることができますので,もしよければご覧ください。次回,halookの適用方法と使用例を紹介します。

halookデモ(1) 機能紹介 - Hadoop Conference Japan 2013 Winter
http://youtu.be/rH16eS2_SJ8
halook
https://github.com/endosnipe/halook

著者プロフィール

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

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

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

コメント

コメントの記入