我已经尝试使用Flink流媒体一段时间了,使用雅虎流媒体基准测试等基准测试:https://github.com/yahoo/streaming-benchmarks这应该会给系统带来压力,但我从来没有达到令人满意的CPU利用率 - 实际上它是使用所有可用的系统核心(parallelism = nodes * cores)和每个核心一个TaskManager插槽,主要低至约25%。
最近,我开始使用Gelly,Flink的Graph API,使用一些提供的示例算法(例如Pagerank),批量处理数据集,从数万到数亿个顶点不等。
我占用了四个32个核心的TaskManagers,根据文档的建议,我设置了taskmanager.numberOfTaskSlots: 32
和parallelism.default: 128
。
即使我增加这些值,平均CPU利用率也不会超过40%。因此,由于我的资源没有得到充分利用,我的性能很低。
我还想指出一个事实,在某些情况下,我注意到更低的并行度级别(以及CPU利用率)会有更好的性能。
我错过了什么?
答案 0 :(得分:0)
源中包含更多唯一键和更多聚合运算符的更多数据必须使您的CPU级别更高。例如,我每秒有250k消息进入kafka(链接源每秒读取的消息数量),具有近170K唯一键,5分钟滚动窗口和每条消息15个聚合。我有一个3节点,16核心的flink群集,具有源并行度15,聚合并行度48和宿并行度3。每个节点的CPU使用率一直保持在85-90%左右。
您可以输入更多消息,然后复制聚合逻辑以对每条消息执行更多操作。尝试从每条消息中获取更多唯一键。