我已经用Flink streaming做了一段时间的实验,使用了像Yahoo streaming benchmark:https://github.com/yahoo/streaming-benchmarks这样的基准测试,它应该给系统带来压力,但我从来没有达到令人满意的CPU利用率--事实上,使用所有可用的系统核心(并行度=节点*核心)和每个核心一个TaskManager插槽,它主要是低至约25%。
最近,我开始使用Gelly,Flink的Graph API,使用一些提供的示例算法(例如Pagerank),批处理数据集从数万到数亿个顶点。
我占用了四个TaskManagers,每个32个内核,并且按照文档的建议,我设置了taskmanager.numberOfTaskSlots: 32和parallelism.default: 128。
即使我增加这些值,平均CPU利用率也永远不会超过40%。因此,由于我的资源没有得到充分利用,我实现了较低的性能。
我还想指出这样一个事实,在某些情况下,我注意到较低的并行度级别(和CPU利用率)具有更好的性能。
我遗漏了什么?
发布于 2019-01-15 22:14:52
源中具有更多唯一键和更多聚合运算符的数据越多,CPU级别就越高。例如,我每秒有25万条消息进入kafka (flink源每秒读取同样多的消息),几乎有170K的唯一键,5分钟的翻滚窗口和每条消息的15个聚合。我有一个3节点、16核的flink集群,源并行度为15,聚合并行度为48,宿并行度为3。我的CPU使用率在每个节点上始终保持在85-90%左右。
您只需注入更多消息,并复制聚合逻辑以对每条消息执行更多操作。尝试从每条消息中获取更多的唯一键。
https://stackoverflow.com/questions/48317438
复制相似问题