2015-11-08 13 views
7

DataprocクラスタでSparkジョブを実行しようとしていますが、Yarnの設定ミスによりSparkが起動しません。Dataprocクラスタの自動設定後、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コア、15GBのメモリ)でしか動作しませんでした。

I.e.これは、糸のデフォルトよりも高いメモリに設定されたノードでのみ問題になります。

答えて

7

この問題をご迷惑をおかけして申し訳ありません。これは、特定のメモリ設定がワーカーマシンのサイズではなく、マスタマシンのサイズに基づいて計算されるという既知の問題の一部であるように見えます。近い将来リリースでこれを修正したいと考えています。

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

  1. に等しいかワーカーマシン・タイプよりも 小さいいずれかのメモリを搭載したマスター・マシン・タイプを使用してください。 --propertiesを使用し、

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

    又はgcloud beta dataprocを実行している場合:

    gcloud beta dataproc jobs submit spark --properties spark.executor.memory=4g,spark.executor.cores=2 
    
  2. 明示spark.executor.memoryとspark.executor.coresのいずれかのようなSSH接続から実行されている場合 --confフラグを使用して設定

必要に応じて、エグゼキュータごとにコア/メモリの数を調整できます。小規模のエグゼキュータの側でエラーを出し、YARNに各ワーカーに多くのエグゼキュータをパックさせることはできますが、各YARNコンテナとspark.executorで使用可能なフルサイズにspark.executor.memoryを設定することによって、各作業者のすべてのコアに対応しています。

EDIT:release notesに記載されているように、1月27日現在、新しいDataprocクラスターが任意のマスター/ワーカータイプの組み合わせに対して正しく構成されるようになりました。

+0

Holy moly!私がまだ試していなかったのはおそらく唯一の組み合わせでした。どうもありがとう!それは魅力のように働いた:) – habitats

+0

この変更は新しい問題を導入したように見えます。この新しい設定で実行しているとき、私は[次のエラー](http://i.imgur.com/5UVnFJP.png)を取得します:。ロー・メモリー・クラスターは、同一の.jarファイル・ジョブに問題はありません。 – habitats

+0

新しい問題として投稿する必要がありますか? – habitats

関連する問題