2016-10-04 10 views
0

私の理解しているように、マッパーが最初に実行され、その後にパーティショナー(存在する場合)が続いてレデューサーが続きます。しかし、Partitionerクラスを使用すると、ソートとシャッフルのフェーズが実行されるときはわかりません。PartitionerがMap Reduceで実行されている場合

+3

マップ - >パーティション - >並べ替え - >シャッフル - >並べ替え - >縮小 https://0x0fff.com/hadoop-mapreduce-comprehensive-description/ – cody123

答えて

0

Aクローズドループ

下記の図は、完全な詳細を説明しています。

この図から、ワードカウントアプリケーションのマッパーとリデューサコンポーネントがどこに収まるか、そしてその目的がどのように達成されているかが分かります。今度は、このシステムをもう少し詳細に調べます。 ソートMapReduceのフロー

enter image description here

0

シャッフル及び位相は常に(マッパーと減速ノード間で)実行されます。

以下としてのMapReduceに異なる相の階層:

マップ - >パーティション - >コンバイナ(オプション) - >シャッフル及びソート - >減らし。

0

短い答えは:データは、減速の実行を並べ替えるシャッフル/並べ替えの実行前に減速を(常に)と後のマップ/コンバイナ(もしあれば)/パーティ(もしあれば)。 マッパーコンバイナパーティショナリデューサー

長い答えは、MapReduceのジョブに4人の主要なプレーヤーがあるということです。これらはすべてあなた自身が実際に実装できるクラスです。

はのは、有名なワードカウントプログラムを見てみましょう、と我々が取り組んでいる分割が含まれているとしましょう:

pippo, pluto, pippo, pippo, paperino, pluto, paperone, paperino, paperino 

と各単語がレコードです。

マッパー

各マッパーは、あなたのファイルのサブセット上で動作し、そのタスクは、スプリットから各レコードを読み、各レコードが出力されますにキーを割り当てることです。 Mapperは中間結果をディスク(ローカルディスク)に保存します。

この段階からの中間出力は、この時

pippo,1 
pluto,1 
pippo,1 
pippo,1 
peperino,1 
pluto,1 
paperone,1 
paperino,1 
paperino,1 

はマッパーを実行するノードのローカルディスク上に格納されるであろう。

コンバイナ

それは、ミニ減速だとデータを集約することができます。また、マップ・ジョインと呼ばれるジョインも実行できます。このオブジェクトは、ローカルノード上のデータを集約するため、帯域幅をクラスタに保存するのに役立ちます。

依然としてマッパー相の一部であるコンバイナからの出力は、次のようになります。もちろん

pippo,3 
pluto,2 
paperino,3 
paperone,1 

ここで一つのノードからのデータです。グローバルな結果を得るには、データをレデューサーに送信する必要があります。どのレデューサーがレコードを処理するかは、パーティショナーによって異なります。

パーティショナ

それの仕事は、すべての利用可能な減速にデータを分散することです。このオブジェクトはコンバイナからの出力を読み取り、キーを処理する減速器を選択します。この例では

我々は2つのレデューサーを持っているし、我々は次のルールを使用します。

all the pippo goes to reducer 1 
all the pluto goes to reducer 2 
all the paperino goes to reducer 2 
all the paperone goes to reducer 1 

ので、すべてのノードが(1)、すべてのノードが送信されます同じ減速への鍵ピッポを持つレコードを送信しますその上、同じ減速への鍵冥王星を持つレコード(2)と...データがシャッフルを受けるのはここ

がある/コンバイナはすでに、ローカルでこのノードをデータを減少するので、をソートし、 9の代わりに4レコードのみを送信する必要があります。

減速

このオブジェクトは、各ノードからのデータを集約することができ、それはまた、データをソートすることができます。

関連する問題