bugfix> hadoop > 投稿

プログラムの作成中、Hadoop Mapreduce Jobsでのソートはどこで行われますか?私は自分のプログラムを前進させるのに困難を感じています。

回答 1 件
  • ソートは Hadoop MapReduce によって行われます  フレームワーク。マッパーは、リデューサーに渡される中間(キー、値)ペアを出力します。各レデューサーは、ソートされた順序ですべてのキーを取得します。

    2つのマッパーが使用されているとします。

    -- mapper1 output
    key_a, value_a1
    key_b, value_b2
    key_c, value_c1
    key_d, value_d2
    -- mapper2 output
    key_a, value_a2
    key_b, value_b1
    key_d, value_d1
    key_d, value_d3
    
    

    並べ替えとシャッフル(ステップは Hadoop によって行われます)  フレームワーク)中間キーがソートされたキーの順序でレデューサーに渡されるようにします。

    2つの減速機が使用されていると言います:

    --- reducer1 input (sorted by keys)
    key_a, [value_a1, value_a2]
    key_d, [value_d2, value_d1, value_d3]
    --- reducer2 input (sorted by keys)
    key_b, [value_b2, value_b1]
    key_c, [value_c1]
    
    

    レデューサーに渡されるキー間でグローバルな順序を確保する場合は、Total Order Partitionerを使用できます。この場合、各レデューサーは次のように入力を取得します。

    -- reducer1 input (sorted by keys - global)
    key_a, [value_a1, value_a2]
    key_b, [value_b2, value_b1]
    -- reducer2 input (sorted by keys - global)
    key_c, [value_c1]
    key_d, [value_d2, value_d1, value_d3]
    
    

あなたの答え