Hadoop Conference Japan 2013 Winterの午後2(会場:1B)『AZAREA-Cluster HadoopアプリケーションをGUIで簡単に開発』のメモです。
講演者はCACの田中 等さん。(→資料)
CACは従業員数1300人くらいの会社で、信託銀行や製薬系に強いのだそうだ。
AZAREA-ClusterはAZAREAソリューションファミリー(ウェブ系とか)の一つという位置付け。
なぜAZAREA-Clusterを作ったかというと、
1.もともと業務システムのバッチ処理を開発していたが、パフォーマンス面で苦労することもあった
2.Hadoopを検証してみたところ、速度面では問題なさそう
3.しかしアプリケーション開発(生MapReduce)の難易度は高い
(Pig/Hiveは複雑なバッチは無理(SQLだけで業務バッチを作れないのと同様))
→自前でフレームワークを作ろう!
フレームワークの方針としては、「Hadoopにより分散アプリケーションの開発は簡単になったが、大多数の開発者にとっては難しい」ので、
○業務システム開発に近づける
・OSはWindows(Linuxにも対応)
・Java(CACではJavaや.NETが主流)
・JavaなのでEclipse(コマンドラインは使わない)
○シミュレーターを用意する
・HadoopをインストールしなくてもEclipse上でデバッグ可能
AZAREAの用語は以下の通り。
・エンティティ: データを表す
・処理: エンティティを入力してエンティティを出力する(変換や結合・集計・ソート)
・アプリケーション: エンティティの処理フロー
Excelでエンティティを定義し、エンティティクラスを生成することが出来る。
EclipseのASTParserを利用してJavaソースを解析している。(Javaソース以外では情報は保持しない)
図のSVG出力機能にはApache Batikを使用している。
AZAREAは、元々はGUIは無く、全て手でコーディングする前提だったそうだ。
ソースの構造を解析してフロー図を表示する機能を追加し、さらに拡張して編集も出来るようにした。
以下、各処理の詳細について少し。
○結合
入力が大きい場合はReducer、小さい場合はMapperで処理される。
フレームワークがファイルサイズを見て判断する。
(シミュレーターでは想定サイズを入力することが出来るので、MapReduce(実行計画)の図もそれに応じて変わる)
○グループ化集計
Combinerはオーバーヘッドが大きいようなので、デフォルトでは使っていない。
(ちなみに、次のLTでCombinerのオーバーヘッドを減らす話が出ていたw)
○処理最適化
複数の処理が1つのMapper/Reducerに割り当てられることがある。(一般的に、ジョブ数が少なくなる方が全体として速くなる為)
バージョン0.9.1は0.9.0より若干改善されている。
なお、0.9.1は1/18(3日前やんけw 知らんかった^^;)に公開された。
あと、何度かライブコーディングをやっていた。自分は0.9.0評価版を試してみたのだが、ここが不便と思った箇所がけっこう改善されていたのでびっくり(笑)
・フローの箱の座標がアノテーションに記述されている
・処理に「表示名」が入力できるようになっている
・処理をダブルクリックすると該当ソースへ移動する
・フローの箱を範囲選択してまとめて移動できる
・Hadoopジョブのカウンターに「表示名」も表示されている
なんて素早い対応!