微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我只是将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

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

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

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

任何帮助将不胜感激!

解决方法

{p> 3中描述了

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

,

由于您使用掌舵图来启动Kubernetes(又名K8s)上的Flink集群,因此我假设您正在谈论独立的K8s模式。实际上,“应用程序”模式与1.10及更低版本中的作业集群非常相似。 因此,您可以像下面这样在update-package -reinstall的{​​{1}}字段中设置作业参数。

args

如果您真的是本机K8s模式,则可以在jobmanager-job.yaml命令之后直接添加。

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

注意: 请记住,独立K8和本地K8之间的主要区别在于动态资源分配。在纯模式下,我们有一个嵌入式K8s客户端,因此Flink JobManager可以根据需要分配/释放TaskManager Pod。当前,纯模式只能在Flink命令(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 )中使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。