数据倾斜:就是大量的相同key被partition分配到一个分区里,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,

这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。

解决方案:

1.增加jvm内存,这适用于第一种情况(唯一值非常少,极少数值有非常多的记录值(唯一值少于几千)),这种情况下,往往只能通过硬件的手段来进行调优,增加jvm内存可以显著的提高运行效率。

2.增加reduce的个数,这适用于第二种情况(唯一值比较多,这个字段的某些值有远远多于其他值的记录数,但是它的占比也小于百分之一或千分之一),我们知道,这种情况下,

  最容易造成的结果就是大量相同key被partition到一个分区,从而一个reduce执行了大量的工作,而如果我们增加了reduce的个数,这种情况相对来说会减轻很多,毕竟计算的节点多了,就算工作量还是不均匀的,那也要小很多。

3.自定义分区,这需要用户自己继承partition类,指定分区策略,这种方式效果比较显著。

4.重新设计key,有一种方案是在map阶段时给key加上一个随机数,有了随机数的key就不会被大量的分配到同一节点(小几率),待到reduce后再把随机数去掉即可。

5.使用combinner合并,combinner是在map阶段,reduce之前的一个中间阶段,在这个阶段可以选择性的把大量的相同key数据先进行一个合并,可以看做是local reduce,然后再交给reduce来处理,

  这样做的好处很多,即减轻了map端向reduce端发送的数据量(减轻了网络带宽),也减轻了map端和reduce端中间的shuffle阶段的数据拉取数量(本地化磁盘IO速率),推荐使用这种方法。

转载于:https://www.cnblogs.com/dummyly/p/10099924.html

Hadoop数据倾斜及解决办法相关推荐

  1. hive数据倾斜的解决办法

    数据倾斜是进行大数据计算时常见的问题.主要分为map端倾斜和reduce端倾斜,map端倾斜主要是因为输入文件大小不均匀导致,reduce端主要是partition不均匀导致. 在hive中遇到数据倾 ...

  2. 【HIVE数据倾斜常见解决办法】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.什么是HIVE数据倾斜? 二.数据倾斜原因及解决办法 1. Join 倾斜 a. 大表 Join 小表 b. 大表 ...

  3. hive解决数据倾斜问题_Hive数据倾斜和解决办法

    转自:https://blog.csdn.net/xinzhi8/article/details/71455883 操作: 关键词 情形 后果 Join 其中一个表较小,但是key集中 分发到某一个或 ...

  4. MapReduce 数据倾斜以及解决思路

    MapReduce 数据倾斜以及解决思路 1.小背景 在mapreduce的分布式解决框架中,数据处理主要分为2个步骤,map阶段和reduce阶段 map阶段主要是数据转换,也就是按照预期把输入的数 ...

  5. 35-Spark Streaming反压机制、Spark的数据倾斜的解决和Kylin的简单介绍

    19.6 数据的反压机制⭐️ 反压机制的理解 数据流入的速度远高于数据处理的速度,对流处理系统构成巨大的负载压力,如果不能正确处理,可能导致集群资源耗尽,最终集群崩溃, 因此有效的反压机制(backp ...

  6. 机器学习数据倾斜的解决方法_机器学习并不总是解决数据问题的方法

    机器学习数据倾斜的解决方法 总览 (Overview) I was given a large dataset of files, what some would like to call big d ...

  7. C#使用ListView更新数据出现闪烁解决办法

    C#使用ListView更新数据出现闪烁解决办法 在使用vs自动控件ListView控件时候,更新里面的部分代码时候出现闪烁的情况 如图: 解决以后: 解决办法使用双缓冲:添加新类继承ListView ...

  8. 如何解决mysql数据倾斜_什么是数据倾斜?如何解决数据倾斜?

    原标题:什么是数据倾斜?如何解决数据倾斜? 导读 相信很多接触MapReduce的朋友对'数据倾斜'这四个字并不陌生,那么究竟什么是数据倾斜?又该怎样解决这种该死的情况呢? 何为数据倾斜? 在弄清什么 ...

  9. layui数据表格中导出所有数据的简易解决办法

    layui数据表格中导出所有数据的简易解决办法 官方文档的困惑 解决办法 官方文档的困惑 首先要说明的是:layui在 table 的工具栏内置了数据导出按钮,如果你是用它内置的导出按钮来导出数据,是 ...

最新文章

  1. 黄金矿工-收益最大化
  2. CENTOS php 7.0 +nginx 环境下 安装yaf框架
  3. 数据库归档及热点库_postgresql连续归档及时间点恢复的操作
  4. 机器学习——大数据与MapReduce
  5. 信息系统项目管理师-人力资源管理知识点
  6. ABAP 用户选择屏幕 搜索帮助 实现代码
  7. java多线程notifyall_Java多线程:线程状态以及wait(), notify(), notifyAll()
  8. 前端学习(3248):react的生命周期getSnapBeforeUpdate举例
  9. 项目经理到底要不要懂技术?
  10. poj3320 尺取法 挑战程序设计竞赛
  11. delphi测试服务器响应时间,负载测试中的页面响应时间 - Visual Studio (Windows) | Microsoft Docs...
  12. java行数可变的表格,怎么在表格中自动增加行,并对输入的数据作判断
  13. 国二mysql综合应用题答案_2017年9月全国计算机二级MySQL考试章节练习题
  14. java native2ascii的用法介绍
  15. 多媒体处理常用软件:图像、文本、音频、视频、动画、微课
  16. [别被脱裤系列]2 还没深入数据库就浅出了
  17. clang++.exe: error: unknown argument: ‘-static-openmp‘ ninja: build stopped: subcommand failed.
  18. 4-2-1 求e的近似值 (15分)
  19. Unable to paint on Qt Widget, shows error “paintEngine: Should no longer be called”
  20. 车载诊断协议UDS——诊断刷写(Software Update)

热门文章

  1. 【水滴石穿】react-native-book
  2. Django Rest Framework源码剖析(二)-----权限
  3. viewport实现html页面动态缩放/meta viewport/viewport
  4. 基础算法之快速排序Quick Sort
  5. iOS 7 改变Status Bar 颜色
  6. oracle 常见操作
  7. java的indexof怎么配合数组使用_【小知识点??】indexOf在数组中竟能这样使用???!...
  8. c++读取图片_Pytorch读取,加载图像数据(一)
  9. mac word维吾尔文字体_字加软件更新啦!万款字体一键激活!
  10. numpy matlab 索引不同,与Numpy相似的MATLAB数组索引