我一直在试验 Flink 流式传输,使用 Yahoo 流式传输基准测试之类的基准测试:https ://github.com/yahoo/streaming-benchmarks这应该会给系统带来压力,但我从未达到令人满意的 CPU 利用率 - 在事实上,使用所有可用系统内核(并行度 = 节点*内核)和每个内核一个 TaskManager 插槽时,它主要低至 ~25%。
最近,我开始使用 Gelly,Flink 的 Graph API 使用一些提供的示例算法(例如 Pagerank),批处理从数万到数亿个顶点的数据集。
我占用了四个 TaskManager,每个具有 32 个内核,并且按照我设置的文档的建议taskmanager.numberOfTaskSlots: 32
和parallelism.default: 128
.
即使我增加这些值,平均 CPU 利用率也永远不会超过 40%。因此,由于我的资源没有得到充分利用,我的绩效很低。
我还想指出这样一个事实,在某些情况下,我注意到在较低的并行度(和 CPU 利用率)下性能更好。
我错过了什么?