谈谈数据倾斜是如何发生的?并给出优化方案-笔试面试资料

这是qklbishe.com第5904 篇笔试面试资料
提供答案分析,通过本文《谈谈数据倾斜是如何发生的?并给出优化方案-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

谈谈数据倾斜是如何发生的?并给出优化方案
谈谈数据倾斜是如何发生的?并给出优化方案 零葬

1.数据倾斜指的是数据分布是不均匀的,导致有的任务执行的快有的任务执行的慢,比如,总共有10000个task,9997个task都在3分钟之内执行完成,但是剩余三个task却要在一两个小时才能执行完或者无法执行完。Hadoop和Spark的任务监控都能看到每个Task的执行时间,当观察到上述现象时就可以确定发生了数据倾斜。产生这种现象的本质是个别task处理的数据量远多于其他task,因为每个task拥有的资源是相同的处理大数据量的task的所需的时间自然要多。
2.数据倾斜绝大部分情况下是因为数据本身有倾斜的特点,绝大部分情况下的数据倾斜是Reduce端的数据倾斜,不代表Map端不会产生数据倾斜
3. Map端产生数据倾斜:多源输入并且文件不可切,且文件大小不一致
优化方案:处理数据时,若发现文件不可切且文件大小不一致,应该留意是否会放生map阶段的数据倾斜,暂无解决方案

4. Reduce端的数据倾斜:数据本身分布不均匀
优化方案:
(1) 大表jion小表。Hive:map side join。Spark:,将小表转化为Map进行广播,广播会将此 Map 发送到每个节点中,如果不进行广播,每个task执行时都会去获取该Map数据,造成了性能浪费。
(2) 大表jion大表,假设BigTableA和BigTableB进行Join。若BigTableA中包含大量重复的key K,BigTableB也存在大量重复的key K。
解决方案:将BigTableA拆分为两个表A1和A2,其中A1只包含K,A2包含除K外的其他所有key;将BigTableB分拆为两个表B1和B2,其中B1只包含K,B2包含除k外的其他所有key;将A1和B1进行reduce join得到join result 1,将A1和B2进行reduce join得到join result 2,将A2和B1进行reduce join得到join result 3,将A2和B2进行reduce join得到join result 4。将join result 1、join result 2、join result 3、join result 4进行union得到最终的结果。
(3) group by过程出现倾
解决方案:
两阶段聚合:阶段一:修改聚合key进行局部聚合。阶段二:按照原始key进行全局聚合。
Hive:需要将hive.groupby.skewindata设置为true
(4) 增加jvm内存,适用于唯一值,极少数值有非常多的记录值

今天 09:52:43 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 谈谈数据倾斜是如何发生的?并给出优化方案-笔试面试资料

提供最优质的资源集合

立即查看 了解详情