如何在应用程序模式中将java参数传递给Flink作业工件
我只是将Flink从1.10版升级到1.11版。在1.11中,Flink提供了新功能,用户可以在Kubernetes上以应用程序模式部署作业。 在V1.10中,我们启动Flink K8s集群,然后通过运行将作业提交给Flink如何在应用程序模式中将java参数传递给Flink作业工件,java,kubernetes,apache-flink,Java,Kubernetes,Apache Flink,我只是将Flink从1.10版升级到1.11版。在1.11中,Flink提供了新功能,用户可以在Kubernetes上以应用程序模式部署作业。 在V1.10中,我们启动Flink K8s集群,然后通过运行将作业提交给Flink exec ./bin/flink run \ -d \ /streakerflink_deploy.jar \ --arg1 blablabla --arg2 blablabla --arg3 blablabla ... 我们通
exec ./bin/flink run \
-d \
/streakerflink_deploy.jar \
--arg1 blablabla
--arg2 blablabla
--arg3 blablabla
...
我们通过这个命令传递java参数
但是,在V1.11中,如果运行应用程序模式,则不需要运行上面的flink run
命令。我想知道如何在应用程序模式(又称作业集群)中将参数传递给Flink作业
任何帮助都将不胜感激 中描述了Flink在Kubernetes上的应用模式。您必须创建一个包含作业的Docker映像。作业可以使用文档中描述的
/bin/flink run application[…]
执行。由于您使用helm chart在Kubernetes(又名K8s)上启动flink群集,我假设您正在谈论独立K8s模式。实际上,应用程序模式与1.10及之前版本中的作业集群非常相似。
因此,您可以在jobmanager job.yaml
的args
字段中设置作业参数,如下所示
...
args: ["standalone-job", "--job-classname", "org.apache.flink.streaming.examples.join.WindowJoin", "--windowSize", "3000", "--rate", "100"]
...
如果您真正指的是原生K8s模式,那么可以直接将其添加到flink run应用程序
命令之后
$ ./bin/flink run-application -p 8 -t kubernetes-application \
-Dkubernetes.cluster-id=<ClusterId> \
-Dtaskmanager.memory.process.size=4096m \
-Dkubernetes.taskmanager.cpu=2 \
-Dtaskmanager.numberOfTaskSlots=4 \
-Dkubernetes.container.image=<CustomImageName> \
local:///opt/flink/examples/streaming/WindowJoin.jar \
--windowSize 3000 --rate 100
$./bin/flink运行应用程序-p8-t kubernetes应用程序\
-Dkubernetes.cluster id=\
-Dtaskmanager.memory.process.size=4096m\
-Dkubernetes.taskmanager.cpu=2\
-Dtaskmanager.numberOfTaskSlots=4\
-Dkubernetes.container.image=\
local:///opt/flink/examples/streaming/WindowJoin.jar \
--WindowsSize 3000--速率100
注:
请记住,独立K8s和本机K8s模式之间的关键区别在于动态资源分配。在本机模式下,我们有一个嵌入式K8s客户端,因此Flink JobManager可以根据需要分配/发布TaskManager吊舱。目前,本机模式只能在Flink命令中使用(
kubernetes session.sh
,Flink运行应用程序
)。我看到了。但我用舵图来启动库伯内特斯星系团。我在opt/flink/usrlib中打包了job.jar。我不知道如何在这种方法中传递论点。我想,杨旺的回答可能会有所帮助。否则,你能详细说明你想要达到的目标吗?