Flink CPU 配置

Flink CPU configuration

官方 Flink 文档指出,对于 cpu 中的每个内核,您必须分配 1 个插槽并同时将并行度级别提高 1。

我的一个自定义运算符需要超过 1 个 CPU 来计算(在 Heron 中它是这样工作的)。我系统的 cpu 是 2.5。但是 Flink 只用了 1cpu。你知道我如何配置 Flink 以使用更多 CPU 只有 1 个插槽吗?

“每个核心一个插槽”只是一个经验法则。没有强制执行这一点。

每个子任务(运算符链的一个实例)都是单线程的,但是任务管理器中的槽以及机器或容器中的任务管理器将使用所有可用的资源。

你可以使用一个插槽,但在你的 flink 代码中使用多线程操作

例如在 scala 中,

env.setParallelism(1)
class myMap extends RichMapFunction {
  override def map(...) = {
    data.toParArray()... // this is scala concurrent collection, other language has similar ones, like c/cpp OMP, java multi-thread
  }
}

那么 flink operator 的并行度为 1,但内部并行度由您的 map 方法控制。