首页 > 其他分享 >数据倾斜

数据倾斜

时间:2023-06-02 21:31:30浏览次数:24  
标签:map aaa reduce key 倾斜 数据

大数据----“数据倾斜”的问题

0.7862018.11.13 11:21:28字数 897阅读 4,411

一、Hadoop中的数据倾斜:

什么是数据倾斜?(见下图)

 

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

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

这里如果详细的看日志或者和监控界面的话会发现:

 

有一个多几个reduce卡住

各种container报错OOM

读写的数据量极大,至少远远超过其它正常的reduce

伴随着数据倾斜,会出现任务被kill等各种诡异的表现。

二、导致的原因分为几种情况:

1.单个值有大量记录

单个值有大量记录, 这种值的所有纪录已经超过了分配给reduce 的内存,无论你怎么样分区这种情况都不会改变. 当然这种情况的限制也非常明显, 1.内存的限制存在,2.可能会对集群其他任务的运行产生不稳定的影响.

解决方法:(1)增加reduce 的jvm内存(效果可能不好)

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

(在MapReduce/spark,该方法常用)

2.唯一值较多

唯一值较多,单个唯一值的记录数不会超过分配给reduce 的内存. 如果发生了偶尔的数据倾斜情况,增加reduce 个数可以缓解偶然情况下的某些reduce 不小心分配了多个较多记录数的情况.

解决办法: 增加reduce 个数

3.以上两种都无效的情况

一个固定的组合重新定义

解决办法:自定义partitioner

4.从业务和数据上解决数据倾斜

我们能通过设计的角度尝试解决它。

(1)有损的方法:

找到异常数据,比如ip为0的数据,过滤掉

(2)无损的方法:

对分布不均匀的数据,单独计算

先对key做一层hash,先将数据打散让它的并行度变大,再汇集

(3)数据预处理;

5.平台的优化方法

1.join 操作中,使用 map join 在 map 端就先进行 join ,免得到reduce 时卡住;

2.能先进行 group 操作的时候先进行 group 操作,把 key 先进行一次 reduce,之后再进行 count 或者 distinct count 操作;

3. 设置map端输出、中间结果压缩;

标签:map,aaa,reduce,key,倾斜,数据
From: https://blog.51cto.com/u_11908275/6405180

相关文章

  • 数据仓库项目介绍与分析
    项目效果展示本身我们这个数据仓库项目其实是一个纯后台项目,不过为了让大家能够更加直观的感受项目的效果,我们可以基于数据仓库中的数据统计一些指标进行展现。我们这个项目要讲的重点不是这个大屏,这个大屏只是一个效果,为了让大家感受更加直观一些而已,我们主要讲的是这些指标对......
  • 数据生成与采集
    数据生成我们需要先生成测试数据,一份是服务端数据,还有一份是客户端数据【客户端数据】用户行为数据首先我们模拟生成用户行为数据,也就是客户端数据,主要包含用户打开APP、点击、浏览等行为数据用户行为数据:通过埋点上报,后端日志服务器(http)负责接收数据埋点上报数据基本格式:......
  • [20230531]insert blob数据类型.txt
    [20230531]insertblob数据类型.txt--//链接https://connor-mcdonald.com/2023/05/29/why-i-blog/提供插入blob数据类型的简单方法,测试看看.--//正常插入要先插入一个empty_blob(),然后获得一个定位指针,使用dbms_lob.loadfromfile插入.1.环境:SCOTT@test01p>@ver1PORT_STRING......
  • Sentinel控制台监控数据持久化到MySQL数据库
    阅读文本大概需要3分钟。    根据官方wiki文档,Sentinel控制台的实时监控数据,默认仅存储5分钟以内的数据。如需持久化,需要定制实现相关接口。https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel给出了指导步骤:自行扩展实现MetricsRepository接口;注册成......
  • 数据治理专业认证CDMP学习笔记(思维导图与知识点)- 第10章参考数据和主数据篇
    大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人。在最近的两年的时间里,因为公司的需求,还有大数据的发展趋势所在,我开始学习数据治理的相关知识。数据治理需要进行系统的学习才能真正掌握,也需要进行专业的考试认证才能证明自己在数据治理......
  • 2022,数据科学与数据治理项目全纪录
    大家好,我是独孤风。2022年已过去一半多的时间了。这半年多,我们重点关注了LinkedInDatahub、Atlas等元数据管理工具,了解了他们在数据治理领域的作用。也关注了ApacheGriffin等数据质量工具的使用。但是,在数据工程领域这只是冰山一角,近期lakeFS高级工程师EinatOrr发布一份2022年的......
  • 时序列数据库选型
    时序列数据库武斗大会之什么是TSDB由于工作上的关系,最近看了一些关于时序列数据库的东西,当然,我所看的也都是以开源方案为主。趁着这股热劲还没退,希望能整理一些资料出来。如果正好你也有这方面的需求,那么希望这一系列的介绍能够帮助到你。1.什么是时序列数据库(Timeseriesdatabas......
  • 实时数据治理—当Atlas遇见Flink
    Atlas是Hadoop的数据治理和元数据框架。Atlas是一组可扩展和可扩展的核心基础治理服务,使企业能够有效,高效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系统集成。ApacheAtlas为组织提供了开放的元数据管理和治理功能,以建立其数据资产的目录,对这些资产进行分类和治理,并为数......
  • 一站式元数据治理平台——Datahub入门宝典
    随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程。作为新一代的元数据管理平台,Datahub在近一年的时间里发展迅猛,大有取代老牌元数据管理工具Atlas之势。国内Datahub的资料非常少,大部分公司想使用Datahub作为自己的元数据管理平台,但可参考的资料太少。所以整......
  • SQLite数据库查看工具
    SQLite的官方网站[url]http://www.sqlite.org/[/url]SQLite的官方网址列了很多查看SQLite数据库的软件:[url]http://www.sqlite.org/cvstrac/wiki?p=ManagementTools[/url]这里推荐我使用过的几个,当然是免费的才行.1.SQLiteDatabaseBrowser[im......