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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Flink和Gelly无法实现高CPU利用率相关的知识,希望对你有一定的参考价值。

我已经尝试使用Flink流媒体一段时间,使用雅虎流媒体基准测试等基准:https://github.com/yahoo/streaming-benchmarks应该给系统带来压力,但我从来没有达到过令人满意的CPU利用率 - 实际上它主要是低至约25%使用所有可用的系统核心(parallelism = nodes * cores)和每个核心一个TaskManager插槽。

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

我占用了四个32个核心的TaskManagers,根据文档的建议,我设置了taskmanager.numberOfTaskSlots: 32parallelism.default: 128

即使我增加这些值,平均CPU利用率也不会超过40%。因此,由于我的资源没有得到充分利用,我的性能很低。

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

我错过了什么?

答案

源中具有更多唯一键和更多聚合运算符的数据越多,您的CPU级别就越高。例如,我有250k消息每秒kafka(flink源每秒读取多少),具有近170K唯一密钥,5分钟翻滚窗口和每个消息15个聚合。我有一个3节点,16个核心的flink集群,具有源并行性15,聚合并行性48和接收并行性3.我的每个节点的CPU使用率一直在85-90%左右。

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

以上是关于使用Flink和Gelly无法实现高CPU利用率的主要内容,如果未能解决你的问题,请参考以下文章

Flink Gelly - 创建图形时类型不匹配

Flink Gelly 扩展边缘类并在 DataSet 中使用

Flink Gelly 在计算期间更新图

Gelly Library 可以用于 Flink 中类似于 Spark 中的 Graph Frame 的图形查询吗

运行 Apache Flink 作业时链接失败

如何导入 Apache Flink SNAPSHOT 工件?