企业官网建站流程,国外免费源码网站,wordpress返回一直加载,深圳福田有哪些公司分析回答
1、flink数据倾斜的表现#xff1a;
任务节点频繁出现反压#xff0c;增加并行度也不能解决问题
部分节点出现OOM异常#xff0c;是因为大量的数据集中在某个节点上#xff0c;导致该节点内存被爆#xff0c;任务失败重启
2、数据倾斜产生的原因#x…分析回答
1、flink数据倾斜的表现
任务节点频繁出现反压增加并行度也不能解决问题
部分节点出现OOM异常是因为大量的数据集中在某个节点上导致该节点内存被爆任务失败重启
2、数据倾斜产生的原因
业务上有严重的数据热点比如滴滴打车的订单数据中北京、上海等几个城市的订单量远远超过其他地区
技术上大量使用了 KeyBy、GroupBy 等操作错误的使用了分组 Key人为产生数据热点。
3、解决问题的思路
业务上要尽量避免热点 key 的设计例如我们可以把北京、上海等热点城市分成不同的区域并进行单独处理
技术上出现热点时要调整方案打散原来的 key避免直接聚合此外 Flink 还提供了大量的功能可以避免数据倾斜。
3、Flink 任务数据倾斜场景和解决方案
A、两阶段聚合解决 KeyBy 热点
首先把分组的 key 打散比如加随机后缀对打散后的数据进行聚合把打散的 key 还原为真正的 key二次 KeyBy 进行结果统计然后输出。
DataStream sourceStream ...;
resultStream sourceStream.map(record - {Record record JSON.parseObject(record, Record.class);String type record.getType();record.setType(type # new Random().nextInt(100));return record;}).keyBy(0).window(TumblingEventTimeWindows.of(Time.minutes(1))).aggregate(new CountAggregate()).map(count - {String key count.getKey.substring(0, count.getKey.indexOf(#));return RecordCount(key,count.getCount);})//二次聚合.keyBy(0).process(new CountProcessFunction);
resultStream.sink()...env.execute()...
复制代码
B、GroupBy Aggregation 分组聚合热点问题:
将SQL 拆成了内外两层第一层通过随机打散 100 份的方式减少数据热点当然这个打散的方式可以根据业务灵活指定。
select date,type,sum(pv) as pv
from(selectdate,type,sum(count) as pvfrom tablegroup bydate,type,floor(rand()*100) --随机打散成100份 )group by date,type;
复制代码
C、Flink 消费 Kafka 上下游并行度不一致导致的数据倾斜
Flink 消费 Kafka 的数据时是推荐上下游并行度保持一致即 Kafka 的分区数等于 Flink Consumer 的并行度。
但是会有一种情况为了加快数据的处理速度来设置 Flink 消费者的并行度大于 Kafka 的分区数。如果你不做任何的设置则会导致部分 Flink Consumer 线程永远消费不到数据。需要设置 Flink 的 Redistributing也就是数据重分配。
dataStream.setParallelism(2)// 采用REBALANCE分区策略重分区.rebalance() //.rescale().print().setParallelism(4);
复制代码
Rebalance 分区策略数据会以 round-robin 的方式对数据进行再次分区可以全局负载均衡。Rescale 分区策略基于上下游的并行度会将数据以循环的方式输出到下游的每个实例中 喵呜面试助手一站式解决面试问题你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] - 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享