前回(http://d.hatena.ne.jp/lopnor/20080831/1220183688)サンプルプログラムを動かすところまで行きましたけど、今回は例のid:naoyaのhadoop streamingでアクセス解析(http://d.hatena.ne.jp/naoya/20080513/1210684438)するのをやってみます。というかなんとかたどり着いたのでまとめを書きます。
*ec2の使い方
id:rx7さんがとても丁寧に説明されている資料(http://d.hatena.ne.jp/rx7/20080528/p1)があるので、そちらを読めば完璧だと思います。僕もこれでec2が使えるようになりました。
*hadoop-ec2の使い方
https://codezine.jp/article/detail/2841がイントロダクション。http://d.hatena.ne.jp/lopnor/20080831/1220183688は超適当なまとめ。あんまり参考にならないかも。http://wiki.apache.org/hadoop/AmazonEC2が本家まとめ。ここまででサンプルプログラムの円周率の計算ができるようになるはず。
- hadoop streamingの説明
http://d.hatena.ne.jp/naoya/20080513/1210684438とhttp://d.hatena.ne.jp/naoya/20080531/1212245982の先にあるpptをぜひ。実はpptまでいって初めていろいろわかったことがあったので、ぜひ。
- ということで、hadoop streaming on ec2
まず、適当にアクセスログを用意します。
つぎに、例のperlスクリプトmapper.pl、reducer.plを書きます。
ローカルで実行してみましょう
という感じでステータスコードが数えられました。ではこれと同じことをhadoopでやってみましょう。作業ディレクトリは現状こんな感じ。
hadoop-ec2でクラスタを起動する前に、hadoop-ec2-env.shをいじっておきます。下記部分のCOMPRESS=trueのところを、COMPRESS=falseにしておいてください。trueのままでやると、結果ファイルが圧縮されてしまって、元に戻す方法をまだ僕は知らないのです><
で、以下のようにして”hadoop-test”という名前のクラスタをワーカー2台で起動。
処理に必要なファイルをファイルをマスタマシンに転送します。
1ファイルずつかいっ!という感じですが。いよいよマスタにログイン。
ログインしました。lsしてみると、さっき転送したファイルがありますね。
今度は、access_logを分散ファイルシステムに突っ込みます。
なんかワーニングが出るんですけど、気にしない!
こんな感じで、分散ファイルシステム側にファイルが置けました。では、いざ処理を実行してみましょう。
ここで、-fileというオプションが二つ渡されていますが、この指定をしておくと、実行するperlスクリプトが処理時に各ワーカーに転送されます。ですので、各ワーカーにいちいちインストールしなくてもいいので、今回みたいなec2のデフォルトのイメージでポイッと処理することができます。
で、結果を見てみると、
つうことで、できたーーーーー!!コマンドラインで一瞬だったのにこっちはえらい時間がかかりましたな。ということで、やっぱり大量のデータでないとうまみはないですね。でも大量のデータだとものごっついおいしいです。これでやっと入門編が終わったので、これから実用的な使い方を考えていこうと思います。
あ、最後に
としてクラスタを終了させておしまいです。