大規模分散技術勉強会 in 名古屋 - Hadoop本読書会 - 2章 MapReduce
Hadoop本 第2章 MapReduce の疑問点や気になる点について記述してください。
※記入者、該当ページ・該当行は忘れずに書いて下さい
2章の位置付け
[記入者] terurou
[該当箇所] 2章全体
ざっくり流し読んだ感じでは、「簡単な解説だけして、インストールしてみて、とりあえず体験してみよう!」という感じ。Hello Worldにしては多少高度すぎるかもw
細かい解説は5章〜8章で行われているようなので、Hadoop初学者はこの時点ではまだ深入りしないで良さそう。
米国気候データセンター(NCDC)公開データ
[記入者] terurou
[該当箇所] 15ページ(2.1 気象情報データセット)
付録C(515ページ〜)に「NCDCのデータを使いたかったら
http://www.hadoopbook.com/
の手順を見てね」と書いてあった。
しかし、
http://www.hadoopbook.com/
には「Amazon EBSにフルデータセットを格納したpublic snapshot用意しておいたから、自分のEC2インスタンスからマウントしてね!!!」みたいなことしか書かれてない。
[記入者] You&I
似たようなデータはこちらにありました。でも本に掲載されたデータはどこから持ってきたのか謎ですね。
ftp://ftp.ncdc.noaa.gov/pub/data/gsod/
日本でも気象庁あたりがデータを公開してないの?
[記入者] terurou
[該当箇所] 15ページ(2.1 気象情報データセット)
調べてみたら、閲覧はできるみたいだけど、一括ダウンロードはできないみたい。データによってはテキストですらない場合もある。
http://www.jma.go.jp/jma/menu/report.html
何か簡単に使えるテストデータってないのかな?
[記入者] terurou
[該当箇所] 15ページ(2.1 気象情報データセット)
学術研究目的であれば、
http://labs.edge.jp/datasets/
が比較的簡単に使えそう。
Twitter Streaming-API
を使えば1日ぐらいで結構な量のデータが集まったりしないかな?
ko_ketsu さんがTwitter Streaming APIでデータ集めてくれるツールを作ってくれました!
TwitterSample.java
TwitterSample.tar.gz
Java MapReduce API、Hadoopのバージョン
[記入者] terurou
[該当箇所] 20ページ〜28ページ(2.3.2 Java MapReduce)
2010/06/06時点で、Hadoop Stable Versionが0.20.2に到達しているので、2.3.2のサンプルコードは「2.3.2.2 新しいJava MapReduce API」のコードにする必要がある?(まだ試してないです。。。
[補足:maeda_] 最新版のHadoopで古いAPIを使うとdeprecateの警告はでますが、一応コンパイルはできました。
MapReduce APIの種類
[記入者] terurou
[該当箇所] 20ページ〜41ページ
MapReduceのAPIは3つ用意されてるんですね(というか名前が付いてたんですね)
Java MapReduce API
Java用のAPI。
Hadoop Streaming
Java以外の言語でmap,reduce関数を書くためのAPI。Unixの標準入出力ストリームが扱える言語であれば何でも良い。
主にRuby,PythonなどのLLでの利用を想定したAPI(だと思われる)。
Hadoop Pipes
C++用のAPI。tasktrackerとソケット通信を行う構成のため、(疑似)分散させないと利用できない。
Hadoop Streamingって、Windowsでも動くの?
[記入者] terurou
[該当箇所] 34ページ(2.5 Hadoopストリーミング)
「Unix標準のストリームを・・・」みたいな書き方してるので、動くのか気になる。よっぽど動きそうな気はするけど。(まだ試してない
Hadoop Streamingの制約
[記入者] terurou
[該当箇所] 37ページ(2.5 Hadoopストリーミング)
Hadoop 0.21より前のリリースでは、combinerにJavaのクラスしか指定できない。(2010年6月時点の最新版は0.20.2なので、これが該当)
MapReduceの「プッシュ」スタイルと「プル」スタイル
[記入者] terurou
[該当箇所] 27ページ(2.3.2.2. 新しいJava MapReduce API)、35ページ(2.5.1 Rubyの注意事項)
「プッシュ」スタイルはHadoopがmap関数に1行分のレコードを渡してくれるが、複数行に対しての処理ができない。
「プル」スタイルは複数行に対しての処理が可能だが、map関数のレコードのフェッチを制御する必要がある。
Java MapReduce APIでは「プッシュ」「プル」のどちらも選択できる(Hadoop 0.20.0より)
Hadoop Streamingは「プル」スタイル
Hadoop Pipesは? サンプルコード見る限り、「プッシュ」スタイルでコードを書けるみたい。