mapreduce数据倾斜

MapReduce中数据倾斜的产生和解决办法详解 2017-10-23 细柳条 小秀才翻译铺     前言:数据倾斜是日常大数据查询中隐形的一个BUG,遇不到它时你觉得数据倾斜也就是书本博客上的一个无病呻吟的偶然案例,但当你遇到它是你就会懊悔当初怎么不多了解一下这个赫赫有名的事故。     当然你和数据倾斜的缘分深浅还是看你公司的业务逻辑和数据量有没有步入数据倾斜的领地。     说明:关于数据倾斜的产生 阅读详情

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

简单来说数据倾斜就是数据的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阶段输出文件。

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

解决方案一

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已经有了很大的改善,因此基本解决数据倾斜。

省一蓝桥杯嵌入式-09RTC实时时钟 RTC(Real-Time Clock)实时时钟,是一个独立的定时器RTC模块拥有一组连续的计数的计数器,在响应软件配置下,可提供时钟、日历、闹钟功能RTC能提供年月日时分秒等信息(可设置)在系统复位或从待机模式唤醒后,RTC的设置时间维持不变(这个我没实现,复位后时间也重置了,有能力的可以自己研究一下)持续时间跟踪:在主系统断电后或处于低功耗模式时,RTC仍继续工作,原理是有额外的电池为其供电(蓝桥杯板子没有这个备用电源,该功能无效。 阅读详情

相关推荐

安装了anaconda,pycharm导入numpy时提示没有该包(模块)?

**问题详情:**我安装了anaconda,在利用Pycharm学习numpy这个库的时候,导入numpy这个包的时候提示我没有nummpy这个模块:No module named numpy.如下图所示。 应该说安装了Anaconda,里边就自带了numpy这个库,就应该能够使用。我一个新手怎么搞得懂呢?于是网上查了查找到了一个解决办法,说是我项目的解释器应该设置为Anaconda安装目录下的python.exe,而不应该是系统自带的:https://blog.youkuaiyun.com/aanndd77/art

qq_39820505的博客 1万+

MapReduce数据倾斜产生的原因及其解决方案

例如select a,sum(1) from (select a, b from t group by a,b) group by a;countdistinct、group by、join等操作,触发了shuffle动作,导致全部相同key的值聚集在一个或几个节点上,很容易发生单点问题。对分布不均匀的数据,进行单独计算,首先对key做一层hash,把数据打散,让它的并行度变大,之后进行汇集数据预处理。数据倾斜就是数据的key的分化严重不均,造成一部分数据很多,一部分数据很少的局面。业务数据自带的特性;

运维仙人 1651

Halcon —— 图像像素类型与转换

图像类型 就目前工业领域主流的图像处理工具halcon来讲,有以下几张图像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。相互间的转换可通过convert_image_type算子完成,但盲目转换会导致图像像素值异常。 ‘byte’ 每像素1字节,无符号 值范围: (0到255) ‘int1’ 每像素1字节,有符号 值范围: (-128到127) ‘

baidu_35536188的博客 1万+

MapReduce中的数据倾斜简介及部分解决方案

阅读了网上别人整理写作的博客,了解了数据倾斜的一些大概情况。 查阅论文了解一下比较前沿的算法解决思路。(看了好几篇论文,找了几个有意思的解决方案和大家分享一下) 查阅Apache官方论坛,了解一些实际中的解决应用。 专业名词:data skew、partitioning skew、reduce skew、data locality 发现大概有两种优化思路,一种是在shuffle阶段做优化,使得re...

程序分析爱好者 862

Silvaco TCAD仿真例库——肖特基二极管反向击穿特性(案例)

本文详细解析了使用Silvaco TCAD仿真例库进行肖特基二极管反向击穿特性分析的完整案例。通过构建包含浮空P型保护环的平面结构,重点阐述了针对雪崩击穿仿真的关键步骤,包括高精度网格划分、碰撞电离模型(impact selb)的启用以及反向电压的精细扫描策略。文章深入探讨了漂移区掺杂浓度、保护环设计等参数对击穿电压的影响,并提供了实用的调试心得,旨在帮助工程师精准预测和优化功率肖特基二极管的反向耐压能力。

fire9的博客 724

Android GNSS 可视卫星星空图/卫星天顶图 原理及画法介绍

目录1 概念介绍2 绘制步骤2.1 获取卫星信息2.2 绘制底图 效果图: 1 概念介绍 首先介绍一下方位角和高度角的概念: 方位角:是从某点的指北(地理北极)方向线起,依顺时针方向到目标方向线之间的水平夹角。 高度角:从一点至观测目标的方向线与水平面间的夹角。 卫星天顶图 即是根据每一颗卫星的方位角和高度角将其画在以观测位置为中心的天顶图上。 天顶图其底图为由外向内的三个圆和四条直线。三个圆由外向内依次代表高度角0°、30°、60°,中心点代表90°;四条直线分别表示正北-正南、东北-西南、正东

x1471898145的博客 1万+

如何解决 MapReduce 数据倾斜的问题?

前言 本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系 正文 什么是数据倾斜? 数据倾斜是数据中的常见情况。 数据中不可避免地会出现离群值(outlier),并导致数据倾斜。 这些离群值会显著地拖慢 MapReduce 的执行。 常见的数据倾斜有以下几类 数据频率倾斜——某一个区域的数据量要远远大于其他区域。 数据大小倾斜——部分记录的大小远远大于平均值。 Ma

Shockang的博客 3万+

ESP32+LED12864液晶屏实战:手把手教你显示中文与自定义图标(附完整代码)

本文详细介绍了如何使用ESP32单片机驱动带字库的LED12864液晶屏,实现中文显示与自定义图标。从硬件选型、接线方案到驱动编写、字库解析,提供了完整的实战代码与优化技巧,并最终构建了一个智能家居控制面板的完整示例项目。

weixin_29212867的博客 144

Mapreduce怎么处理数据倾斜问题?

在这个例子中,每个单词被重复了10次,这样可以将原本分布不均匀的数据更均匀地分配给不同的Reducer。在 MapReduce 中,数据倾斜指的是在Reduce阶段中某个Reducer处理的数据量过大,导致该Reducer的处理时间过长,从而导致整个任务的运行时间变长。3.合并:在Map阶段后对数据进行合并,将一些数据量较小的数据块合并为一个数据块,以便更均匀地分配给Reducer。1.预处理:在Map阶段前对数据进行预处理,将数据分成更小的数据块,以便在Reduce阶段更均匀地分配数据。

zy1992As的博客 602

极化码理论及算法研究6-SCL、CA-SCL及matlab仿真

极化码译码算法5——SCL/CA-SCL译码算法系列目录1、引言2、串行抵消列表(SCL)译码算法2.1、路径度量PM 系列目录 (如要找其他内容,欢迎访问我的主页寻找) #前言 #极化码概述 #极化码定义 #极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 1、引言 在上一节中,介绍了经典的SC译码算法的理论原理以及其matlab仿真代码,SC译码算法具有较低的译码复杂度,但是由于每个译码的比特信息都依赖于前面所有的比特信息的译码结果,得

1万+

告别Root!用Python脚本一键解密Android微信EnMicroMsg.db数据库(附完整源码)

本文详细介绍了如何在非Root环境下使用Python脚本一键解密Android微信EnMicroMsg.db数据库。通过ADB调试接口和SQLCipher技术,实现自动化提取和解密微信聊天记录数据库,无需Root权限,适合数据分析师和普通用户安全备份数据。

weixin_29266007的博客 329

MapReduce如何解决数据倾斜问题

前言:数据倾斜是日常大数据查询中隐形的一个BUG,遇不到它时你觉得数据倾斜也就是书本博客上的一个无病呻吟的偶然案例,但当你遇到它是你就会懊悔当初怎么不多了解一下这个赫赫有名的事故。 当然你和数据倾斜的缘分深浅还是看你公司的业务逻辑和数据量有没有步入数据倾斜的领地。   说明:关于数据倾斜的产生原因我将结合 map 和 reduce 阶段中的 shuffle 来讲解,若是对 shuffle 有...

wyqwilliam的博客 3869

Altium Designer应用技巧1: 功能模块的复用方法

Altium Designer应用技巧1: 功能模块的复用方法      我们在使用Altium Designer进行电路图设计时,常会遇到功能模块的复用问题,例如我们经常需要将12V以DC-DC的方式转换成5V,这在很多线路板上都会应用到。现在我们普通的做法是,每个板子都重新绘制一遍,像这样DC-DC的电路,很浪费时间。那么如何采用提高工作效率呢?我们可以采取Altium Desi

snmplink的博客 1万+

【Hadoop】(五)MapReduce 如何解决数据倾斜问题_mapreduce 数据倾斜

简单来说数据倾斜就是数据的key 的分化严重不均,造成一部分数据很多,一部分数据很少的局面。举个 word count 的入门例子,它的map 阶段就是形成 (“aaa”,1)的形式,然后在reduce 阶段进行 value 相加,得出 “aaa” 出现的次数。若进行 word count 的文本有100G,其中 80G 全部是 “aaa” 剩下 20G 是其余单词,那就会形成 80G 的数据量交给一个 reduce 进行相加,其余 20G 根据 key 不同分散到不同 reduce 进行相加的情况。

2401_84615578的博客 1232

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Mapreduce 怎么处理数据倾斜问题?

MapReduce简介 MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义: 1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。 2)MapReduce是一个并行计算与运行软件框架(Software Framework)...

Pandaminn的博客 1522

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MapReduce 数据倾斜以及解决思路

MapReduce 数据倾斜以及解决思路 1.小背景 在mapreduce的分布式解决框架中,数据处理主要分为2个步骤,map阶段和reduce阶段 map阶段主要是数据转换,也就是按照预期把输入的数据进行转换,变为中间数据 中间数据再分发给reduce阶段作为输入数据源进行处理。 在这个过程中,由于数据本身按照设计的key规则划分时就不均匀,再加上使用默认的分区规则进行对key进行计算时,也有产生数据倾斜的可能(key.hashcode() % numberOfReduceTasks) 2.大背景

xiaohu21的博客 2173

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MapReduce数据倾斜解决方案

一.数据倾斜简介 1>.什么是数据倾斜   答:大量数据涌入到某一节点,导致此节点负载过重,此时就产生了数据倾斜。 2>.处理数据倾斜的两种方案   第一:重新设计key;   第二:设计随机分区; 二.模拟数据倾斜 数据: 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 ...

onway_goahead的博客 1227

MapReduce之数据倾斜问题

MapReduce是分为Map阶段和Reduce阶段,其实提高执行效率就是提高这两个阶段的执行效 率 默认情况下Map阶段中Map任务的个数是和数据的InputSplit相关的,InputSplit的个数一般是和Block块是有关联的,所以可以认为Map任务的个数和数据的block块个数有关系,针对Map任务的个数我们一般 是不需要干预的。 如果遇到海量小文件,可以考虑把小文件合并成大文件。使用hadoop提供的两个类型可以解决。 Reduce阶段:默认情况下reduce的个数是1个,所以现在Map.

MyySophia的博客 670

【笔记】Mapreduce数据倾斜与优化

一、数据倾斜数据分布:正常的数据分布理论上都是倾斜的,就是我们所说的20-80原理:80%的财富集中在20%的人手中, 80%的用户只使用20%的功能 , 20%的用户贡献了80%的访问量 。1.产生原因: Mapreduce程序在运行的时候,运行了大部分,但是还有部分reduce还在运行,甚至长时间运行,最终导致整个程序运行时间很长才结束。造成这种现象的主要原因是:reduce程序处理的key的

ZoeYen_ 1245

[MapReduce数据倾斜如何解决?]

碧云天,黄叶地,秋色连波,波上寒烟翠。山映斜阳天接水,芳草无情,更在斜阳外。黯乡魂,追旅思,夜夜除非,好梦留人睡。明月高楼休独倚,酒入愁肠,化作相思雨。

汤圆的博客 1029

mapreduce解决数据倾斜的思路

mapreduce解决数据倾斜的思路

freefish_yzx的博客 524

MapReduce、Hive、Spark中数据倾斜问题解决归纳总结

数据倾斜是什么 总的来说,你集群运行时发现MR或者Hive卡在99%不动时,或者Spark运行时出现OOM异常(OutOfMemoryError),或者成功执行但就是耗时过久时,既要考虑是否出现了数据倾斜。数据倾斜就是某些key对应的数据分化不均,导致部分reduce处理数据量过大,以至于其他reduce都执行完了它还在运行。 查看web UI、日志文件: 看是否出现map和reduce任务执行...

lzw2016的博客 1638

解决MapReduce数据倾斜

阅读本文可以带着下面问题: 1.map /reduce程序卡住的原因是什么? 2.根据原因,你是否能够想到更好的方法来解决?(企业很看重个人创作力) map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节

biaorger的专栏 2万+

MapReduce中的数据倾斜

最近几次被问到关于数据倾斜的问题,这里找了些资料也结合一些自己的理解. 在并行计算中我们总希望分配的每一个task 都能以差不多的粒度来切分并且完成时间相差不大,但是集群中可能硬件不同,应用的类型不同和切分的数据大小不一致总会导致有部分任务极大的拖慢了整个任务的完成时间,硬件不同就不说了,应用的类型不同其中就比如page rank 或者data mining 里面一些计算,它的每条记录...

Running-小猛的博客 359

hadoop mapReduce数据倾斜原因及解决方案

1.什么是数据倾斜 数据倾斜顾名思义就是数据分派不均匀,是对分布式系统或者集群产生的海量数据分配问题,如同你妈买了一百个苹果,给了你弟弟八十个,给你二十个,要求你们全都吃完了才会再买下一次的苹果(你们都喜欢吃苹果),这样子的分配方案显然是不合理的,你弟弟和你一天吃一样的苹果,那你苹果吃完了就得等你弟弟吃完所有苹果才会得到下一次的苹果,这段时间你会饥渴难耐有没有,而你弟弟还可能吃嗨了把持不住,一天吃了二十个拉肚子了,你就得等到他病好了吃完苹果才能得到下次的苹果,这无疑会让你们兄弟间心生隔阂,这就是著名的苹果

尤托匹亚的博客 1438

MapReduce相关优化以及解决数据倾斜问题

MapReduce的数据倾斜以及解决问题

weixin_45516268的博客 207
上一篇: 事实表,维度,度量,指标之间的关系
下一篇: 维度建模的缓慢变化维
February13
博客等级 码龄10年 26粉丝 93原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值