首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在应用程序模式下将java参数传递给Flink作业工件

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

Stack Overflow用户
提问于 2020-09-02 15:25:42
回答 2查看 905关注 0票数 1

我刚刚将Flink从版本1.10升级到1.11。在1.11中,Flink提供了新功能,用户可以在Kubernetes上以应用程序模式部署作业。https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deployment/kubernetes.html#deploy-session-cluster

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

代码语言:javascript
复制
exec ./bin/flink run \
  -d \
  /streakerflink_deploy.jar \
    --arg1 blablabla
    --arg2 blablabla
    --arg3 blablabla
    ...

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

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

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-04 11:23:50

由于您正在使用helm chart在Kubernetes(也称为K8s)上启动Flink集群,因此我假设您正在谈论独立的K8s模式。实际上,应用程序模式与1.10及更早版本中的工作集群非常相似。因此,您可以在jobmanager-job.yamlargs字段中设置作业参数,如下所示。

代码语言:javascript
复制
...
args: ["standalone-job", "--job-classname", "org.apache.flink.streaming.examples.join.WindowJoin", "--windowSize", "3000", "--rate", "100"]
...

如果您真的指的是本机K8s模式,那么可以直接在flink run-application命令之后添加它。

代码语言:javascript
复制
$ ./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 pods。目前,本机模式只能用于Flink命令(kubernetes-session.shflink run-application)。

票数 1
EN

Stack Overflow用户

发布于 2020-09-02 21:38:31

docs中描述了Flink在Kubernetes上的应用模式。您必须创建一个包含您的作业的Docker镜像。可以使用文档中所述的./bin/flink run-application [...]执行该作业。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63700645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档