SyntaxHighlighter

2012年6月24日日曜日

Cascading使ってみた

久々の更新になってしまった。前回Google App Engine Pipeline APIを紹介したが、
その中でCascadingというキーワードが出てきたと思う。
今回はずっと気になっていたCascadingとやらHadoopの関連プロジェクトについて触れてみたい。
ただWordCountをやってみるのはもう飽きたのでw
今回はより実用的にApacheログの解析をやってみたい。

下記のログファイルを解析に使う。



Cascadingアプリケーションのソースは下記


処理の内容について、細かく説明するのはまた次回以降。(まだ調査、勉強中です。。)
大まかに処理の流れを追うと入力データ(ソース)から必要な部分を抽出し、
"ip", "time", "method", "event", "status", "size"という項目をもつタプル(データベースの行やレコードとよく似ている)に整形する。
更に"ip","event"でグループ化、カウントを行い出力データ(シンク)を生成する。

今回は疑似分散環境で動作させてみる。

結果はこのとおり

"ip", "event"でグループ化され、カウントを算出できている。(※単純にIPアドレス毎のアクセス数)
今回のサンプルのようにログやWebクロールした結果などをパースしたりフィルタリングを行い、出力されたデータを使って、例えばMahoutの入力データにするなど面白いかもしれない。
今回はSubAssembly(再利用可能なパイプ)やCascade(複数のFlowを連結する)などCascadingにおいて特徴的とも言える柔軟性を利用しなかったが、今後それらについても調査し、紹介したいと思っている。
次回は、最近興味を持っている機械学習のエントリでもしてみるかな。