You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by LakeShen <sh...@gmail.com> on 2020/04/23 09:58:44 UTC

Flink on k8s ,设置 taskmanager.heap.mb 对于 jvm 启动堆大小不生效

Hi 社区,

最近我在弄 Flink on k8s,使用的 Flink 版本为 Flink 1.6。作业模式为 standalone per job 模式。

我在创建启动 jobmanager 的时候,设置的 taskmanager.heap.mb 为 2000 mb,虽然在 flink web ui
上面看到的 jobmanager  的配置, taskmanager.heap.mb 的确是 2000mb,在我启动 taskmanager
deployment 的时候,我登录到 其中一个 pod 上看,发现 taskmanager 启动的 -xms 和 -xmx 都是 922mb。

我将 taskmanager.heap.mb 设置为 1000 mb,停止我的作业,重启,同样,登录到taskmanager 其中一个
pod,-xms 和 -xmx 都是 922mb,也就是说 设置的taskmanager.heap.mb 没有对 taskmanager 启动的
jvm 堆没有生效。

我看了源码,flink on k8s ,standalone per job 模式,taskmanager 会使用 taskmanager.sh
来启动。在 taskmanager.sh 中,taskmanager heap mb 是根据镜像中的,flink dist 目录下面,conf
目录中的 flink-conf.yaml 里面的配置来启动。

我现在在打镜像的时候,也会把flink-dist 目录打进去,同样把 taskmanager.heap.mb动态传入到
flink-conf.yaml中,但是最终我在启动我的作业的时候,登录到 taskmanager 的一个 pod 上面查看,发现其
flink-conf.yaml 里面, taskmanager.heap.mb 始终是 1024.

是不是在什么地方,把 taskmanager.heap.mb 写死到了 flink-conf.yaml 中呢?


Best,
LakeShen

Re: Flink on k8s ,设置 taskmanager.heap.mb 对于 jvm 启动堆大小不生效

Posted by LakeShen <sh...@gmail.com>.
好的 Xintong,我测试一波,非常感谢你的帮助 👍😁

Xintong Song <to...@gmail.com> 于2020年4月24日周五 上午11:48写道:

> 抱歉,我刚刚说的是 docker-compose.yaml 是只用 docker 不用 kubernetes 的情况。
>
> 对于 kubernetes,如果你是按照官方文档[1]推荐的方法部署 flink 的,那么直接把这个参数加在
> taskmanager-deployment.yaml 的 args 处应该就可以了。
>
> > args:
>
> - taskmanager
>
> *- Dtaskmanager.heap.size=2000m*
>
>
> Thank you~
>
> Xintong Song
>
>
> [1]
>
> https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/deployment/kubernetes.html
>
>
>
> On Fri, Apr 24, 2020 at 11:10 AM LakeShen <sh...@gmail.com>
> wrote:
>
> > Hi Xintong,
> >
> > 非常感谢你的回复。想再请教一个问题,什么地方会使用到 docker-compose.yaml  呢。
> >
> > 我目前使用一种绕开的方式解决这个问题,就是在 DockerFile 打镜像的时候,先把 conf 目录拷贝出来(这个里面的 TaskManger
> > 内存动态传入的)
> > 然后在 config.sh 中,强行设置了 FLINK-CONF-DIR . 但是我觉得你的方式更优雅一些。
> >
> > 所以想问一下 什么地方会使用到 docker-compose.yaml呢 。
> >
> > Best,
> > LakeShen
> >
> > Xintong Song <to...@gmail.com> 于2020年4月24日周五 上午10:49写道:
> >
> > > 应该没有其他地方去写 flink-conf.yaml,能把具体用来打镜像、动态写配置的命令或者脚本发一下吗?
> > >
> > > 另外你这个问题还有一种解决方案,是 taskmanager.heap.mb 通过 -D 参数传给 taskmanager.sh。可以在
> > > docker-compose.yaml 中 taskmanager command 处追加
> -Dtaskmanager.heap.mb=2000m
> > >
> > > Thank you~
> > >
> > > Xintong Song
> > >
> > >
> > >
> > > On Thu, Apr 23, 2020 at 5:59 PM LakeShen <sh...@gmail.com>
> > > wrote:
> > >
> > > > Hi 社区,
> > > >
> > > > 最近我在弄 Flink on k8s,使用的 Flink 版本为 Flink 1.6。作业模式为 standalone per job
> 模式。
> > > >
> > > > 我在创建启动 jobmanager 的时候,设置的 taskmanager.heap.mb 为 2000 mb,虽然在 flink web
> > ui
> > > > 上面看到的 jobmanager  的配置, taskmanager.heap.mb 的确是 2000mb,在我启动
> taskmanager
> > > > deployment 的时候,我登录到 其中一个 pod 上看,发现 taskmanager 启动的 -xms 和 -xmx 都是
> > 922mb。
> > > >
> > > > 我将 taskmanager.heap.mb 设置为 1000 mb,停止我的作业,重启,同样,登录到taskmanager 其中一个
> > > > pod,-xms 和 -xmx 都是 922mb,也就是说 设置的taskmanager.heap.mb 没有对 taskmanager
> > 启动的
> > > > jvm 堆没有生效。
> > > >
> > > > 我看了源码,flink on k8s ,standalone per job 模式,taskmanager 会使用
> > taskmanager.sh
> > > > 来启动。在 taskmanager.sh 中,taskmanager heap mb 是根据镜像中的,flink dist
> 目录下面,conf
> > > > 目录中的 flink-conf.yaml 里面的配置来启动。
> > > >
> > > > 我现在在打镜像的时候,也会把flink-dist 目录打进去,同样把 taskmanager.heap.mb动态传入到
> > > > flink-conf.yaml中,但是最终我在启动我的作业的时候,登录到 taskmanager 的一个 pod 上面查看,发现其
> > > > flink-conf.yaml 里面, taskmanager.heap.mb 始终是 1024.
> > > >
> > > > 是不是在什么地方,把 taskmanager.heap.mb 写死到了 flink-conf.yaml 中呢?
> > > >
> > > >
> > > > Best,
> > > > LakeShen
> > > >
> > >
> >
>

Re: Flink on k8s ,设置 taskmanager.heap.mb 对于 jvm 启动堆大小不生效

Posted by Xintong Song <to...@gmail.com>.
抱歉,我刚刚说的是 docker-compose.yaml 是只用 docker 不用 kubernetes 的情况。

对于 kubernetes,如果你是按照官方文档[1]推荐的方法部署 flink 的,那么直接把这个参数加在
taskmanager-deployment.yaml 的 args 处应该就可以了。

> args:

- taskmanager

*- Dtaskmanager.heap.size=2000m*


Thank you~

Xintong Song


[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/deployment/kubernetes.html



On Fri, Apr 24, 2020 at 11:10 AM LakeShen <sh...@gmail.com> wrote:

> Hi Xintong,
>
> 非常感谢你的回复。想再请教一个问题,什么地方会使用到 docker-compose.yaml  呢。
>
> 我目前使用一种绕开的方式解决这个问题,就是在 DockerFile 打镜像的时候,先把 conf 目录拷贝出来(这个里面的 TaskManger
> 内存动态传入的)
> 然后在 config.sh 中,强行设置了 FLINK-CONF-DIR . 但是我觉得你的方式更优雅一些。
>
> 所以想问一下 什么地方会使用到 docker-compose.yaml呢 。
>
> Best,
> LakeShen
>
> Xintong Song <to...@gmail.com> 于2020年4月24日周五 上午10:49写道:
>
> > 应该没有其他地方去写 flink-conf.yaml,能把具体用来打镜像、动态写配置的命令或者脚本发一下吗?
> >
> > 另外你这个问题还有一种解决方案,是 taskmanager.heap.mb 通过 -D 参数传给 taskmanager.sh。可以在
> > docker-compose.yaml 中 taskmanager command 处追加 -Dtaskmanager.heap.mb=2000m
> >
> > Thank you~
> >
> > Xintong Song
> >
> >
> >
> > On Thu, Apr 23, 2020 at 5:59 PM LakeShen <sh...@gmail.com>
> > wrote:
> >
> > > Hi 社区,
> > >
> > > 最近我在弄 Flink on k8s,使用的 Flink 版本为 Flink 1.6。作业模式为 standalone per job 模式。
> > >
> > > 我在创建启动 jobmanager 的时候,设置的 taskmanager.heap.mb 为 2000 mb,虽然在 flink web
> ui
> > > 上面看到的 jobmanager  的配置, taskmanager.heap.mb 的确是 2000mb,在我启动 taskmanager
> > > deployment 的时候,我登录到 其中一个 pod 上看,发现 taskmanager 启动的 -xms 和 -xmx 都是
> 922mb。
> > >
> > > 我将 taskmanager.heap.mb 设置为 1000 mb,停止我的作业,重启,同样,登录到taskmanager 其中一个
> > > pod,-xms 和 -xmx 都是 922mb,也就是说 设置的taskmanager.heap.mb 没有对 taskmanager
> 启动的
> > > jvm 堆没有生效。
> > >
> > > 我看了源码,flink on k8s ,standalone per job 模式,taskmanager 会使用
> taskmanager.sh
> > > 来启动。在 taskmanager.sh 中,taskmanager heap mb 是根据镜像中的,flink dist 目录下面,conf
> > > 目录中的 flink-conf.yaml 里面的配置来启动。
> > >
> > > 我现在在打镜像的时候,也会把flink-dist 目录打进去,同样把 taskmanager.heap.mb动态传入到
> > > flink-conf.yaml中,但是最终我在启动我的作业的时候,登录到 taskmanager 的一个 pod 上面查看,发现其
> > > flink-conf.yaml 里面, taskmanager.heap.mb 始终是 1024.
> > >
> > > 是不是在什么地方,把 taskmanager.heap.mb 写死到了 flink-conf.yaml 中呢?
> > >
> > >
> > > Best,
> > > LakeShen
> > >
> >
>

Re: Flink on k8s ,设置 taskmanager.heap.mb 对于 jvm 启动堆大小不生效

Posted by LakeShen <sh...@gmail.com>.
Hi Xintong,

非常感谢你的回复。想再请教一个问题,什么地方会使用到 docker-compose.yaml  呢。

我目前使用一种绕开的方式解决这个问题,就是在 DockerFile 打镜像的时候,先把 conf 目录拷贝出来(这个里面的 TaskManger
内存动态传入的)
然后在 config.sh 中,强行设置了 FLINK-CONF-DIR . 但是我觉得你的方式更优雅一些。

所以想问一下 什么地方会使用到 docker-compose.yaml呢 。

Best,
LakeShen

Xintong Song <to...@gmail.com> 于2020年4月24日周五 上午10:49写道:

> 应该没有其他地方去写 flink-conf.yaml,能把具体用来打镜像、动态写配置的命令或者脚本发一下吗?
>
> 另外你这个问题还有一种解决方案,是 taskmanager.heap.mb 通过 -D 参数传给 taskmanager.sh。可以在
> docker-compose.yaml 中 taskmanager command 处追加 -Dtaskmanager.heap.mb=2000m
>
> Thank you~
>
> Xintong Song
>
>
>
> On Thu, Apr 23, 2020 at 5:59 PM LakeShen <sh...@gmail.com>
> wrote:
>
> > Hi 社区,
> >
> > 最近我在弄 Flink on k8s,使用的 Flink 版本为 Flink 1.6。作业模式为 standalone per job 模式。
> >
> > 我在创建启动 jobmanager 的时候,设置的 taskmanager.heap.mb 为 2000 mb,虽然在 flink web ui
> > 上面看到的 jobmanager  的配置, taskmanager.heap.mb 的确是 2000mb,在我启动 taskmanager
> > deployment 的时候,我登录到 其中一个 pod 上看,发现 taskmanager 启动的 -xms 和 -xmx 都是 922mb。
> >
> > 我将 taskmanager.heap.mb 设置为 1000 mb,停止我的作业,重启,同样,登录到taskmanager 其中一个
> > pod,-xms 和 -xmx 都是 922mb,也就是说 设置的taskmanager.heap.mb 没有对 taskmanager 启动的
> > jvm 堆没有生效。
> >
> > 我看了源码,flink on k8s ,standalone per job 模式,taskmanager 会使用 taskmanager.sh
> > 来启动。在 taskmanager.sh 中,taskmanager heap mb 是根据镜像中的,flink dist 目录下面,conf
> > 目录中的 flink-conf.yaml 里面的配置来启动。
> >
> > 我现在在打镜像的时候,也会把flink-dist 目录打进去,同样把 taskmanager.heap.mb动态传入到
> > flink-conf.yaml中,但是最终我在启动我的作业的时候,登录到 taskmanager 的一个 pod 上面查看,发现其
> > flink-conf.yaml 里面, taskmanager.heap.mb 始终是 1024.
> >
> > 是不是在什么地方,把 taskmanager.heap.mb 写死到了 flink-conf.yaml 中呢?
> >
> >
> > Best,
> > LakeShen
> >
>

Re: Flink on k8s ,设置 taskmanager.heap.mb 对于 jvm 启动堆大小不生效

Posted by Xintong Song <to...@gmail.com>.
应该没有其他地方去写 flink-conf.yaml,能把具体用来打镜像、动态写配置的命令或者脚本发一下吗?

另外你这个问题还有一种解决方案,是 taskmanager.heap.mb 通过 -D 参数传给 taskmanager.sh。可以在
docker-compose.yaml 中 taskmanager command 处追加 -Dtaskmanager.heap.mb=2000m

Thank you~

Xintong Song



On Thu, Apr 23, 2020 at 5:59 PM LakeShen <sh...@gmail.com> wrote:

> Hi 社区,
>
> 最近我在弄 Flink on k8s,使用的 Flink 版本为 Flink 1.6。作业模式为 standalone per job 模式。
>
> 我在创建启动 jobmanager 的时候,设置的 taskmanager.heap.mb 为 2000 mb,虽然在 flink web ui
> 上面看到的 jobmanager  的配置, taskmanager.heap.mb 的确是 2000mb,在我启动 taskmanager
> deployment 的时候,我登录到 其中一个 pod 上看,发现 taskmanager 启动的 -xms 和 -xmx 都是 922mb。
>
> 我将 taskmanager.heap.mb 设置为 1000 mb,停止我的作业,重启,同样,登录到taskmanager 其中一个
> pod,-xms 和 -xmx 都是 922mb,也就是说 设置的taskmanager.heap.mb 没有对 taskmanager 启动的
> jvm 堆没有生效。
>
> 我看了源码,flink on k8s ,standalone per job 模式,taskmanager 会使用 taskmanager.sh
> 来启动。在 taskmanager.sh 中,taskmanager heap mb 是根据镜像中的,flink dist 目录下面,conf
> 目录中的 flink-conf.yaml 里面的配置来启动。
>
> 我现在在打镜像的时候,也会把flink-dist 目录打进去,同样把 taskmanager.heap.mb动态传入到
> flink-conf.yaml中,但是最终我在启动我的作业的时候,登录到 taskmanager 的一个 pod 上面查看,发现其
> flink-conf.yaml 里面, taskmanager.heap.mb 始终是 1024.
>
> 是不是在什么地方,把 taskmanager.heap.mb 写死到了 flink-conf.yaml 中呢?
>
>
> Best,
> LakeShen
>