つの卵:同じ柔らかさで硬さがわからない2つの卵、2つとも1階で割れるかもしれないし、100階から落ちても大丈夫かもしれません。100階建てのビルがあり、2つの卵を使って、卵を安全に落とせる最も高い場所がどの階かを最少回数で判定してください。つの卵を割ることは可能です。
MapReduce行列の分析
問題
ある点の値が、その点の周りのいくつかの点の値によって決定される場合、例えば、次の瞬間の値が、現在の瞬間の8つの隣接点の平均である場合、非常に大きな2D行列をMapReduceで実装するにはどうすればよいでしょうか?
分析
まず、WordCountを例にしてMapReduceの仕組みを説明しましょう。
生の状態、入力 - マップ - シャッフル - リデュース - 出力
WorkCountプログラムを実行するために、以下の2つのテキストファイルがあるとします:
Hello World Bye World
Hello Hadoop GoodBye Hadoop
マップデータの入力
Hadoopは、デフォルトでテキストファイルのLineRecordReaderクラスを使用して、読み取り、キー/値のペアの行を達成するために、オフセットを取るには、キー、行の内容の値。
以下はmap1の入力データです:
Key1 Value1
0 Hello World Bye World
以下はmap2の入力データです:
Key1 Value1
0 Hello Hadoop GoodBye Hadoop
マップ出力/コンバイン入力
以下はmap1の出力です。
Key2 Value2
Hello 1
World 1
Bye 1
World 1
以下はmap2の出力です。
Key2 Value2
Hello 1
Hadoop 1
GoodBye 1
Hadoop 1
combine output Combiner クラスは、同じキーを持つ値の結合を実装しており、Reducer の実装でもあります。
以下はcombine1の出力です。
Key2 Value2
Hello 1
World 2
Bye 1
以下はcombine2の出力です。
Key2 Value2
Hello 1
Hadoop 2
GoodBye 1
combinerは、ビジネスケースに応じて使用するには、MAP - > REDUCEのデータ転送を削減し、シャッフルの速度を向上させる、つまり、マップで、その後、操作を削減します。combinerは適切に使用すると、ジョブの速度を向上させるためにビジネスケースを満たすことができる、そうでない場合は、結果の出力につながるが正しくありません。
wordcountの場合、値はスタックされた数字なので、すべてのマップが終わるまでreduceの値をオーバーレイするのを待つのではなく、マップが終わったらすぐにreduceの値をオーバーレイすることができます。
出力の削減
Reducer クラスは、同じキーの値を結合する機能を実装しています。
以下はreduceの出力です。
Key2 Value2
Hello 2
World 2
Bye 1
Hadoop 2
GoodBye 1
つまり、WordCount処理を実装しています。
以下は公式のフローチャートです:
この基本を念頭に置いて、上記の問題を解決するためにMapReduceをどのように使えるか見てみましょう。
以下のラベル付きペアがマップのキーとして使用され、遭遇、生成、など、その後、同じキーが削減時にマージされ、値が計算されます。
MapReduceの仕組みを理解すれば、簡単ではないでしょうか?




