欢迎来到魔据教育大数据学院,专注大数据工程师培养!
当前位置:赛车彩票 > 新闻动态 > 行业资讯 > MapReduce 数据倾斜原因和解决方案(一)

彩票开奖: MapReduce 数据倾斜原因和解决方案(一)

时间:2018-09-27 10:22:20作者:[!--zuozhe--]

赛车彩票 www.d6sa.cn MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:

  1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。

  2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。

  3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。

  什么是数据倾斜及数据倾斜是怎么产生

  简单来说数据倾斜就是数据的key 的分化严重不均,造成一部分数据很多,一部分数据很少的局面。

  举个 word count 的入门例子,它的map 阶段就是形成 (“aaa”,1)的形式,然后在reduce 阶段进行 value 相加,得出 “aaa” 出现的次数。若进行 word count 的文本有100G,其中 80G 全部是 “aaa” 剩下 20G 是其余单词,那就会形成 80G 的数据量交给一个 reduce 进行相加,其余 20G 根据 key 不同分散到不同 reduce 进行相加的情况。如此就造成了数据倾斜,临床反应就是 reduce 跑到 99%然后一直在原地等着 那80G 的reduce 跑完。

 

  这样就能清楚看到,数据经过 map后,由于不同key 的数据量分布不均,在shuffle 阶段中通过 partition 将相同的 key 的数据打上发往同一个 reducer 的标记,然后开始 spill (溢写)写入磁盘,最后merge成最终map阶段输出文件。

  如此一来 80G 的 aaa 将发往同一个 reducer ,由此就可以知道 reduce 最后 1% 的工作在等什么了。

  为什么说数据倾斜与业务逻辑和数据量有关

  从另外角度看数据倾斜,其本质还是在单台节点在执行那一部分数据reduce任务的时候,由于数据量大,跑不动,造成任务卡住。若是这台节点机器内存够大,CPU、网络等资源充足,跑 80G 左右的数据量和跑10M 数据量所耗时间不是很大差距,那么也就不存在问题,倾斜就倾斜吧,反正机器跑的动。所以机器配置和数据量存在一个合理的比例,一旦数据量远超机器的极限,那么不管每个key的数据如何分布,总会有一个key的数据量超出机器的能力,造成 reduce 缓慢甚至卡顿。

  业务逻辑造成的数据倾斜会多很多,日常使用过程中,容易造成数据倾斜的原因可以归纳为几点:

  容易造成数据倾斜的原因

  分组 注:group by 优于distinct group

  情形:group by 维度过小,某值的数量过多

  后果:处理某值的reduce非常耗时

  去重 distinct count(distinct xx)

  情形:某特殊值过多

  后果:处理此特殊值的reduce耗时

  连接 join

  情形1:其中一个表较小,但是key集中

  后果1:分发到某一个或几个Reduce上的数据远高于平均值

  情形2:大表与大表,但是分桶的判断字段0值或空值过多

  后果2:这些空值都由一个reduce处理,非常慢

  数据倾斜的影响

  hadoop 中数据倾斜会极大影响性能和效率。

  数据分布(导致数据倾斜)

  正常的数据分布理论上都是倾斜的,就是我们所说的20-80原理:80%的财富集中在20%的人手中, 80%的用户只使用20%的功能 , 20%的用户贡献了80%的访问量 , 不同的数据字段可能的数据倾斜一般有两种情况:

  一种是唯一值非常少,极少数值有非常多的记录值(唯一值少于几千)

  一种是唯一值比较多,这个字段的某些值有远远多于其他值的记录数,但是它的占比也小于百分之一或千分之一

  或是这么说:

  1. 数据频率倾斜——某一个区域的数据量要远远大于其他区域。

  2. 数据大小倾斜——部分记录的大小远远大于平均值。

  分区

  常见的mapreduce分区方式为hash 和range ,

  hash partition 的好处是比较弹性,跟数据类型无关,实现简单(设定reduce个数就好,一般不需要自己实现)

  range partition 需要实现者自己了解数据分布, 有时候需要手工做sample取样. 同时也不够弹性, 表现在几个方面:

  1. 对同一个表的不同字段都需要实现不同的range partition, 对于时间这种字段根据查询类型的不同或者过滤条件的不同切分range 的大小都不一定.

  2 .有时候可能设计使用多个字段组合的情况, 这时候又不能使用之前单个字段的partition 类, 并且多个字段组合之间有可能有隐含的联系,比如出生日期和星座,商品和季节.

  3. 手工做sample 非常耗时间,需要使用者对查询使用的数据集的分布有领域知识.

  4. 分配方式是死的,reduce 个数是确定的,一旦某种情况下发生倾斜,调整参数

  其他的分区类型还有hbase 的hregionpartitioner 或者totalorder partitioner 等.

  解决方案一

  1、调优参数

  set hive.map.aggr=true;

  set hive.groupby.skewindata=true;

  hive.map.aggr=true:在map中会做部分聚集操作,效率更高但需要更多的内存。

  hive.groupby.skewindata=true:数据倾斜时负载均衡,当选项设定为true,生成的查询计划会有两个MRJob。第一个MRJob 中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的GroupBy Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MRJob再根据预处理的数据结果按照GroupBy Key分布到Reduce中(这个过程可以保证相同的GroupBy Key被分布到同一个Reduce中),最后完成最终的聚合操作。

  由上面可以看出起到至关重要的作用的其实是第二个参数的设置,它使计算变成了两个mapreduce,先在第一个中在 shuffle 过程 partition 时随机给 key 打标记,使每个key 随机均匀分布到各个 reduce 上计算,但是这样只能完成部分计算,因为相同key没有分配到相同reduce上,所以需要第二次的mapreduce,这次就回归正常 shuffle,但是数据分布不均匀的问题在第一次mapreduce已经有了很大的改善,因此基本解决数据倾斜。

  2、在 key 上面做文章,在 map 阶段将造成倾斜的key 先分成多组,例如 aaa 这个 key,map 时随机在 aaa 后面加上 1,2,3,4 这四个数字之一,把 key 先分成四组,先进行一次运算,之后再恢复 key 进行最终运算。

  3、能先进行 group 操作的时候先进行 group 操作,把 key 先进行一次 reduce,之后再进行 count 或者 distinct count 操作。

  4、join 操作中,使用 map join 在 map 端就先进行 join ,免得到reduce 时卡住。

  以上4中方式,都是根据数据倾斜形成的原因进行的一些变化。要么将 reduce 端的隐患在 map 端就解决,要么就是对 key 的操作,以减缓reduce 的压力。总之了解了原因再去寻找解决之道就相对思路多了些,方法肯定不止这4种。


 


更多大数据相关资讯敬请关注魔据教育,为您分享最及时的大数据资讯。
学习大数据敬请关注魔据教育微信二维码。
魔据教育微信二维码

【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至[email protected],我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉及言论、版权与本站无关。

全国咨询热线:18501996998,值班手机:18501996998(7*24小时)

在线咨询:张老师QQ 320169340

企业合作服务专线:010-82340234-821, 院校合作洽谈专线:010-82340234

Copyright 2001-2019 魔据教育 - 北京华育兴业科技有限公司 版权所有,京ICP备17018991号-2

免费在线咨询赛车彩票

免费索取技术资料立即索取

大数据技术交流QQ:226594285

电话咨询010-82340234

  • 观念变革打开发展新天地 2019-06-16
  • 《习近平谈治国理政》英文翻译团队:让中国声音被更多人倾听 2019-06-16
  • 探访南方古丝路 跟着郑和下南洋 春城壹网 七彩云南 一网天下 2019-06-15
  • 火到怀疑人生!这些抖音网红款奶茶,你统统拔草了吗? 2019-06-08
  • 跟着“减肥导师”孙俪学习健康减肥诀窍! 2019-06-08
  • 西部网(陕西新闻网)www.cnwest.com 2019-06-02
  • 互联网基金违规销售乱象:巧立名目送红包、送份额 2019-05-22
  • 2018国际产学研用合作会议在南昌举行 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-12
  • 广东金林村:农民爱写诗 2019-05-11
  • 二哈冲进轻轨“调戏”乘客 工作人员急追 2019-05-11
  • 南方电网首座500千伏智能变电站投运 2019-04-28
  • 为什么说一直辛苦劳作的农民没有富起来?而不说一直勤劳的农民没有富起来? 2019-04-28
  • 东博会16个国家企业参展 国际展区人气旺 2019-04-12
  • 走路开车看手机是把生命当儿戏(社会观察) 2019-04-05
  • 399| 940| 658| 766| 659| 691| 74| 274| 968| 810|