栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive数据倾斜

Hive数据倾斜

目录

1. 什么是数据倾斜

2. 造成数据倾斜的原因

3. 数据倾斜应对办法

4. 参考资料


1. 什么是数据倾斜 数据倾斜,即单个节点任务所处理的数据量远大于同类型任务所处理的数据量,导致该节点成为整个作业的瓶颈,这是分布式系统不可能避免的问题。

2. 造成数据倾斜的原因 从本质来说,导致数据倾斜有两种原因: 一是任务读取大文件,二是任 务需要处理大量相同键的数据。 任务需要处理大量相同键的数据,这种情况有以下 4 种表现形式: (1)  数据含有大量无意义的数据,例如空值( NULL )、空字符串等。 (2)含有倾斜数据在进行聚合计算时无法聚合中间结果,大量数据都需要经过 Shuffle 阶段的处理,引起数据倾斜。 (3)两表进行 Join ,都含有大量相同的倾斜数据键。 (4) 数据在计算时做多维数据集合,导致维度膨胀引起的数据倾斜。


3. 数据倾斜应对办法

根据上面描述的造成数据倾斜的原因,有针对性的应对即可。

(1)不可拆分大文件引发的数据倾斜

归档、不支持文件分割的压缩方式、以后有任务要读取压缩文件、单个map读取瓶颈、map读取倾斜

Map读取文件的数据倾斜:当集群的数据量增长到一定规模,有些数据需要 归档 或者转储,这时候 往往会对数据进行压缩;当对文件使用GZIP 压缩等 不支持文件分割操 作的压缩方式,在日后有作业涉及读取压缩后的文件时, 该压缩文件 只会 被一个 任务 所读取。如果该压缩文件很大,则处理该文件的Map 需要花费的时间会 远多于读取普通文件的Map 时间, 该Map任务会成为作业运行的瓶颈 。这种 情况也就是 Map读取文件 的数据倾斜。 应对办法:可以采用 bzip2 和 Zip 等支持文件分割的压缩算法 (2)无意义的空值数据 这些与业务无关的数据引入导致在进行分组聚合或 者在执行表连接时发生数据倾斜。对于这类问题引发的数据倾斜,在计算过 程中排除含有这类“ 异常 ” 数据即可。 (3) 两个 Hive 数据表连接时引发的数据倾斜 两表进行普通的 repartition join 时,如果表连接的键存在倾斜,那么在 Shuffle阶段必然会引起数据倾斜。 遇到这种情况,Hive 的通常做法还是启用两个作业,第一个作业处理没 有倾斜的数据,第二个作业将倾斜的数据存到分布式缓存中,分发到各个 Map任务所在节点。在 Map 阶段完成 join 操作,即 MapJoin ,这避免了 Shuffle,从而避免了数据倾斜。


4. 参考资料

本文内摘自《hive性能调优实践 》,感谢知识分享

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/720222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号