2017-08-29 4 views
0

マイスパーククラスタが同時に二つ以上のジョブを実行することを拒否以上の2つのジョブを実行することはできません。 3つのうちの1つは不変の状態で「受け入れられた」状態にとどまっています。クラスタモードのSPARKは、同時に

ハードウェア

4 Data Node with spark clients, 24gb ram, 4processors 

クラスタメトリックは、十分なコアを使用すると、最終的に第三のアプリを実行するための唯一の方法を見ることができるアプリケーションマネージャで
Apps Submitted 3 
Apps Pending 1 
Apps Running 2 
Apps Completed 0 
Containers Running 4 
Memory Used 8GB 
Memory Total 32GB 
Memory Reserved 0B 
VCores Used 4 
VCores Total 8 
VCores Reserved 0 
Active Nodes 2 
Decommissioned Nodes 0 
Lost Nodes 0 
Unhealthy Nodes 0 
Rebooted Nodes 0 

実行している1を殺すことですがあるはず示し、
application_1504018580976_0002 adm com.x.app1 SPARK default 0 [date] N/A RUNNING UNDEFINED 2 2 5120 25.0 25.0 
application_1500031233020_0090 adm com.x.app2 SPARK default 0 [date] N/A RUNNING UNDEFINED 2 2 3072 25.0 25.0 
application_1504024737012_0001 adm com.x.app3 SPARK default 0 [date] N/A ACCEPTED UNDEFINED 0 0 0 0.0 0.0 

実行中のアプリケーションには、2倍のコンテナと2倍の割り当て済みのvcores、25%のキューがあります。クラスターの25%すべての3つのアプリケーションのための

展開コマンド。

/usr/hdp/current/spark2-client/bin/spark-submit 
--master yarn 
--deploy-mode cluster 
--driver-cores 1 
--driver-memory 512m 
--num-executors 1 
--executor-cores 1 
--executor-memory 1G 
--class com..x.appx ../lib/foo.jar 

キャパシティスケジューラ

yarn.scheduler.capacity.default.minimum-user-limit-percent = 100 
yarn.scheduler.capacity.maximum-am-resource-percent = 0.2 
yarn.scheduler.capacity.maximum-applications = 10000 
yarn.scheduler.capacity.node-locality-delay = 40 
yarn.scheduler.capacity.root.accessible-node-labels = * 
yarn.scheduler.capacity.root.acl_administer_queue = * 
yarn.scheduler.capacity.root.capacity = 100 
yarn.scheduler.capacity.root.default.acl_administer_jobs = * 
yarn.scheduler.capacity.root.default.acl_submit_applications = * 
yarn.scheduler.capacity.root.default.capacity = 100 
yarn.scheduler.capacity.root.default.maximum-capacity = 100 
yarn.scheduler.capacity.root.default.state = RUNNING 
yarn.scheduler.capacity.root.default.user-limit-factor = 1 
yarn.scheduler.capacity.root.queues = default 
+0

あなたは4つのデータノードを言う。しかし、何かが間違っています。それは言う:VCores合計8 と:アクティブノード2 – Venkat

+0

こんにちはVenkat、私は(6箱>> 4箱にスパーククライアント)。各ボックスには4つのコアがあります。私はここで何が欠けていますか? –

答えて

0

あなたの設定:

yarn.scheduler.capacity.maximum-am-resource-percent = 0.2 

は意味します

total vcores(8) x maximum-am-resource-percent(0.2) = 1.6 

1.6は、部分的vcoresは意味がありませんので、2に切り上げます。つまり、一度に2つのアプリケーションマスターしか持てないため、一度に2つのジョブしか実行できません。

ソリューションは、0.5のような高い値にyarn.scheduler.capacity.maximum-am-resource-percentをつり上げます。

+0

それは動作します!ありがとうございました。私はすでにそれを変えたと思った。 「オーバープロビジョニング作業」はありますか?例えば。開発プラットフォーム用に2.0%。または、絶対最大設定値は0.5ですか? (つまり、50%を指定すると4AMコア// 8コア= 4AMコア+ 4つの実行コア) –

+0

1.0を指定すると100%を指定できます。ただし、AMだけが実行されており、マッパーやレデューサーが作業を行うための残量がなく、1.0に設定することはお勧めしません。 'maximum-am-resource-percent'を低く設定しすぎると、アプリケーションが待ち行列に入り(あなたの場合のように)、' PENDING'アプリケーションが表示されます。 – tk421

関連する問題