我已经尝试flink流媒体有一段时间了,使用yahoo流媒体基准测试:https://github.com/yahoo/streaming-benchmarks 这应该会给系统带来压力,但我从来没有达到令人满意的cpu利用率-事实上,使用所有可用的系统核心(并行度=节点*核心)和每个核心一个taskmanager插槽时,cpu利用率主要低至约25%。
最近,我开始使用gelly,flink的graphapi,使用提供的一些示例算法(例如pagerank),批量处理从数万到数亿个顶点的数据集。
我占用了四个TaskManager,每个TaskManager有32个内核,正如我设置的文档所建议的那样 taskmanager.numberOfTaskSlots: 32
以及 parallelism.default: 128
.
即使我增加这些值,平均cpu利用率也不会超过40%。因此,由于我的资源没有得到充分利用,我的绩效很低。
我还想指出一个事实,在某些情况下,我注意到更低的并行级别(和cpu利用率)会带来更好的性能。
我错过了什么?
1条答案
按热度按时间xjreopfe1#
源中的数据越多,具有更多的唯一键和更多的聚合运算符,必须提高cpu级别。例如,我每秒有25万条消息进入kafka(flink source每秒读取的内容与之相同),其中有将近17万个唯一键,5分钟的滚动窗口,每条消息有15个聚合。我有一个3节点,16核的flink集群,源并行15,聚合并行48,汇并行3。我的cpu使用率在每个节点上始终保持在85-90%左右。
您只需输入更多消息,并复制聚合逻辑以对每条消息执行更多操作。尝试从每条消息中获取更多的唯一密钥。