10

Dataproc クラスタで Spark ジョブを実行しようとしていますが、Yarn が正しく構成されていないため、Spark が起動しません。

シェルから "spark-shell" を (ローカルでマスター上で) 実行するとき、およびローカル マシンから Web GUI および gcloud コマンド ライン ユーティリティを介してジョブをアップロードするときに、次のエラーが表示されます。

15/11/08 21:27:16 ERROR org.apache.spark.SparkContext: Error initializing     SparkContext.
java.lang.IllegalArgumentException: Required executor memory (38281+2679 MB) is above the max threshold (20480 MB) of this cluster! Please increase the value of 'yarn.s
cheduler.maximum-allocation-mb'.

の値を変更しようとしまし/etc/hadoop/conf/yarn-site.xmlたが、何も変わりませんでした。そのファイルから構成を引き出すとは思わない。

複数のサイト (主にヨーロッパ) で複数のクラスターの組み合わせを試しましたが、これは低メモリ バージョン (4 コア、15 GB メモリ) でしか機能しませんでした。

つまり、これは、yarn のデフォルトで許可されているメモリよりも高いメモリ用に構成されたノードでのみ発生する問題です。

4

1 に答える 1

10

あなたが直面しているこれらの問題について申し訳ありません!これは、特定のメモリ設定がワーカー マシンのサイズではなくマスター マシンのサイズに基づいて計算されるという既知の問題の一部のようです。今後のリリースでこれを修正したいと考えています。

現在、次の 2 つの回避策があります。

  1. ワーカー マシン タイプ以下のメモリを持つマスター マシン タイプを使用します。
  2. --conf次のような SSH 接続から実行している場合は、フラグを使用して spark.executor.memory と spark.executor.cores を明示的に設定します。

    spark-shell --conf spark.executor.memory=4g --conf spark.executor.cores=2
    

    または実行gcloud beta dataproc中の場合は、次を使用します--properties

    gcloud beta dataproc jobs submit spark --properties spark.executor.memory=4g,spark.executor.cores=2
    

必要に応じて、executor ごとのコア数/メモリ数を調整できます。小さなエグゼキューターの側で誤りを犯し、YARN が各ワーカーに多くのエグゼキューターをパックできるようにしても問題ありませんが、spark.executor.memory を各 YARN コンテナーと spark.executor で利用可能なフルサイズに設定することで、エグゼキューターごとのオーバーヘッドをいくらか節約できます。 .cores を各ワーカーのすべてのコアに。

編集: 1 月 27 日の時点で、新しい Dataproc クラスタは、リリース ノートに記載されているように、マスター/ワーカー マシンタイプの任意の組み合わせに対して正しく構成されるようになりました。

于 2015-11-08T22:11:34.227 に答える