数据倾斜
是指在分布式计算中,由于数据分布不均匀导致某些节点处理的数据量远大于其他节点,从而使得整个计算过程的效率降低。
现实场景举例:
用户行为数据分析:
例如,某个电商平台上的VIP用户可能贡献了大部分的订单数据,使得处理VIP用户的节点负载远高于处理普通用户的节点。
日志分析:
例如,某个新闻网站上的热点新闻产生的访问日志量可能远大于其他新闻,使得处理热点新闻的日志节点负载过高。
社交网络分析:
例如,某个社交媒体平台上的明星用户可能拥有数百万的粉丝,处理这些用户的社交关系数据的节点负载远高于处理普通用户的节点。
金融交易数据分析:
例如,某个股票交易平台上,某些热门股票的交易量可能远大于其他股票,处理这些热门股票的交易数据的节点负载远高于处理其他股票的节点。
引发的问题
资源浪费:
由于大部分计算资源集中在处理大数据量的节点上,其他节点则处于相对空闲状态,导致整个集群的资源利用率低下。
性能瓶颈:
受数据倾斜影响的节点需要处理远超正常负载的工作量,这可能导致这些节点成为整个系统的性能瓶颈。任务在这些节点上的执行时间显著增加,进而拖慢整个分布式计算任务的完成速度。
调度难度增大:
在大规模分布式环境中,数据倾斜还会影响作业调度策略的有效性和效率,加大了集群管理与优化的难度。
如何解决?
拆分
二次分表
隔离
放在一个单独的数据库
[Ref] 什么是数据倾斜,会带来哪些问题?如何解决?