2017-06-15 3 views
1

私はこの写真の現在のスパーク状況を理解しようとしています。スパークUIの読み方

それは私にどのように見えるかを

  • 93.3 GBのRAM pyskark-shellは各マシンの各マシンと32 GBのRAMで10個のコアを使用する各
  • アプリで4労働者のマシン
  • アプリbacktestin2用途各マシンで2つまたは6つのコアと各マシンで8つのGbを使用します。

注:私は仕事がノード間で分割されているかについて確信しています。)

私の期待

  • アプリpyskark-shellは= 320 Gbは使用各コアの各マシンで10個のコアと各マシンで32 GBのRAMを使用しています総
  • アプリbacktestin2、これは目を意味し

をマシン間で分割コア16を使用し、各コアは、各マシンに8 GBに必要=合計128ギガビットノードあたりのメモリは、特定のアプリケーションのノードで実行されているすべてのタスク間で共有されていますか?私は、プロパティconf.set('spark.executor.memory', executor_memory)は、タスクごとにされている必要があります。

理由:

私は、各タスクが必要とどのくらいのメモリを知っていますが、私は、各エグゼキュータに入るか、多くのタスクを知らない:そのため私は、エグゼキュータのメモリごとに推定することはできません。

enter image description here

答えて

1

これは、ノードあたりのメモリは、特定のアプリケーションのためのノードで実行されているすべてのタスクの間で共有されていることを意味していますか?

正しいことですが、ノードごとのメモリは、各ノードのアプリケーションに割り当てられた合計メモリを参照します。このメモリは、スパークメモリ構成(http://spark.apache.org/docs/latest/configuration.html#memory-management)に従ってさらに分割されます。メモリ要件を見積もる際には、どのくらいの量のメモリ(すなわち、キャッシュされたデータフレーム/ rdd)および実行を使用するかを考慮する必要がある。デフォルトでは、メモリの半分はタスクの実行のために、半分はストレージのために確保されています。また、パラレルで実行できるタスク数(デフォルトはコア数)も設定可能です。メモリの半分が実行に使用され、データを適切に分割したと仮定すると、デフォルト構成でアプリケーションを実行するために必要なメモリの総量は約2 *(並列実行するタスク数)*(必要なメモリ最大のタスクの1つを実行する)。もちろん、この見積もりは、特定のユースケース、構成、および実装に大きく依存しています。さらにメモリ関連のヒントがhttps://spark.apache.org/docs/latest/tuning.htmlにあります。うまくいけば、SparkのUIは、メモリ使用量についてのより明確な洞察を提供するために将来改良されることを願っています。

関連する問題