3

私はSpark 2.0で作業していますが、ジョブは入力データをソートし、その出力をHDFSに保存することから始まります。Spark 2.0のメモリの割合

私はメモリエラーから抜け出していました。解決策は、 "spark.shuffle.memoryFraction"の値を0.2から0.8に増やすことでした。これで問題は解決しました。しかし、ドキュメントでは、これは廃止されたパラメータであることがわかりました。

私が理解するように、それは "spark.memory.fraction"に置き換えられました。 HDFSのソートとストレージを考慮しながらこのパラメータを変更する方法は? documentationから

答えて

2

2つの関連構成がありますが、デフォルト値は ほとんどのワークロードに適用されるように、典型的なユーザ がそれらを調整する必要はありません。

  • spark.memory.fraction表現Mのサイズ(JVMヒープスペース - 300MB)の分数(デフォルトは0.6)。残りのスペース(25%)
    は、ユーザーデータ構造、Sparkの内部メタデータ、および疎で異常な場合のOOMエラーに対する保護 のために予約されています。
    大きなレコード。
  • spark.memory.storageFractionは、Mの分数(デフォルトは0.5)としてRのサイズを表します。 RはキャッシュされたM内の記憶域で、 ブロックは実行によって退避されません。

spark.memory.fractionの値が快適にJVMの古いまたは「終身」 世代内のヒープ・スペースのこの 量を合わせるために設定する必要があります。そうでない場合、この領域の多くがキャッシングに使用され、 が実行されると、テナント化された世代が満杯になり、JVM はガベージコレクションに費やされる時間を大幅に増加させます。

spark.storage.memoryFractionを変更します。


あなたの仕事がどのように動作するかを理解していますか?

最初にmemoryOverhead、#coresなどからジョブを微調整し、変更した属性に移動するのが一般的です。

関連する問題