HudsonクラスタをHadoopクラスタに

仕事では30-40ノード位のHudsonクラスタを運用しているのですが、常々、このクラスタをもっと多用途に使えたら便利だと思っていました。


HadoopHadoop推奨の方法でインストールしてもよいのですが、ネットワークの情報等をHudsonとHadoopに別々に教えないといけないのは不便です。そこで、週末を2つ使って、HudsonクラスタHadoopを展開するためのプラグインを書きました。Hadoopのコードを読むのに少し手間取りましたが、一度肝を掴んでからは比較的簡単でした。


このプラグインをインストールすると、Hudsonのクラスタ全域でHadoopノードが実行され、またネットワークの設定に関する情報が自動的にHudsonからHadoopへ伝えられます。ユーザーは、HadoopプラグインをHudsonにインストールする以外にはやることはなにもありません。いわゆる「zero conf」というやつです。


Hadoopはインストールの単純化ということにはあまり注意を払っていないようで面倒なのですが、このプラグインを使うことで、HudsonユーザーにとってはHadoopの敷居がぐんと下がると思います。Hadoopで遊んでみたかったけど機会がなかった、という方はぜひ試してみてください。


以下は、このプラグインをインストールした時にHudsonに表示される追加UIです。手元のコンピュータにインストールしたHadoopクライアントにこの接続情報をコピペするだけで使えるという親切設計。これ、Hudson/Hadoopクラスタ上でHadoopジョブを実行できます。




僕自身は、当面はこれを使ってjava.netのアクセスログの解析をやろうと思っていますが、将来的にはHudsonからもこれが利用できるとより便利になりそうです。例えば、テストの出力結果をHDFSに保存してデータマイニングをやったりとか、あるいは単純にHudsonのデータストレージとして利用したり、更にはJUnitの拡張でHadoop上でテストを実行なんていうのはどうでしょうか。