当前位置: 首页 > 知识库问答 >
问题:

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

夹谷鸿福
2023-03-14

我只是将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集群,然后通过run将作业提交给Flink

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

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

共有1个答案

谢唯
2023-03-14

由于您正在使用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-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。当前,本机模式只能在Flink命令(kubernetes-session.shFlink run-application)中使用。

 类似资料:
  • 问题内容: 我正在这样运行我的JavaFX应用程序: 类扩展。在特殊的FX线程中启动JavaFX窗口,但是在我的main方法中,我什至没有类的实例。 如何将非字符串参数(在我的情况下为 控制器 )传递给实例?它是有缺陷的设计吗? 问题答案: 通常,除了传递给您的主程序的程序参数外,无需将参数传递给主应用程序。想要这样做的唯一原因是创建一个可重用的对象。但这并不需要是可重用的,因为这是组装您的应用程

  • 问题内容: 我正在使用具有集成交付管道功能(https://jenkins.io/solutions/pipeline/)的Jenkins v2.1 来编排两个现有构建(构建和部署)。 在我的参数化构建中,我有3个用户参数设置,也需要在管道中选择该参数。 管道脚本如下: 除以外,此方法均正常运行。当我构建管道时,会引发以下错误: 如何解决此类型转换错误?甚至更好的是,有没有一种麻烦的方式可以将所有

  • 问题内容: 我正在使用pm2启动我的应用程序,但无法将参数传递给它。我正在使用的命令是pm2 start app.js-dev。尽管这永远有效。 问题答案: 您可以按照此票证所述进行操作:https : //github.com/Unitech/pm2/issues/13 尽管如果通过环境,则可能需要考虑利用环境变量。使用此工具,您可以创建一个变量,该环境中的任何进程都可以访问该变量。 因此,您有

  • 问题内容: 我有一个运行自定义gradle任务的Java应用程序,该应用程序在被调用时需要一些参数。这些是: Gradle任务如下所示: 我已尝试运行,但无法正常工作。 问题答案: 从Gradle 4.9开始,可以使用–args传递命令行参数。例如,如果要使用命令行参数启动应用程序,则可以使用 gradle run –args =’foo –bar’ 另请参阅Gradle应用程序插件 如何升级Gr

  • 问题内容: 我是cron工作的新手,不确定是否会奏效。 为了安全起见,我考虑过制作一个一页脚本,该脚本查找某些GET值(用户名,密码和安全代码),以确保只有计算机和知道这3种信息的人才能运行该命令。 我制作了脚本,并且可以在浏览器中运行该脚本,但是可以使用GET值运行cron作业吗? 一个例子就是我跑步 这可能吗? 问题答案: 仅当通过Web服务器调用脚本时,&关联数组才被初始化。通过命令行调用时

  • 问题内容: 谁能建议我如何将参数传递给线程? 另外,它如何用于匿名类? 问题答案: 你需要将构造函数中的参数传递给Runnable对象: 然后调用它: