繁体   English   中英

如何在应用程序模式下将 java arguments 传递给 Flink 作业工件

[英]How to pass java arguments to Flink job artifacts in Application Mode

我只是将 Flink 从 1.10 版本升级到 1.11。 在 1.11 中,Flink 提供了新的特性,用户可以在 Kube.netes 上以应用模式部署作业。 https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deployment/kube.netes.html#deploy-session-cluster

在V1.10中,我们启动Flink K8s集群,然后通过run将作业提交给Flink

exec ./bin/flink run \
  -d \
  /streakerflink_deploy.jar \
    --arg1 blablabla
    --arg2 blablabla
    --arg3 blablabla
    ...

我们通过这个命令传递 java arguments。

但是,在 V1.11 中,如果我们运行 Application 模式,则不需要运行上面的flink run命令。 我想知道我们如何将 arguments 传递给应用程序模式下的 Flink 作业(也称为作业集群)?

任何帮助将不胜感激!

Flink 在 Kube.netes 上的应用模式在文档中有描述。 您必须创建一个包含您的作业的 Docker 图像。 可以使用./bin/flink run-application [...]执行作业,如文档中所述。

由于您使用 helm chart 在 Kube.netes(又名 K8s)上启动 Flink 集群,我假设您在谈论独立的 K8s 模式。 其实Application模式和1.10之前的job cluster很像。 因此,您可以在jobmanager-job.yamlargs字段中设置作业 arguments,如下所示。

...
args: ["standalone-job", "--job-classname", "org.apache.flink.streaming.examples.join.WindowJoin", "--windowSize", "3000", "--rate", "100"]
...

如果你真的是说原生的K8s模式,那么直接在flink run-application命令后面加上即可。

$ ./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

注意:请记住,独立 K8s 和原生 K8s 模式之间的主要区别在于动态资源分配。 在原生模式下,我们有一个嵌入式 K8s 客户端,因此 Flink JobManager 可以按需分配/释放 TaskManager pod。 目前,native mode 只能在 Flink 命令( kube.netes-session.shflink run-application )中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM