Apache Spark Executor ノードで使用可能なメモリを増やすにはどうすればよいですか?
Apache Spark にロードするのに適した 2 GB のファイルがあります。現時点では 1 台のマシンで Apache Spark を実行しているため、ドライバーとエグゼキュータは同じマシン上にあります。マシンには 8 GB のメモリがあります。
ファイルをメモリにキャッシュするように設定した後、ファイルの行数をカウントしようとすると、次のエラーが発生します。
2014-10-25 22:25:12 WARN CacheManager:71 - Not enough space to cache partition rdd_1_1 in memory! Free memory is 278099801 bytes.
私はドキュメントを見ましたここspark.executor.memory
に設定4g
し$SPARK_HOME/conf/spark-defaults.conf
UIには、この変数がSpark環境で設定されていることが示されています。スクリーンショットをご覧ください。ここ
しかし、私が実行者タブ単一の Executor のメモリ制限は、依然として 265.4 MB に設定されています。また、同じエラーも引き続き発生します。
いろいろ試してみたここしかし、まだエラーが発生し、どこで設定を変更すればよいのか明確にわかりません。
私はコードをspark-shellから対話的に実行しています
ベストアンサー1
Sparkをローカルモードで実行しているので、設定はspark.executor.memory
効果がありません。これは、起動時に開始するドライバーJVMプロセス内でワーカーが「生きている」ためです。スパークシェルそして、そのために使用されるデフォルトのメモリは512M設定値を大きくすることでspark.driver.memory
、例えば5g次のいずれかの方法で実行できます。
プロパティファイルで設定します(デフォルトは
$SPARK_HOME/conf/spark-defaults.conf
)、spark.driver.memory 5g
または実行時に構成設定を提供することで
$ ./bin/spark-shell --driver-memory 5g
アプリケーションで設定することによってこれを実現することはできないことに注意してください。その時点ではすでに手遅れであり、プロセスはすでに一定量のメモリを使用して開始されているからです。
の理由265.4MBそれはスパークspark.storage.memoryFraction * spark.storage.safetyFraction を専用にしますストレージ メモリの合計量に対して、デフォルトでは 0.6 と 0.9 になります。
512 MB * 0.6 * 0.9 ~ 265.4 MB
したがって、ドライバー メモリの全量が RDD ストレージに使用できるわけではないことに注意してください。
ただし、これをクラスター上で実行し始めると、spark.executor.memory
Spark のメモリ キャッシュ専用に使う量を計算するときにこの設定が優先されます。