我有一个 Flink Datastream 作业由
启动val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(taskmanagernumber * x) // set env parallelism this line
env.addSource...map...addSink...
env.execute()
我想控制与 taskmanager number 相关的 env 并行度,就像上面的代码。
有办法吗?或者有什么解决方法可以设置与任务管理器编号相关的并行度?
答案 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"]'` ...