2012年11月30日

HadoopOperationsのメモ4

※以下はHadoopOperationsを読んで自分なりに理解をしたことをかいていますので、
誤りを含んでいることがあります。もちろん、意図することではありません。。。。
本文内の英文はHadoopOperationsの抜粋です。

第3章のMapReduceに入って15ページくらい読みました。
なかなか時間がとれておらず進捗悪いです。

第3章、ここまでは、あまり特筆すべきことはありません。

MapReduceのプログラムを書いたことがある人なら、
知っているであろう(べき)ことが説明されていました。
フレームワークの説明、InputFormatやMap、Sortの説明などなど。
以前読んだ、Hadoop徹底入門などにも書いてあったことです。

途中、ログファイル解析を例として、MapReduceの疑似コードを使った解説があります。
疑似といっても、ほぼJavaなのでとてもイメージがしやすいと感じました。
これは、同じくオライリーの「MapReduceデザインパターン」より分かりやすいと思います。


今回はこのあたりまでとします。
posted by Thoughter at 22:24| Comment(0) | TrackBack(0) | Hadoop | このブログの読者になる | 更新情報をチェックする

2012年11月29日

MultipleOutputsを試す その3

まだ続くのかと思われる内容。
あくまで技術メモということで。

前回の最後に、
既に各ファイルのカウントは出来ているわけで、最後に全ファイルのカウントを加算したものを、
REDUCE_OUTPUT_RECORDSに設定してやれば良いのではないかと考える。
と書いた。

試した結論から書くと、それでうまくできることが分かった。
そもそもカウントされないのが正しいのだろうか、という疑問はあるが。

方法としては、Reducerのcleanupメソッドをオーバーライドして、そこに書いてやればいい。
MultipliOutputsを使用している時点で、おそらくオーバーライドしていると思うので、
そこにコードを追加する形になる。
前回は、1インクリメントしていたところを、MultipleOutputsのカウンタ分を加算するようにする。

for(Counter c : job.getCounters().getGroup(MultipleOutpus.class.getName())){
   context.getCounter(Task.Counter.class.getName(), "REDUCE_OUTPUT_RECORDS").increment(c.getValue());
}
}

のようなイメージだ。
cleanupは、Mapタスクが複数生成されていても、ただ1度しか実行されない。
なので、MultipleOutputsのカウンタを全て加算してしまうことが必要。

これなら、まだ見せられるかな〜


もはや、完全にMultipleOutputsの使い方というより、
カウンタの使い方に寄ってしまっている。。。

このシリーズはこれで完結とします。
posted by Thoughter at 21:51| Comment(0) | TrackBack(0) | Hadoop | このブログの読者になる | 更新情報をチェックする

2012年11月25日

HadoopOperationsのメモ3

徐々にスピードアップしながら読み進め中です。

※以下はHadoopOperationsを読んで自分なりに理解をしたことをかいていますので、
誤りを含んでいることがあります。もちろん、意図することではありません。。。。
本文内の英文はHadoopOperationsの抜粋です。

●第2章49ページ
FUSEについての説明。
HadoopもCDHも共にFUSE HDFSをサポートしている。
これはHDFSをマウントできるようにする仕組みである。
例えば、リモートのHDFSをローカルにマウント。

とはいえ、ファイルを修正できないことや、ランダムアクセスに弱いこと、
といった弱点もある。

参考:http://blog.kirie.net/linux/hadoop/336.html

●第2章50ページ
Hadoopバージョン1、CDH4では、WebHDFSが標準搭載されている。

WebHDFS makes use of the already embedded web server in each Hadoop HDFS deamon to run a set of REST APIs that of the Java FileSystem API, including read and write methods.

試してみたところ、
確かに、RESTのURI部分の指定がJavaのAPIに似ている。
そして、ファイルやディレクトリの読み書きができる。非常に簡単だ。
ただし、JavaAPIの全てを網羅しているわけではない。そこは仕様書を参照。

そのあとで、WebHDFSとHttpFsについて対比があり、
どちらも同じ機能を持つが実現方式が異なるため、スループットやネットワーク設計などを鑑みて、
方式を選択する必要がある、と締めくくられている。

違いについては以下サイトがとても分かりやすいです。
http://d.hatena.ne.jp/tagomoris/20120102/1325466102


次回からは第3章MapReduceに突入します。
posted by Thoughter at 11:56| Comment(1) | TrackBack(0) | Hadoop | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。