资源均衡问题

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

资源均衡问题

nobleyd
当前的flink资源分配问题。我一个任务3个算子,算子A并行度为1,算子B并行度为10,算子C并行度15。集群5台机器。我怎么保证算子B和C在5台机器完全均衡呢?我不介意算子A在哪,但算子B和C必须完全均衡到5个机器。


算子更多了就更复杂了,部分算子的并行度不是5的倍数,会导致越来越多的类似B和C这些算子在5台机器的不均衡。
Reply | Threaded
Open this post in threaded view
|

Re: 资源均衡问题

Xintong Song
Flink 现阶段并不支持你说的这种针对特定算子的负载均衡。如果采用默认的 slot sharing 策略,是可以通过调整每台机器上的 tm 和
slot 个数来控制 cluster 总共只有 15 个 slot,这样可以保证 C 在 5 台机器上是均衡的。但是 B 目前是没有比较好的方法保证的。

Thank you~

Xintong Song



On Mon, Sep 21, 2020 at 5:45 PM 赵一旦 <[hidden email]> wrote:

>
> 当前的flink资源分配问题。我一个任务3个算子,算子A并行度为1,算子B并行度为10,算子C并行度15。集群5台机器。我怎么保证算子B和C在5台机器完全均衡呢?我不介意算子A在哪,但算子B和C必须完全均衡到5个机器。
>
>
> 算子更多了就更复杂了,部分算子的并行度不是5的倍数,会导致越来越多的类似B和C这些算子在5台机器的不均衡。
>
Reply | Threaded
Open this post in threaded view
|

Re: 资源均衡问题

nobleyd
我觉得这个非常必要需要解决,后续可以提升下。
我相信假设生产中flink集群如果是5台机器,不管slot是多少,对于任务来说,复杂算子的并行度自然会设置为5的倍数,非5倍数的一般可能是不可并行的算子(比如一些数据量极少的配置流等)。这些非5倍数的算子影响到5倍数算子的均衡分配会很麻烦。
目前使用1.10的cluster.evenly-spread-out-slots:
true可以保证如果算子都是5的倍数,所有算子都会均衡到5机器。但是不可避免会有部分非5倍数的算子,进而影响到复杂算子的均衡。

Xintong Song <[hidden email]> 于2020年9月22日周二 上午10:21写道:

> Flink 现阶段并不支持你说的这种针对特定算子的负载均衡。如果采用默认的 slot sharing 策略,是可以通过调整每台机器上的 tm 和
> slot 个数来控制 cluster 总共只有 15 个 slot,这样可以保证 C 在 5 台机器上是均衡的。但是 B
> 目前是没有比较好的方法保证的。
>
> Thank you~
>
> Xintong Song
>
>
>
> On Mon, Sep 21, 2020 at 5:45 PM 赵一旦 <[hidden email]> wrote:
>
> >
> >
> 当前的flink资源分配问题。我一个任务3个算子,算子A并行度为1,算子B并行度为10,算子C并行度15。集群5台机器。我怎么保证算子B和C在5台机器完全均衡呢?我不介意算子A在哪,但算子B和C必须完全均衡到5个机器。
> >
> >
> > 算子更多了就更复杂了,部分算子的并行度不是5的倍数,会导致越来越多的类似B和C这些算子在5台机器的不均衡。
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: 资源均衡问题

nobleyd
本身我的任务复杂点,CPU IDLE 正常在 80 - 90 %,每五分钟窗口闭合时刻CPU IDLE会降到 20-30
%。如果运气不好,任务再不均衡点,部分机器会存在短时间卡死状态,长久下去很容器导致flink进程失败。

赵一旦 <[hidden email]> 于2020年9月22日周二 下午1:09写道:

> 我觉得这个非常必要需要解决,后续可以提升下。
>
> 我相信假设生产中flink集群如果是5台机器,不管slot是多少,对于任务来说,复杂算子的并行度自然会设置为5的倍数,非5倍数的一般可能是不可并行的算子(比如一些数据量极少的配置流等)。这些非5倍数的算子影响到5倍数算子的均衡分配会很麻烦。
> 目前使用1.10的cluster.evenly-spread-out-slots:
> true可以保证如果算子都是5的倍数,所有算子都会均衡到5机器。但是不可避免会有部分非5倍数的算子,进而影响到复杂算子的均衡。
>
> Xintong Song <[hidden email]> 于2020年9月22日周二 上午10:21写道:
>
>> Flink 现阶段并不支持你说的这种针对特定算子的负载均衡。如果采用默认的 slot sharing 策略,是可以通过调整每台机器上的 tm 和
>> slot 个数来控制 cluster 总共只有 15 个 slot,这样可以保证 C 在 5 台机器上是均衡的。但是 B
>> 目前是没有比较好的方法保证的。
>>
>> Thank you~
>>
>> Xintong Song
>>
>>
>>
>> On Mon, Sep 21, 2020 at 5:45 PM 赵一旦 <[hidden email]> wrote:
>>
>> >
>> >
>> 当前的flink资源分配问题。我一个任务3个算子,算子A并行度为1,算子B并行度为10,算子C并行度15。集群5台机器。我怎么保证算子B和C在5台机器完全均衡呢?我不介意算子A在哪,但算子B和C必须完全均衡到5个机器。
>> >
>> >
>> > 算子更多了就更复杂了,部分算子的并行度不是5的倍数,会导致越来越多的类似B和C这些算子在5台机器的不均衡。
>> >
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: 资源均衡问题

Xintong Song
你的这个需求我是非常同意的。事实上,不管是在社区的邮件列表还是在我们的生产实践中,也都不是第一次遇到这样的需求了。


这个需求实现起来还是有一定难度的,这主要是由 Flink 目前的调度模型决定的。Flink 资源调度拆解为两层,ResourceManager
决定集群资源如何分配给作业,JobMaster 决定作业资源如何被 Task 使用。这就造成了 RM 不知道分配出去的 slot
到底是哪个算子在用,JM 不知道拿到的 slot 来自哪台机器。


针对你说的这个问题,我们也进行过一些讨论,目前来看还是需要先对 Flink
当前的调度模型做一些调整,前置任务比较多,短时间内可能还难以解决。相关前置任务有些已经在进行中或已完成(如
FLIP-119/FLIP-138/FLINK-18689 等),有些则还在设计讨论阶段。


Thank you~

Xintong Song



On Tue, Sep 22, 2020 at 1:17 PM 赵一旦 <[hidden email]> wrote:

> 本身我的任务复杂点,CPU IDLE 正常在 80 - 90 %,每五分钟窗口闭合时刻CPU IDLE会降到 20-30
> %。如果运气不好,任务再不均衡点,部分机器会存在短时间卡死状态,长久下去很容器导致flink进程失败。
>
> 赵一旦 <[hidden email]> 于2020年9月22日周二 下午1:09写道:
>
> > 我觉得这个非常必要需要解决,后续可以提升下。
> >
> >
> 我相信假设生产中flink集群如果是5台机器,不管slot是多少,对于任务来说,复杂算子的并行度自然会设置为5的倍数,非5倍数的一般可能是不可并行的算子(比如一些数据量极少的配置流等)。这些非5倍数的算子影响到5倍数算子的均衡分配会很麻烦。
> > 目前使用1.10的cluster.evenly-spread-out-slots:
> > true可以保证如果算子都是5的倍数,所有算子都会均衡到5机器。但是不可避免会有部分非5倍数的算子,进而影响到复杂算子的均衡。
> >
> > Xintong Song <[hidden email]> 于2020年9月22日周二 上午10:21写道:
> >
> >> Flink 现阶段并不支持你说的这种针对特定算子的负载均衡。如果采用默认的 slot sharing 策略,是可以通过调整每台机器上的 tm 和
> >> slot 个数来控制 cluster 总共只有 15 个 slot,这样可以保证 C 在 5 台机器上是均衡的。但是 B
> >> 目前是没有比较好的方法保证的。
> >>
> >> Thank you~
> >>
> >> Xintong Song
> >>
> >>
> >>
> >> On Mon, Sep 21, 2020 at 5:45 PM 赵一旦 <[hidden email]> wrote:
> >>
> >> >
> >> >
> >>
> 当前的flink资源分配问题。我一个任务3个算子,算子A并行度为1,算子B并行度为10,算子C并行度15。集群5台机器。我怎么保证算子B和C在5台机器完全均衡呢?我不介意算子A在哪,但算子B和C必须完全均衡到5个机器。
> >> >
> >> >
> >> > 算子更多了就更复杂了,部分算子的并行度不是5的倍数,会导致越来越多的类似B和C这些算子在5台机器的不均衡。
> >> >
> >>
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: 资源均衡问题

xuliantao
请问下,cluster.evenly-spread-out-slots 参数在yarn下不生效吗? 我期望所有的task,均匀分布在所有的tm上。 除了最大并发的算子均匀分布外, 其他小并发的算子,也尽可能均匀分配在所有的tm上。