2016-07-11 2 views
-2

私は、各作業者が8GBのメモリと4つのコアを持つ7ノードのスパーククラスタを作成しました。巨大なクラスタではありませんが、"GCオーバーヘッドの上限"を超えて失敗しました。 シンプルテラソートではわずか10GBのデータしかありません。Databricksは、特定のクラスタとデータセットに推奨されるスパークパラメータを提供しますか?

sparkクラスタのこれらの基本パラメータをどのようにして決定すれば、データサイズが増えるにつれてジョブが失敗しないか知りたいですか。

  1. パーティション
  2. 正しく設定されますが、プロセスが死んでいない場合、私が遅い実行中のジョブを気にしない並列処理
  3. エグゼキュータ・コア
  4. エグゼメモリ

の執行

  • NUMのNUMメモリ不足のために大きな赤い旗があります。

  • 答えて

    0

    スパークのバージョン、入力形式(テキスト、寄木細工、orc)、圧縮などの情報は確かに役に立ちます。

    しかし要約すると、以下は一般的に親指ルールです。

    1. num-executors - これは、クラスタ全体がこのジョブに費やすエグゼキュータの総数です。 Executorには、1つ以上のタスクを含めることができます。 1つのノード= 1つのエグゼキュータと考える傾向があります。ノードごとに複数のエグゼキュータを持つ方がよいでしょう。これについては後ほど答えてください。
    2. executor-cores - これは、エグゼキュータごとのコア(タスク)の合計数です。あなたの場合、開始点はエグゼキュータごとに4コアです(ノードごとに)。
    3. executor-memory - エグゼキュータごとの合計メモリ。これは、エグゼキュータ内のすべてのタスクまたはコアで共有されます。

    ほとんどの構成(あまり有効) NUM-執行= 7、エグゼキュータ・コアこの場合= 4、エグゼキュータ・メモリ= 8グラム 一のエグゼキュータは4つのタスクで共有されています。そのうちの1つが失敗した場合、エグゼキュータ全体が失敗とマークされます。

    ベター構成 NUM-エグゼキュータ= 14(ノードあたり2)、エグゼキュータ・コアは= 2(2キュータ当たり)、エグゼキュータ・メモリ= 3G(プロセスの残りの2グラムを残しキュータ当たり3グラム)

    この場合、エグゼキュータの起動時間が長すぎる可能性があるため、エグゼキュータごとに1つのコアもうまくいかないことに注意してください。

    この場合、実行者全体を強制終了させないようにリソースを分割しています。

    パラレル化 これは入力データのフォーマットによって異なります。

    関連する問題