[解決済み] Apache Spark Executorのメモリを設定する方法
質問
Apache sparkの実行ノードで利用可能なメモリを増やすにはどうしたらいいですか?
Apache Sparkに読み込むのに適した2GBのファイルを持っています。私は今のところ1台のマシンでApache Sparkを実行しているので、ドライバとエグゼキュータは同じマシンにあります。このマシンのメモリは8GBです。
ファイルをメモリにキャッシュする設定にしてからファイルの行数を数えてみると、以下のようなエラーが発生します。
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 Environmentに設定されていることがわかります。スクリーンショットをご覧ください。 ここで
しかし 実行者タブ というメッセージが表示され、1つのExecutorのメモリ制限が265.4MBに設定されたままになっています。 また、同じエラーが表示されます。
記載されていることをいろいろと試してみたところ ここで が、やはりエラーが出てしまい、どこの設定を変えればいいのかがよくわかりません。
私は自分のコードをspark-shellから対話的に実行しています。
どのように解決するのですか?
Sparkをローカルモードで実行しているので
spark.executor.memory
は、あなたが気づいたように、何の効果もありません。この理由は、Workerは、quot;lives" を起動するときに開始するドライバJVMプロセス内にあるからです。
スパークシェル
で、そのために使われるデフォルトのメモリは
512M
. を設定することで、それを増やすことができます。
spark.driver.memory
をもっと高い値に設定します。
5g
. のどちらかで行うことができます。
-
プロパティファイルで設定する(デフォルトは
$SPARK_HOME/conf/spark-defaults.conf
),spark.driver.memory 5g
-
または、実行時にコンフィギュレーション設定を与えることで
$ ./bin/spark-shell --driver-memory 5g
なお、アプリケーションで設定しても、その時にはすでに手遅れで、ある程度のメモリがある状態でプロセスが始まっているので、実現できません。
の理由は 265.4 MB は、Spark spark.storage.memoryFraction * spark.storage.safetyFraction を捧げます。 をストレージメモリの総量に割り当て、デフォルトでは0.6と0.9になっています。
512 MB * 0.6 * 0.9 ~ 265.4 MB
そのため、ドライバのメモリがすべてRDDの保存に使用できるわけではないことに注意してください。
しかし、これをクラスタ上で実行するようになると
spark.executor.memory
の設定は、Sparkのメモリキャッシュに充てる量を計算する際に、引き継がれます。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン