无法使用 Flink 和 Gelly 实现高 CPU 利用率



我已经尝试了一段时间的 Flink 流,使用像 Yahoo 流基准这样的基准测试:https://github.com/yahoo/streaming-benchmarks 应该给系统带来压力,但我从未达到令人满意的 CPU 利用率 - 事实上,它主要低至 ~25%,使用所有可用的系统内核(并行性 = 节点*核心)和每个核心一个 TaskManager 插槽。

最近,我开始使用 Gelly,Flink 的图形 API,使用一些提供的示例算法(例如 Pagerank),批处理数据集从数万到数亿个顶点不等。

我占用了四个任务管理器,每个任务管理器有 32 个内核,并且按照我设置的文档的建议taskmanager.numberOfTaskSlots: 32parallelism.default: 128.

即使我增加这些值,平均 CPU 利用率也永远不会超过 40%。因此,由于我的资源未充分利用,我的性能较低。

我还想指出这样一个事实,即在某些情况下,我注意到并行度级别(和 CPU 利用率)较低时性能更好。

我错过了什么?

源中具有更多唯一键和更多聚合运算符的数据越多,CPU 级别就越高。例如,我每秒有 250k 条消息进入 kafka(flink 源每秒读取的量相同),具有近 170K 个唯一键、5 分钟翻转窗口和每条消息 15 个聚合。我有一个 3 节点、16 个核心 flink 集群,源并行度为 15,聚合并行度为 48,接收器并行度为 3。我的 CPU 使用率在每个节点中始终在 85-90% 左右。

您可以只输入更多消息,并复制聚合逻辑以对每条消息执行更多操作。尝试从每条消息中获取更多唯一键。

相关内容

  • 没有找到相关文章

最新更新