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.各位公司搭建的实时计算平台,一般是如何进行运算资源的限制的? 期待解答,祝好! |
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.各位公司搭建的实时计算平台,一般是如何进行运算资源的限制的? > > 期待解答,祝好! > |
逸尘你好,
像你说的这种情况,可以先根据作业的并发数算出总共需要多少个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.各位公司搭建的实时计算平台,一般是如何进行运算资源的限制的? > > > > 期待解答,祝好! > > > |
Free forum by Nabble | Edit this page |