この問題に直面するのは2回目です(最初はhadoop + mongodbでした)。
基本的に、分割ごとに 1 つのマップがあり (mongo のチャンク、hbase の領域)、すべてのデータがレデューサーに送信されます (シャッフル、ソート、および (オプション) 結合の後)。
デフォルトでは、サーバーごとに 2 つのレデューサー (タスクトラッカー) があり、3 ノードのクラスターがあるため、6 つのレデューサーがあります。
問題はここにあります:私のレデューサーは「戻ります」(context.write())インスタンスをhbaseに置きます(またはBSONWritableをmongodbにします)が、多くの場合、1つのキーが多くのレデューサーによって削減されます。キー A が 6 レデューサーによって削減されたとしましょう。それぞれがプットをhbaseに送り返します(BSONWritable to mongodb)=>部分的な結果しか得られません(おそらく最後に送信されたものですか?)!
何か助けはありますか?さらに情報が必要な場合はお知らせください。
ありがとうございました!