官方的flink文档指出,对于cpu中的每个核心,必须同时分配1个插槽并将并行级别提高1。我的一个定制操作符需要1个以上的cpu进行计算(这就是heron的工作方式)。我的系统的cpu是2.5。但是flink只使用1个cpu。你知道我如何配置flink使用更多的cpu只有一个插槽吗?
eh57zj3b1#
“每个核一个插槽”只是一个经验法则。没有什么能强迫你这么做。每个子任务(操作符链的示例)都是单线程的,但是任务管理器中的插槽以及机器或容器中的任务管理器将使用提供给它们的所有资源。
uqzxnwby2#
您可以使用一个插槽,但在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操作符的并行度为1,但是内部并行度由 map 方法。
map
2条答案
按热度按时间eh57zj3b1#
“每个核一个插槽”只是一个经验法则。没有什么能强迫你这么做。
每个子任务(操作符链的示例)都是单线程的,但是任务管理器中的插槽以及机器或容器中的任务管理器将使用提供给它们的所有资源。
uqzxnwby2#
您可以使用一个插槽,但在flink代码中使用多线程操作
例如在scala,
那么flink操作符的并行度为1,但是内部并行度由
map
方法。