Hadoop
Hadoopに関する情報を記載します。
概要
HadoopはApacheのトップレベルプロジェクトのひとつで、大規模データを分散処理で支えるJavaフレームワークです。 GoogleのMapReduce、GoogleFileSystem(GFS)に触発されたことから開発が始まりました。
オープンソースであることと大規模データ処理での利用が多く取り入れ始められているので、 色々な企業がVMWareのDistributionを提供しているので注意して下さい。
- http://www.cloudera.com/をローカルの開発環境として利用することもあります。
- YahooもDistributionを提供しています。
環境構築については、こちらを参考にして下さい。
特徴
アーキテクチャ
Hadoopは大きく二つの要素から成り立っています。
- MapReduce
- Hadoopで処理を記述するプログラミングモデルです。
- 処理は大きく3つの段階に分かれており、Map処理、Shuffule処理、Reduce処理となりこの順番で処理が実行されます。
- Map
- Key,Valueの組み合わせを作成していく処理になります。
- ユーザーが処理を記述します。
- Shuffle
- Map処理の結果を入力として同じKeyペアを束ねる処理になります。
こちらは自動で行われます。
- Map処理の結果を入力として同じKeyペアを束ねる処理になります。
- Reduce
- Shuffle処理の結果を入力として処理します。
- ユーザーが処理を記述します。
- Map
- HadoopDistributionFileSystem(HDFS)
- MapReduceで処理するデータを扱う分散ストレージで複数マシンをひとつのストレージとして利用します。
動作イメージとしては以下のようになります。
※グーグル発「Hadoop」、日本企業も利用への図を参照
利用にあたって
何時間もかかるようなバッチ処理を行う場合に向いています。
- YahooJapanの場合は、検索クエリのログ解析に利用されています。
いまさら聞けないHadoopとテキストマイニング入門 - ニューヨークタイムスでは過去130年分の記事をPDF化するのに利用しました。
技術調査を行う場合は、HadoopWikiで調べれば大抵のことが掲載されていますのでこちらがお勧めです。※ 英語のみ
その他
- HadoopのサブプロジェクトのHiveを利用する場合、Map処理やReduce処理の作成は必要が無くなります。
- 有名ですがNTTデータのHadoopのレポートがすごいです。
コメント