Flink 1.8 版本如何进行 TaskManager 的资源控制

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

Flink 1.8 版本如何进行 TaskManager 的资源控制

龙逸尘
Dear community,
    我搭建了一个实时计算平台,由于历史遗留问题,目前使用的 Flink 版本是社区版1.5.0,hadoop版本是2.7.3,采用flink on
yarn ha部署,直接部署在物理机上没有使用 K8S,服务启动采用 flink run 脚本提交 yarn per-job 任务。
    目前想将 Flink 版本升级到 1.8 以上的版本,但是遇到了资源控制的问题,情况具体描述如下:
    1.5 版本:
        任务采用 Legacy 运行模式,一个 TaskManager 对应一个 slot,通过在命令行中设置 -yn 参数来控制 TM
的数量,设置 -ytm 参数来控制 TM 的内存,设置 -s 参数来控制任务的总 cpu 数(slot 数*taskmanager 数),脚本示例如下:

        flink run -m yarn-cluster -d -yjm 2048 -ys 1 -yn 2 -ytm 4096
WordCount.jar

    1.8 版本:
        任务已经废除 Legacy 运行模式,并将 -yn 参数置为 deprecated,log 如下:
        The argument yn is deprecated in will be ignored
        追踪源码发现,slot 数仅仅与任务的并行度有关,所以无法通过命令行进行限制总内存与 CPU 数目

    我的问题:
        1.由于用户代码是直接提交到平台上的,无法知道程序的并行度,是否有机制可以预先限制YARN per-job 模式下 Flink
任务的总内存与 CPU 数目?
        2.各位公司搭建的实时计算平台,一般是如何进行运算资源的限制的?

    期待解答,祝好!
Reply | Threaded
Open this post in threaded view
|

Re: Flink 1.8 版本如何进行 TaskManager 的资源控制

LakeShen
Flink任务自身无法隔离CPU,我想了一下,在内存方面,你可以结合用户输入的参数提前计算出来任务使用的内存大小,同样,VCore也是。
最近我们这边也准备限制用户申请的资源。

龙逸尘 <[hidden email]> 于2019年10月7日周一 下午4:50写道:

> Dear community,
>     我搭建了一个实时计算平台,由于历史遗留问题,目前使用的 Flink 版本是社区版1.5.0,hadoop版本是2.7.3,采用flink on
> yarn ha部署,直接部署在物理机上没有使用 K8S,服务启动采用 flink run 脚本提交 yarn per-job 任务。
>     目前想将 Flink 版本升级到 1.8 以上的版本,但是遇到了资源控制的问题,情况具体描述如下:
>     1.5 版本:
>         任务采用 Legacy 运行模式,一个 TaskManager 对应一个 slot,通过在命令行中设置 -yn 参数来控制 TM
> 的数量,设置 -ytm 参数来控制 TM 的内存,设置 -s 参数来控制任务的总 cpu 数(slot 数*taskmanager
> 数),脚本示例如下:
>
>         flink run -m yarn-cluster -d -yjm 2048 -ys 1 -yn 2 -ytm 4096
> WordCount.jar
>
>     1.8 版本:
>         任务已经废除 Legacy 运行模式,并将 -yn 参数置为 deprecated,log 如下:
>         The argument yn is deprecated in will be ignored
>         追踪源码发现,slot 数仅仅与任务的并行度有关,所以无法通过命令行进行限制总内存与 CPU 数目
>
>     我的问题:
>         1.由于用户代码是直接提交到平台上的,无法知道程序的并行度,是否有机制可以预先限制YARN per-job 模式下 Flink
> 任务的总内存与 CPU 数目?
>         2.各位公司搭建的实时计算平台,一般是如何进行运算资源的限制的?
>
>     期待解答,祝好!
>
Reply | Threaded
Open this post in threaded view
|

Re: Flink 1.8 版本如何进行 TaskManager 的资源控制

Xintong Song
逸尘你好,

像你说的这种情况,可以先根据作业的并发数算出总共需要多少个slot,然后通过配置每个TM的slot数和资源大小来控制总资源开销。相关配置如下:

   - 单个TM的vcore数:yarn.containers.vcores
   - 单个TM的内存大小:taskmanager.heap.size
   - 单个TM中的slot数量:taskmanager.numberOfTaskSlots

上述配置可以在flink-conf.yaml配置文件中修改,也可以作为动态配置添加在 flink run
命令的末尾,在yarn上提交时动态配置的格式为 '-yD <key>=<value>' 。

Thank you~

Xintong Song



On Tue, Oct 8, 2019 at 1:59 PM LakeShen <[hidden email]> wrote:

> Flink任务自身无法隔离CPU,我想了一下,在内存方面,你可以结合用户输入的参数提前计算出来任务使用的内存大小,同样,VCore也是。
> 最近我们这边也准备限制用户申请的资源。
>
> 龙逸尘 <[hidden email]> 于2019年10月7日周一 下午4:50写道:
>
> > Dear community,
> >     我搭建了一个实时计算平台,由于历史遗留问题,目前使用的 Flink 版本是社区版1.5.0,hadoop版本是2.7.3,采用flink
> on
> > yarn ha部署,直接部署在物理机上没有使用 K8S,服务启动采用 flink run 脚本提交 yarn per-job 任务。
> >     目前想将 Flink 版本升级到 1.8 以上的版本,但是遇到了资源控制的问题,情况具体描述如下:
> >     1.5 版本:
> >         任务采用 Legacy 运行模式,一个 TaskManager 对应一个 slot,通过在命令行中设置 -yn 参数来控制 TM
> > 的数量,设置 -ytm 参数来控制 TM 的内存,设置 -s 参数来控制任务的总 cpu 数(slot 数*taskmanager
> > 数),脚本示例如下:
> >
> >         flink run -m yarn-cluster -d -yjm 2048 -ys 1 -yn 2 -ytm 4096
> > WordCount.jar
> >
> >     1.8 版本:
> >         任务已经废除 Legacy 运行模式,并将 -yn 参数置为 deprecated,log 如下:
> >         The argument yn is deprecated in will be ignored
> >         追踪源码发现,slot 数仅仅与任务的并行度有关,所以无法通过命令行进行限制总内存与 CPU 数目
> >
> >     我的问题:
> >         1.由于用户代码是直接提交到平台上的,无法知道程序的并行度,是否有机制可以预先限制YARN per-job 模式下 Flink
> > 任务的总内存与 CPU 数目?
> >         2.各位公司搭建的实时计算平台,一般是如何进行运算资源的限制的?
> >
> >     期待解答,祝好!
> >
>