资料介绍
什么是数据倾斜?
对 Spark/Hadoop 这样的分布式大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。
对于分布式系统而言,理想情况下,随着系统规模(节点数量)的增加,应用整体耗时线性下降。如果一台机器处理一批大量数据需要 120 分钟,当机器数量增加到 3 台时,理想的耗时为 120 / 3 = 40 分钟。但是,想做到分布式情况下每台机器执行时间是单机时的1 / N,就必须保证每台机器的任务量相等。不幸的是,很多时候,任务的分配是不均匀的,甚至不均匀到大部分任务被分配到个别机器上,其它大部分机器所分配的任务量只占总量的小部分。比如一台机器负责处理 80% 的任务,另外两台机器各处理 10% 的任务。
『不患多而患不均』,这是分布式计算环境下最大的问题。意味着计算能力不是线性扩展的,而是存在短板效应: 一个 Stage 所耗费的时间,是由最慢的那个 Task 决定。
由于同一个 Stage 内的所有 task 执行相同的计算,在排除不同计算节点计算能力差异的前提下,不同 task 之间耗时的差异主要由该 task 所处理的数据量决定。所以,要想发挥分布式系统并行计算的优势,就必须解决数据倾斜问题。
数据倾斜的危害
当出现数据倾斜时,小量任务耗时远高于其它任务,从而使得整体耗时过大,未能充分发挥分布式系统的并行计算优势。
另外,当发生数据倾斜时,部分任务处理的数据量过大,可能造成内存不足使得任务失败,并进而引进整个应用失败。
数据倾斜的现象
当发现如下现象时,十有八九是发生数据倾斜了:
绝大多数 task 执行得都非常快,但个别 task 执行极慢,整体任务卡在某个阶段不能结束。
原本能够正常执行的 Spark 作业,某天突然报出 OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见。
TIPS:
在 Spark streaming 程序中,数据倾斜更容易出现,特别是在程序中包含一些类似 sql 的 join、group 这种操作的时候。因为 Spark Streaming 程序在运行的时候,我们一般不会分配特别多的内存,因此一旦在这个过程中出现一些数据倾斜,就十分容易造成 OOM。
数据倾斜的原因
在进行 shuffle 的时候,必须将各个节点上相同的 key 拉取到某个节点上的一个 task 来进行处理,比如按照 key 进行聚合或 join 等操作。此时如果某个 key 对应的数据量特别大的话,就会发生数据倾斜。比如大部分 key 对应10条数据,但是个别 key 却对应了100万条数据,那么大部分 task 可能就只会分配到10条数据,然后1秒钟就运行完了;但是个别 task 可能分配到了100万数据,要运行一两个小时。
因此出现数据倾斜的时候,Spark 作业看起来会运行得非常缓慢,甚至可能因为某个 task 处理的数据量过大导致内存溢出。
- Linux的内核定制方法详细说明 22次下载
- Linux的内核定制方法详细说明 4次下载
- 如何使用Python绘制PDF文件教程详细说明 12次下载
- ABB报警代码及处理方法详细说明 3次下载
- 西门子PLC培训资料之数据块中的数据存储详细说明 15次下载
- RTD系列板卡升级操作方法详细说明 8次下载
- 提高LabVIEW开发速度的方法有哪些25个技巧详细说明 19次下载
- 测试比较四种Arduino Nano全新型号的数据详细说明 25次下载
- 5种数据库的SQL语句大全详细说明 8次下载
- 使用SQL语句创建数据库的实例详细说明 19次下载
- SQL的常用命令使用方法详细说明 12次下载
- 51单片机无法烧录程序应该如何解决详细方法说明
- Matlab图形绘制经典案例详细说明 7次下载
- PHP八种变量类型的详细资料说明 7次下载
- 八种常见汽车悬挂系统详细说明 17次下载
- 重新分配FlexRAM的方法 1529次阅读
- PIC系列单片机程序设计基础知识详细说明 4303次阅读
- C语言和C++的特点与用法详细说明 4216次阅读
- FPGA的入门基础知识详细说明 9212次阅读
- 使用AT89S51单片机制作红外遥控器的资料和源代码详细说明 5863次阅读
- 电脑无法识别U盘应该如何解决详细方法说明 1.2w次阅读
- 常用稳压二极管的参数表格详细说明 1.3w次阅读
- 电气电缆的最全常用手册详细说明 8632次阅读
- 机器学习实例:Spark与Python结合设计 2706次阅读
- 一文读懂 Spark 内存管理 914次阅读
- 详细putty串口使用教程与八大使用技巧分享 7.5w次阅读
- 接收卡升级的详细说明概述图文详解 2.3w次阅读
- 基于AD9854产生MSK调制信号详细说明 4727次阅读
- 音响功放接线图解及详细说明 93.6w次阅读
- 在ISE中直接调用chipscope进行在线逻辑分析(2) 4935次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多