2016-02-22 18 views
5

シャッフルフェーズが長すぎるMRジョブがあります。シャッフルフェーズが長すぎます。Hadoop

私はマッパー(約5GB)から多くのデータを出しているからだと思っていました。それから、私はコンバイナを追加することでその問題を解決し、レデューサにデータを少なくしました。その後シャッフル期間は短縮されなかったと思った。

私の次のアイデアは、Mapper自体で結合することで、Combinerを削除することでした。私がhereから得たアイデアは、データがシリアル化され/コンバイナを使用するために逆シリアル化される必要があると言われています。残念ながら、シャッフルフェーズはまだ同じです。

私が考えているのは、単一のリデューサーを使用しているからです。しかしこれは、私がCombinerを使うときやMapperで組み合わせるときに大量のデータを出すわけではないので、そうではないはずです。ここで

は私の統計情報です:ここでは

enter image description here

は私のHadoop(YARN)は、ジョブのすべてのカウンタです:

enter image description here

私はこれが上で実行されていることも追加する必要があります4台の小規模クラスタ。それぞれ8GBのRAM(2GB予約済み)と仮想コア数は12(2つ予約済み)です。

enter image description here

これらは仮想マシンです。最初は彼らはすべて1つのユニットに入っていましたが、2つのユニットで2-2を分けました。そこで彼らは最初にHDDを共有していましたが、ディスク1台に2台のマシンがあります。それらの間にギガビットネットワークがあります。

そして、ここではより多くの統計情報です:ジョブが実行されている間

全体のメモリが占​​有されている

enter image description here

CPUは、圧力下に常にある(写真は、同じジョブの二つの連続実行のためにCPUを示しています)

enter image description here

私の質問がある - なぜシャッフル時間があるので、大きいとホそれを修正するw? Mapperから放出されるデータの量が劇的に減少したにもかかわらず、スピードアップがどのようになかったのかもわかりません。

+0

以上の数字を得ることなく伝えるのは難しいように見える:マップ出力の正確なサイズは何ですか?あなたのサーバー(帯域幅)間のネットワークリンクはどれくらいの大きさですか?単一のレデューサー以上を使用することができます(したがって、帯域幅のボトルネックを避けることができます)? –

+0

ご意見ありがとうございました。私は質問を編集しました。なぜそんなに遅いのか分かりません。私は主に単一のマシン上で開発しているので、私はクラスター上でジョブを実行することについて学んでいますが、私はこの問題の理由はありません。減速機を分けることは(不可能ではないにしても)非常に難しいかもしれませんが、問題はありません。 – Marko

+0

なぜそれが5MBのために非常に長い時間がかかっているのかわかりにくいですが、アンバリでは珍しいことは何ですか?ペグドCPUのように?あなたは還元容器のログに行き、何かを見つけることができますか? –

答えて

0

少数の観察:30分の仕事のために

  1. 、GC時間が高すぎる((マップ内の各呼び出しのために新しいものを作成むしろオブジェクトを再利用してください)/(リデュース)メソッド)
  2. 平均地図時間はTOOOOO hight、16分UR地図で何をしていますか?
  3. YARNメモリは99%です。これは、HDPクラスタでサービスが多すぎて実行されていることを示しています.RAMは、これらの多くのサービスをサポートするには十分ではありません。
  4. YANコンテナのメモリをご用意ください。少なくとも1 GB以上お持ちください。
  5. これはGC + overscheduledクラスタの問題
関連する問題