如何在提交作业之前获取 Flink 任务管理器编号?

时间:2021-06-17 02:18:16

标签: apache-flink flink-streaming

我有一个 Flink Datastream 作业由

启动
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(taskmanagernumber * x) // set env parallelism this line

env.addSource...map...addSink...
env.execute()

我想控制与 taskmanager number 相关的 env 并行度,就像上面的代码。

有办法吗?或者有什么解决方法可以设置与任务管理器编号相关的并行度?

1 个答案:

答案 0 :(得分:0)

您可以使用 reactive scheduler,它会根据集群提供的任何内容自动调整并行性。

您不必在作业本身中设置并行度。您可以在启动作业时在命令行中进行设置:

flink run -p <parallelism> <jar-file> <arguments>

如果您不知道集群有多少可用插槽,您可以从 REST API 获取信息。 /overview 返回如下内容:

{
  taskmanagers: 2,
  slots-total: 2,
  slots-available: 2,
  jobs-running: 0,
  jobs-finished: 0,
  jobs-cancelled: 0,
  jobs-failed: 0,
  flink-version: "1.13.1",
  flink-commit: "a7f3192"
}

slots-available 正是您要找的。所以你可以做类似的事情

flink run -p `curl -s http://localhost:8081/overview | jq '.["slots-available"]'` ...
相关问题