Hadoopの学習(ファイブ)-MapReduceアーキテクチャの原則

アウトライン

Hadoopのは、主記憶と計算に対処するために使用される、データHDFSファイルシステムの膨大な量の前に、フォーカスは、大量のデータを格納するにあります。これだけのデータでは、どのように我々はここで、これらのデータは、我々がそれを必要とする情報を抽出する必要がありますか?この時間は、内のMapReduceのHadoopの非常に重要なメンバーがありました。
MapReduceは(1TBより大きい)大きなデータセットの並列コンピューティングのためのプログラミングモデルです。この並列コンピューティングは、それはもはや我々の計算上のシリアルの伝統的な意味で、それは別のプロセスで並列コンピューティングで行われていないことができることに注意してください。コンセプト「マップ(マッピング)」と「削減(削減)は、」彼らの主な考えは関数型プログラミング言語から借用し、同様のベクトルのプログラミング言語の機能から借りたです。場合は、プログラマが分散されず、並列プログラミングは、分散システム上で実行中のプログラムを所有するのは非常に簡単です。現在のソフトウェア実装では、マップ(マッピング)関数を指定することで、キーと値のペアを確保するために、同時削減(削減)機能指定されたキーと値のペアの新しいセットにマップするために使用されることのすべてのキーと値のマッピング各グループは、同じ鍵を共有します。
ここでは次の導入を行うために内部手続きと原則のMapReduceの実装です。

MapReduceジョブは、プロセスを実行します

Hadoopの
1、クライアント上でジョブを開始。
2、ジョブIDノードマネージャに要求。
図3は、HDFSにコピージョブ操作に必要なリソースファイルは、パッケージ化さMapReduceはJARファイル、設定ファイルを含み、得られた分割情報をクライアントコンピューティングを入力してください。これらのファイルは、特別にジョブフォルダ用に作成されたファイルのノードマネージャに格納されています。ジョブのジョブIDという名前のフォルダ。このジョブの開始およびその他の情報すべきノードマネージャどのように多くのマップタスクを伝えるために入力情報を分割し、デフォルトではJARファイルには、10のコピー(mapred.submit.replication属性制御)となります。
ノードマネージャは、ジョブを受信した後、図4に示すように、それは、ジョブスケジューラ、独自のスケジューリング・アルゴリズムによれば、(これはハァッ、ハァッ、スケジューリングの過程でコンピュータのようではありません)ジョブスケジューラのスケジュール、それを待って、ジョブキューに置かれていますジョブのスケジュールは、各部門のための入力情報に基づいて地図を作成するタスクを分割してのResourceManagerマップタスクの実行に割り当てられている場合。マップおよびタスクを減らす、のResourceManagerがスロット溝の固定数をマッピングするホストメモリコアの数とサイズを減少させます。ローカライズされたデータ(データ-ローカル):マップタスクが何気なくのResourceManagerに割り当てられていないで、と呼ばれる概念があります:ことを強調すべきです。意味:このResourceManager JARにプログラムパッケージながら、マップを処理するのResourceManagerデータ・ブロックをマッピングするための割り当てタスクは、アップ実行と呼ばれる「移動操作、データが移動されません。」コピー データは、割り当てがローカライズ作業を減らすことを検討していません。
5、随時のResourceManagerノードマネージャは、心にも多くの情報を持っている間、それはまだ、そのようなタスクが完了された地図情報の現在の進行状況として、実行しているノードマネージャを伝える、ハートビートを送信します。最後のタスクは、ジョブ完了情報を受信ノードマネージャと、それは仕事に設定された「成功。」JobClientクエリ状態、それはタスクが完了したことを学習されている場合は、メッセージがユーザーに表示されます。
これらは、ノードマネージャ、のResourceManagerはより慎重にもう一度してみましょう、MapReduceのレベルの作品分析、階層的なマップタスクと、それを分析するために、タスク分析を低減するためのクライアントです。

大列  Hadoopの学習(ファイブ)-MapReduceアーキテクチャの原則の AP、タスクシャッフルを削減し、プロセスのソート「クラスは=」headerlink「タイトル= 」地図、削減タスクシャッフルを、プロセスの一種「>地図には、タスクを削減し、並べ替えるシャッフルプロセス

Hadoopの
分析プロセス
1は、各入力スライスは、デフォルトでは、HDFSのブロックのサイズ(デフォルト64M)断片を処理するタスクをマップは、もちろん、我々は、ブロックのサイズを設定することができます。バッファがオーバーフローしようとするときの結果は、デフォルトのバッファサイズが80%である(、リングバッファメモリ(バッファ100Mのデフォルトサイズは、プロパティによって制御io.sort.mb)に一時的に出力をマッピングします、)、io.sort.spill.percentローカル・ファイル・システムによって制御される属性予備ファイルを作成し、データバッファがこのファイルに書き込まれます。
図2は、ディスクに書き込む前に、最初のスレッドの数に応じてタスクを低減パーティションの同じ数にデータを分割し、タスクに対応する、すなわちデータパーティションを減らします。これは、他の人がタスクがほとんどないデータや恥ずかしい状況に割り当てられていないデータを割り当てられた削減しながら、大量のデータを減らすために割り当てられたいくつかのタスクを避けるために行われます。実際には、データパーティションには、ハッシュのプロセスです。この時間は、コンバイナ、Combia操作を行っソートの結果を設定されている場合はその後、各パーティション内のデータをソートするために、その目的は、わずかのデータがディスクに書き込まれるようにすることです。
図3に示すように、マップタスク出力最後のレコード、その後、これらのファイルをマージする必要があり、予備ファイルの多くがあるかもしれません。各ディスクに書き込まれるデータの量を最小限にするために1、2複製の次のステージへのネットワークを介して送信されるデータの量を最小限に...:合成プロセスはソートされ、combia操作され続ける、二つの目的を有します 最後にパーティションおよびソートされたファイルにマージ。データを圧縮することができるネットワーク上で伝送されるデータの量を減らすために、限りmapred.compress.map.outとしてはtrueに設定されています。

4、作業を軽減するために、対応するデータパーティションのコピー。一つは尋ねるかもしれません:どのようにデータパーティションに対応するには、それが何であるか、そのノウハウを減らしますか?実際には、マップとその親ノードマネージャのタスクが連絡を取り合うためになっている、とノードマネージャを維持し、このResourceManagerハートビートされています。だから、ResourceManagerがクラスタ全体のマクロ情報を保存します。限りマップを取得するタスクとしてOKああ上のResourceManagerに対応する出力位置を下げます。
ここでは、最後に行われた分析をマッピングします。最後に、それは何であることをシャッフル?私たちはこれを見た場合、「シャッフル」中国の手段でシャッフル:パーティションのプロセスのハッシュ結果によって生成された地図データは実際には、データのシャッフルプロセス、異なる減らすタスクに割り当てられました。
5、削減が使命とは異なる地図データを受信すると、送信された各地図データが発注されます。データの量があれば、受信側が比較的小さい場合、データの量を減らす、それは、(ヒープ領域としてこの目的のための百分率として表し、mapred.job.shuffle.input.buffer.percent属性制御によってバッファサイズ)メモリに直接格納されていますディスクのオーバーフローに書き込まれたデータの合併後、(mapred.job.shuffle.merge.percentによって決定される)バッファサイズの一定の割合以上。
図6は、オーバーフロー書き込みファイルの増加、バックグラウンドスレッドで合併の背後に時間を節約するためにそう、1つのより大きな注文のファイルにマージします。実際には、軽減マップ側端かどうか、MapReduceは繰り返し、ソートを実行する操作をマージし、一部の人が言うなぜ今ようやく理解している:Hadoopが魂の一種です。
図7は、合併処理(ディスクに書き込まれる)は、多くの中間ファイルを生成するが、データは可能な限り少ない、及び合併の最終結果は、ディスクに書き込まれていないディスクのMapReduceに書き込まれるが、に直接入力しました機能を減らします。

おすすめ

転載: www.cnblogs.com/sanxiandoupi/p/11711038.html