感谢大佬,现在基本可以确定是数据倾斜导致ck缓慢和反压严重
理由:
1.在webui查看计算子subtasks信息,3个subtask中其中一个的数据量只有其他两个的1/3
2.将key添加随机数后,计算性能直线上升(当然只是为了测试,结算结果显然不是预期的)

之前我做过分布聚合来解决缓解数据倾斜问题

需求:比如有两个字段:url,respontse_time,按url
keyby,一分钟时间窗口,计算该url的响应时间(respontse_time)中位数
这里明显几个首页url的访问量会非常大,有些详情页url可能就访问量很小,这就肯定会有数据倾斜

我之前的分布聚合步骤是:
第一步聚合中:在url后添加1~50的整型随机数,keyby后使用RoaringBitmap缓存respontse_time.
结果类似于
(www.baidu.com1,[1,2,3])
(www.baidu.com2,[4,5,6])
第二步聚合中:将url后缀去除,再次keyby后,将第一轮的RoaringBitmap缓存的数据整合
结果类似于
(www.baidu.com,[1,2,3,4,5,6])
最后将RoaringBitmap里的全窗口数据计算最终中位数结果
www.baidu.com  (3+4)/2=3.5

现在看来应该提升不佳,因为是计算中位数,就我目前对中位数的原理理解,无论如何都必须将全窗口数据缓存到窗口结束才能触发结果计算,也就是我上面的步骤,虽然有分步,但实际上只是分步缓存,而不是分步计算,不能像sum和count计算,可以在分步聚合中,逐步累加中间结果

对于这类有不能增量累加的数据倾斜场景,不知大佬有没有比较好的解决知道



--
Sent from: http://apache-flink.147419.n8.nabble.com/

回复