Hive优化.pdf


立即下载 咿呀哟
2025-04-11
数据 reduce map Reduce 倾斜 分布 均衡 活动 Group distinct
153.4 KB

Hive常见优化
一、数据倾斜
1、什么是数据倾斜?Hadoop 框架的特性决定最怕数据倾斜
•由于数据分布不均匀,造成数据大量的集中到一点,造成数据热点。
节点间数据分布不均衡,会造成map 端每个 map 任务的工作量不同,即 map 端数据倾斜。
Map-reduce,把相同 key 提交给同一个 reduce,如果 key 不均衡就会造成不同的 reduce 的
工作量不同。
以京东首页活动为例,曝光率大的是大活动,曝光率小的是小活动:
假如 reduce1处理的是小活动,reduce2处理大活动,reduce2干的活比其他 reduce多很多,
会出现其他 reduce执行完毕了,reduce2还在缓慢执行。
症状:map 阶段快,reduce 阶段非常慢;
某些 map很快,某些 map 很慢;
某些 reduce很快,某些 reduce奇慢。
如下情况:
A、数据在节点上分布不均匀
B、join 时 on 关键词中个别值量很大(如 null 值)
C、count(distinct ),在数据量大的情况下,容易数据倾斜,因为 count(distinct)是按 group by 字
段分组,按 distinct字段排序。
其中 A 无法避免。B 见后边的 Join 章节。C语法上有时无法避免
如何解决数据倾斜?实际上是没办法避免的,这里的解决只是个别情况起效:
有数据倾斜的时候进行负载均衡
set hive.groupby.skewindata = false;
当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map
的输出结果会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处
理的结果是相同的 Group By Key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的
目的;第二个 MR Job 再根据预处理的数据结果按照 Group By Key 分布到 Reduce 中(这
个过程可以保证相同的 Group By Key 被分布到同一个 Reduce 中),最后完成最终的聚合操
作。
二、 Join 、MapJoin、Group by
Join
按照 join 的 key 进行分发,而在 join左边的表


数据/reduce/map/Reduce/倾斜/分布/均衡/活动/Group/distinct/ 数据/reduce/map/Reduce/倾斜/分布/均衡/活动/Group/distinct/
-1 条回复
登录 后才能参与评论
-->