Hadoopの動作仕組みの理解

Hadoopの動作仕組みの理解

  1. シャッフル処理

    • マップ端シャッフル

      • スピル: MapTask によって処理されたデータをディスクに書き込みます
        • すべての MapTask データはパーティションに最初にマークされます
        • マークされたすべてのデータはリング バッファー [メモリ: 100M] に書き込まれます。
        • バッファがストレージしきい値の 80% に達すると、この部分はロックされ、オーバーフローの準備が整います。
        • K2V2を80%ソート:同じパーティションのデータをまとめる
          • メモリ: クイックソート
        • データのこの部分を小さなファイルとしてディスクに書き込みます
        • 最終的に、各 MapTask は多数の順序付けられた小さなファイルを生成します。
      • マージ: 各 MapTask に対応するすべての小さなファイルを 1 つの大きなファイルにマージします。
        • マージソート: マージソート: ソートされたファイルに基づいてマージソート
        • 各 MapTask は全体的に順序付けられた大きなファイルを取得します
      • MapTask プログラムの終了はプログラム マネージャー APPMaster に通知され、APPMaster は ReduceTask に通知します。
    • リデュースエンドシャッフル

      • Merge: 各 ReduceTask から各 MapTask が独自のデータをフェッチします。
        • 並べ替えの結合: 自分に属するすべてのデータを結合して並べ替えます。
          • マージソート
      • 最後に、各 ReduceTask 内のデータが全体的に順序付けされ、グループ化されていることを認識します。
    • 考え方: カスタム グループ化: 注文 ID、並べ替えコンパレータ: 注文価格

      Order_0000001	Pdt_01	222.8
      Order_0000001	Pdt_05	25.8
      Order_0000002	Pdt_03	522.8
      Order_0000002	Pdt_04	122.4
      Order_0000002	Pdt_05	722.4
      Order_0000003	Pdt_01	222.8
      Order_0000003	Pdt_01	1000.8
      Order_0000003	Pdt_01	999.8
      
      Order_0000003	Pdt_01	1000.8
      
      
      Order_0000002	Pdt_05	722.4
      
      
      Order_0000003	Pdt_01	222.8
      
      Order_0000001	Pdt_01	222.8
      
      Order_0000002	Pdt_04	122.4
      
      Order_0000001	Pdt_05	25.8
      
    • グループ化ルール

      • デフォルト: K2 のソーターをグループ化コンパレーターとして呼び出します。

      • カスタマイズ: WritableComparator を継承し、compare メソッドを実装します。

        job.setGroupingComparatorClass
        
  2. シャッフルの最適化

    • プログラムにシャッフルプロセスを回避させてみます
      • マップ結合
    • ComBiner: マップ側の集計
      • MapTask の数は比較的多く、各 MapTask は比較的小さなデータを処理するため、Reduce に入力されるデータ量を減らすために、事前に各 MapTask 内で集計を実行させます。
      • 集約ロジック: Reduce ロジック
      • 実装: job.setCombinerClass(Reduce.class)
      • 発生頻度: ソートが終了するたびに、Combiner が 1 回実行されます。
    • 圧縮: 圧縮
      • 圧縮を使用してデータ ディスクとネットワーク IO 帯域幅を削減し、伝送速度を向上させます
  3. MapReduce の補足

    • 断片化ルール
      • ファイル サイズ/シャード サイズ > 1.1
        • 1.1 倍より大きい場合、シャード サイズはシャードです
          • 残りは破片です
        • それより大きくない場合、ファイル全体がフラグメントです
      • フラグメント サイズ: max (最小フラグメント サイズ、min (最大フラグメント サイズ、ブロック サイズ))
      • |
      • ファイルがブロックの 1.1 倍より大きいかどうか
        • 135M > 128×1.1
          • スライスとして
        • 145M
          • スプリット1:128M
          • スプリット2:17M
    • MapReduce 結合
      • 結合ルール
      • 結合アルゴリズム
        • Reduce Join: リデュース側で発生し、シャッフルを通じて、グループ化時に 2 つのデータの関連ワードが関連付けられます。
          • シャッフルを通過する必要がある
          • ビッグデータに最適 ビッグデータを結合する
        • マップ結合: 小さなデータを分散メモリに配置し、完全な小さなデータをビッグデータのあらゆる部分と結合させます。
          • シャッフルする必要はありません
          • 小規模データとビッグデータの結合に適しています
  4. YARN のリソース管理とタスクのスケジューリング

    • マスタースレーブアーキテクチャ
    • YARN 上でプロセスを実行する MapReduce プログラム
    • YARN のタスク スケジューリング メカニズム
      • FIFO: 単一のキュー。複数のプログラムの同時実行性または並列性を実現できません。
      • 容量: 容量スケジューリング、複数のキュー、各キューは内部的に FIFO であり、複数のキューを並列化できるため、リソースを動的にプリエンプトできます。
      • 公平: 公平なスケジューリング、複数のキュー、各キューは内部でリソースを共有、複数のキューは並列化可能、各キューは内部で同時実行可能、リソースの動的なプリエンプションが可能、重み優先順位の構成が可能

おすすめ

転載: blog.csdn.net/mitao666/article/details/110474056