Flink任务自身无法隔离CPU,我想了一下,在内存方面,你可以结合用户输入的参数提前计算出来任务使用的内存大小,同样,VCore也是。 最近我们这边也准备限制用户申请的资源。
龙逸尘 <[email protected]> 于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.各位公司搭建的实时计算平台,一般是如何进行运算资源的限制的? > > 期待解答,祝好! >
