造成数据倾斜的原因以及解决方案
一、造成数据倾斜的原因
1、数据分布不均匀
某些键值或者分区的数据量远大于其他,导致部分节点负载过重。
2、热点Key集中
某些Key被频繁访问或计算,导致对应的计算节点压力过大。
3、Hash算法不合理
Hash函数分布不均匀,使部分槽位集中过多数据。
4、业务逻辑导致
比如Join时某一方数据过于集中,造成单点处理压力。
5、数据倾斜导致资源竞争
导致内存溢出、网络拥堵或任务长时间阻塞。
二、解决方案
1、调整数据分区策略
2、根据数据实际分布设计合理的分区键,避免热点。
3、使用随机前缀打散数据
4、给热点Key加随机前缀,均匀分布后再聚合。
5、采用广播Join替代Shuffle Join
6、小表广播到各节点,避免大表倾斜。
7、合并小分区,避免过多小文件
8、减少资源消耗。
9、增加计算资源,扩容节点
10、通过提升并行度降低单节点压力。
11、使用自定义Hash算法或一致性Hash
12、保证数据均匀分布,减少倾斜。
13、过滤无效或重复数据
14、减少数据量。
15、监控和诊断
16、定期监控数据分布和任务执行情况,及时优化。
上一篇:Spring ai的基础
下一篇:数据库出现死锁的案例
相关文章
-
接口优化的几种方法
使用那种方法进行接口优化,取决于不同的业务场景,常见的优化方法:
NEW个对象 2024-10-22
-
Redis Slot迁移时需要写多少个迁移命令?底层原理全解析
Redis Cluster Slot迁移并不是“一条命令迁移一个Slot”,而是“以Key为粒度进行迁移”。因此迁移命令数量本质上等于Slot内Key的数量(通常按批次拆分执行)。Slot只是逻辑映射单位,真正搬迁的是Key。
NEW个对象 2026-06-09
-
事务传播
事务传播
NEW个对象 2025-01-01