2017-04-05 13 views
1

私はすべてYARN(Hadoop 2.6.0/CDH 5.5)上に配備されたSparkバージョン(1.6,2.0,2.1)を混在させています。私は、他に何が実行されているかにかかわらず、特定のアプリケーションがYARNクラスターのリソースを枯渇させないことを保証しようとしています。YARNで実行しているときにSparkスケジューラプールはどのように機能しますか?

シャッフルサービスを有効にして、Fair Scheduler Poolsの一部をSparkのドキュメントに記載されているように設定しました。私は、リソースが不足しないことを決して望ん優先度の高いアプリケーションのための別のプールを作成し、ITリソースのminShareを与えた:

<?xml version="1.0"?> 
<allocations> 
    <pool name="default"> 
    <schedulingMode>FAIR</schedulingMode> 
    <weight>1</weight> 
    <minShare>0</minShare> 
    </pool> 
    <pool name="high_priority"> 
    <schedulingMode>FAIR</schedulingMode> 
    <weight>1</weight> 
    <minShare>24</minShare> 
    </pool> 
</allocations> 

私たちYARNクラスタ上スパークアプリケーションを実行すると、私がいることがわかります私が設定プールが認識されている:私は​​に私の呼び出しでspark.scheduler.poolを設定していていても

17/04/04 11:38:20 INFO scheduler.FairSchedulableBuilder: Created pool default, schedulingMode: FAIR, minShare: 0, weight: 1 
17/04/04 11:38:20 INFO scheduler.FairSchedulableBuilder: Created pool high_priority, schedulingMode: FAIR, minShare: 24, weight: 1 

しかし、私は、私のアプリケーションが新しいhigh_priorityプールを使用していることが表示されません。つまり、クラスタが定期的に活動すると、優先度の高いアプリケーションで必要なリソースが得られなくなります。

17/04/04 11:39:49 INFO cluster.YarnScheduler: Adding task set 0.0 with 1 tasks 
17/04/04 11:39:50 INFO scheduler.FairSchedulableBuilder: Added task set TaskSet_0 tasks to pool default 
17/04/04 11:39:50 INFO spark.ExecutorAllocationManager: Requesting 1 new executor because tasks are backlogged (new desired total will be 1) 
17/04/04 11:40:05 WARN cluster.YarnScheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 

私はここで何が欠けていますか?私の同僚と私はYARNでプリエンプションを試みましたが、それは何もしませんでした。そして、YARNには、YARN queuesと呼ばれるSparkスケジューラプールに非常に似た概念があることがわかりました。だから今、我々は2つの概念が何らかの形で矛盾しているかどうかはわかりません

優先度の高いプールを期待どおりに機能させるにはどうすればよいですか? SparkスケジューラプールとYARNキューの間に何らかの矛盾がありますか? YARNキューがリソースに間でアプリケーションを管理するためのものである一方、スパークスケジューラプールは、リソースアプリケーション内を管理するためのものである:

答えて

2

誰かover on the spark-users listは私が何を期待届かない理由を説明する何かを明らかにしました。私は後者を必要とし、誤って前者を使用していました。

これは、SparkのドキュメントJob Schedulingで説明されています。 Sparkの技術的な意味(Sparkアプリケーション内のアクション)と私の同僚としての「仕事」の混乱と、クラスタリングされたアプリケーションを意味するためによく使用されています。

関連する問題