小さなテーブルと大きな歪んだテーブルの間で単純なピッグ ジョインを実行しています。"using skewed"
別のバグが原因で使用できません(大きなテーブルとの豚の歪んだ結合により、「分割メタデータのサイズが 10000000 を超えました」 ) :(
デフォルトを使用するmapred.job.shuffle.input.buffer.percent=0.70
と、reducer の一部がシャッフル段階で失敗します。
org.apache.hadoop.mapred.Task: attempt_201305151351_21567_r_000236_0 :
Map output copy failure : java.lang.OutOfMemoryError: GC overhead limit exceeded
これを変更するとmapred.job.shuffle.input.buffer.percent=0.30
、2 時間以内 (使用する 1000 のレデューサーのうち 3 つの遅延レデューサーがあります) で正常に終了します。
SpillableMemoryManager: first memory handler call-
Usage threshold init = 715849728(699072K) used = 504241680(492423K) committed = 715849728(699072K) max = 715849728(699072K)
なぜこれが起こるのですか?シャッフル入力バッファーが 70% のときに SplilableMemoryManager が失敗から保護しないのはなぜですか?