2017-09-19 12 views
3

dataprocのエグゼキュータおよびタスクの数に関するいくつかの奇妙な動作を観察しています。クラスタ内で使用可能なコアの数によって、(理論上は)並列で実行できるタスクの数が制限されることになります。つまり、32コアは最大32個のタスクを意味します。しかし、dataprocでは、いくつかの異なる動作を観察することがあります。基本的に可能な同時タスクの数は基本的に2倍です。数字のタスクより多くの番号のタスクdataprocの

12 + 1(マスター)のn1-standard-4マシンでdataprocクラスタを実行しています。これにより、マシンあたり15GBのRAMを備えた48の利用可能なvcoresが得られます。 メモリをunderutilisingながらdataprocが自動的spark.executor.memory = 5586mが割り当てられますよう私たちは、スパークアプリは、すなわち、48並列タスク、それぞれが並列に4つのタスクを実行することができるという、私たちの12件のエグゼキュータを与えるべきか...

spark.executor.cores = 4 

で起動します。しかし、実際には、合計で92のタスクを並行して実行しているので、(ほぼ)2倍の速さで実行しているようです。なぜ我々は理解していない。 12(4つのコアそれぞれに)が存在すべきである

Spark monitor

糸モニターはまた、24個のコンテナがあることを教えてくれる。

enter image description here

答えて

2

ノードとCPUごとのスレッド数あたりのCPUの数をチェックし、あなたが言うように、あなたができるだけ多くのコアを持っているかどうか確認してください。

+0

これは良いヒントでした - ありがとう!実際、n1規格のマシン用に実装されたvCPUは2スレッドCPUです。番号のタスクについて説明します。 https://cloud.google.com/compute/docs/machine-types https://en.wikipedia.org/wiki/Sandy_Bridge – Blaubaer

+0

OK、スレッド番号は本当に答えではありません'--executor-memory 2500m'私は48人のエグゼキュータと188個のタスクを持っています... – Blaubaer

関連する問題