带有Spark应用程序的纱线公平调度程序未按预期抢占

问题描述

我在Yarn群集中启用了Fairscheduling,具有以下队列配置:

    <queue name="queue_1">
    <weight>9.0</weight>
    <schedulingPolicy>fair</schedulingPolicy>
    <fairsharePreemptionTimeout>5</fairsharePreemptionTimeout>
    <fairsharePreemptionThreshold>1</fairsharePreemptionThreshold>

    <queue name="queue_1_1">
        <weight>4.4</weight>
        <queue name="queue_1_1_1">
            <weight>1.0</weight>
        </queue>
        <queue name="queue_1_2_1">
            <weight>3.0</weight>
        </queue>
        <queue name="queue_1_3_1">
            <weight>6.0</weight>
        </queue>
    </queue>
    <queue name="queue_1_2">
        <weight>4.4</weight>
        <queue name="queue_1_1_2">
            <weight>1.0</weight>
        </queue>
        <queue name="queue_1_2_2">
            <weight>3.0</weight>
        </queue>
        <queue name="queue_1_3_2">
            <weight>6.0</weight>
        </queue>
    </queue>
</queue>

<queuePlacementPolicy>
    <rule name="specified" create="false"/>
    <rule name="reject"/>
</queuePlacementPolicy>

当我在队列_1_1_1中运行spark作业时,启用了动态分配并且没有最大限制,它占用了集群中的所有可用资源。

但是,当我在queue_1_2_1中运行第二个Spark应用程序时,该应用程序具有与queue1相同的瞬时Fairshare,则会发生抢占,但不是我期望的50/50比率。

下面是两幅画,分别是资源分配的前后。

之前

enter image description here

之后

enter image description here

我已经指定了抢占率和超时,因为这个问题表明 YARN not preempting resources based on fair shares when running a Spark job

公平政策应仅在进行资源平衡时考虑内存,对吧?

可能是什么问题?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)