数据倾斜理解:数据层的分布式处理过程中,出现明显的Map或Reduce过程的数据IO 的量级有巨大变化 。
可能原因,分两类:真倾斜和假倾斜
一、假倾斜:本身数据无倾斜,但处理时不均衡导致的数据
倾斜现象
1) 原因:机器配置不一、网络带宽及其通信不一,导
致相同数据量处理情况下,任务的执行程度有明显
的差异。
解决方法:均衡机器配置,标签式解决方法属于更
高级更生产化的解决方法。
2) 原因:程序Bug导致的假倾斜
解决方法:优化代码,解决掉Bug即可。
二、真倾斜:数据真的存在不均衡,而且比较大
1) 原因:输入数据存在大块和小块的严重问题,比如
说:一个大文件128M,还有1000个小文件,每
个1KB。
解决方法:任务输入前做文件合并,将众多小文件
合并成一个大文件。
2) 原因:对数据可切分并行特性应用不正确。比如:
10G的一个rc,或是orc,lzo,和100个128M的
rc,orc,lzo 在并行处理时,不会出现倾斜。如果格
式为gzip,snappy 等不可切分格式,则出现一个
Map进程处理10G的文件的严重倾斜情况。
解决方法:当数据不能利用切分并行计算时,一定
要合理计算出文件的占磁盘大小,最好不要超过
200M以上。
3) 原因:Join 端产生大数据量Key的合并情况,经
如说有视频流中的刷流量情况,会员帐号当中的共
享帐号情况。
解决方法:找到该种黑名单种子列表,在Map阶
段时候,即将其过滤掉。
4) 万能贴解决:hive.groupby.skewindata,通过
任务先分散并行执行一个阶段,然后再全局合并。
HIVE数据倾斜的可能原因有哪些,主要解决方法有哪些
最新推荐文章于 2024-01-09 23:36:38 发布