apeduce的核心知识点,你都get到了吗(干货文章,建议收藏!)腾讯云开发者社区

Hadoop 中 MapReduce 最核心的思想就是分而治之,通过 MapReduce 这个名字就可以看出,MapReduce 包含有 Map 和 Reduce 两个部分。它将一个大型的计算问题分解成一个个小的,简单的计算任务,交给 MapReduce 中的 Map 部分执行,随后 Reduce 部分会对 Map 部分输出的中间结果进行聚合计算,输出最终的统计结果。

为了方便大家理解,可以看下 MapReduce 的简要模型图:

每个子任务在框架中都是高度并行计算的,然后 MapReduce 框架将各个计算子任务的计算结果进行合并,得出最终的计算结果。

每个子任务在 MapReduce 内部都是高度并行计算的,子任务的高度并行化极大地提高了 Hadoop 处理海量数据的性能。MapReduce 的并行计算模型如图所示:

由图可知,MapReduce 框架将一个大型的计算任务拆分为多个简单的计算任务,交由多个 Map 并行计算,每个 Map 的计算结果经过中间结果处理阶段的处理后输入 Reduce 阶段,Reduce 阶段将输入的数据进行合并处理,输出最终的计算结果 。

同时,用户无须关心 MapReduce 底层各个节点之间的通信机制与通信过程,只需简单地编写 map() 函数和 reduce() 函数即可开发 Hadoop MapReduce 程度。

MapReduce 框架由一个主节点(ResourceManager)、多个子节点(NodeManager)和每个执行任务的 MR AppMaster 共同组成 。通常会将 MapReduce 的计算节点和存储节点部署在同一台服务器上,如图所示:

这种部署结构可以使 MapReduce 框架在已经存储好数据的节点上快速、高效地调度任务,尽可能地不用通过 RPC 从其他服务器上获取数据来执行任务,使整个集群的网络带宽被高效利用,极大地提升了处理任务的效率。

MapReduce 编程模型简化了分布式系统中并行计算的复杂度,开发人员能够不必关心 MapReduce 程序的底层实现细节,只专注于解决业务需求。

在 MapReduce 框架内部,整个运行流程可以分为如下四个阶段,其中每个阶段中的数据传输格式也不一样。

简单运行流程如下所示:

大致流程:

(1)原始数据经过 Hadoop 框架的处理,将 “(k,原始数据行)”格式的数据输入 Map 阶段,即 Map 阶段接收到的数据都是 “(k,元素数据行)”的。

(2)数据经过 Map 阶段处理之后,输出 “{(k1,v1),(k2,v2)}”格式的中间结果

(3)Map阶段输出的中间结果经由 Hadoop 的中间结果处理阶段(如聚合、排序等)之后,会形成 “ {(k1,[v1,v2]) …} ”格式的数据

(4)中间结果处理阶段形成的 “{(k1,[v1,v2]) …}”格式的数据会输入 Reduce 阶段进行处理。此时,key相同的数据会被输入进同一个 Reduce 函数进行处理(也可以由用户自定义数据分发规则)

(5)数据经过 Reduce 阶段处理之后,最终会形成“{(k1,v3)}” 格式的数据存入 HDFS 中

另外,如果觉得不够清晰,也可以参考下下面这个版本的 MapReduce 运行流程。

(1)原始数据被切分为多个小的数据分片输入 map() 函数,这些小的数据分片往往是原始数据的数据行,它们以 “(k,line)” 的格式输入 map() 函数,其中 k 表示数据的偏移量,line 表示整行数据。

(2)map() 函数并行处理输入的数据分片,根据具体的业务规则对输入的数据进行相应的处理,输出中间处理结果,这些中间处理结果往往以“{(k1,v1),(k2,v2)}” 的格式存在。

(3)中间处理阶段将 map() 函数输出的中间结果根据 key 进行聚合处理,输出聚合结果,这些聚合结果的格式为:“{(k1,[v1,v2])}”。

(4)中间处理阶段将输出的聚合结果输入 reduce () 函数进行处理( key相同的数据会被输入同一个 reduce()函数中,用户也可以自定义数据分发规则 ),reduce()函数对这些数据进行进一步聚合和计算等。

(5)reduce 函数将最终的结果以 “ (k,v) ”的格式输出到 HDFS 中。

MapReduce 容错包括 Task(任务)容错,AppMaster 容错、NodeManager 容错和 ResourceManager 容错。

默认重试次数为4,即任务失败后,MapReduce 框架会重试4次,如果任务依然失败,MapReduce才会认为任务彻底失败了。

尝试次数默认值为2,即当 AppMaster 失败2次之后,运行的任务将会失败。

等待时间默认值为 10 min,即 NodeManager 发生故障之后,ResourceManager 节点接收不到 NodeManager 发生过来的心跳信息,过 10 min 之后才会将 NodeManager 移除 。

此默认值为3,即当一个 NodeManager 上有超过3个任务失败,AppMaster 就会将该节点上的任务调度到其他节点上 。

新版本的 Hadoop 中提供了 ResourceManager 节点的 HA 机制,如果主 ResourceManager 失败,备 ResouceManager 会迅速接管工作。

Hadoop 中对 ResourceManager节点提供了检查点机制,当所有的 ResourceManager 节点失败后,重启 ResouceManager 节点,可以从上一个失败的 ResourceManager 节点保存的检查点进行状态恢复。

当然,默认是保存到文件中。

技术面试中,关于 MapReduce 优化的考察频率可能不如 Spark,Flink,但是作为 Hadoop 知识的热门考点,我们对于它的优化还是要有一个清晰的认识 。 这里,我们从以下几个小点逐一展开。

MapReduce程序效率的瓶颈在于两点:

CPU、内存、磁盘健康、网络

关于 MapReduce 优化方法主要从以下6个方面进行考虑,分别是:数据倾斜、Map阶段、Reduce阶段、IO传输、数据倾斜问题和常用的调优参数。

(1)合并小文件:在执行 MR 任务之前将小文件进行合并,大量的小文件会产生大量的 MR 任务,增大 Map 任务装载次数,而任务的装载比较耗时,从而导致 MR 运行较慢。

(2)采用 CombineText InputFormat 来作为输入,解决输入端大量小文件场景。

(3)在 Map 之后,不影响业务逻辑前提下,先进行 Combine 处理,减少 I/O 。

(1)合理设置 Map 和 Reduce 数:两个都不能设置的太少,也不能设置的太多。太少,会导致 Task 等待,延长处理时间;太多,会导致 Map,Reduce 任务间竞争资源,造成处理超时等错误 。

(3)规避使用 Reduce:因为 Reduce 在用于连接数据集的时候将会产生大量的网络消耗。

(2)使用 SequenceFile 二进制文件。

可以通过对原始数据进行抽样得到的结果集来预设分区边界值。

基于输出键的背景知识进行自定义分区。例如,如果 Map 输出键的单词来源于一本书。且其中某几个专业词汇较多,那么就可以自定义分区将这些专业词汇发送给固定的一部分 Reduce 实例。而其他的都发送给剩余的 Reduce 实例。

使用 Combine 可以大量的减少数据倾斜。在可能的情况下,Combine 的目的就是聚合并精简数据。

这个我们上面说过了,Reduce 在用于连接数据集的时候将会产生大量的网络消耗,所以我们采用 MapJoin,尽量避免 Reduce Join 。

配置参数

参数说明

一个MapTask可使用的资源上限(单位:MB),默认为1024。如果MapTask实际使用的资源量超过该值,则会被强制杀死。

一个ReduceTask可使用的资源上限(单位:MB),默认为1024。如果ReduceTask实际使用的资源量超过该值,则会被强制杀死。

每个MapTask可使用的最多cpu core数目,默认值: 1

每个ReduceTask可使用的最多cpu core数目,默认值: 1

每个Reduce去Map中取数据的并行数。默认值是5

Buffer中的数据达到多少比例开始写入磁盘。默认值0.66

Buffer大小占Reduce可用内存的比例。默认值0.7

指定多少比例的内存用来存放Buffer中的数据,默认值是0.0

配置参数

参数说明

给应用程序Container分配的最小内存,默认值:1024

给应用程序Container分配的最大内存,默认值:8192

每个Container申请的最小CPU核数,默认值:1

每个Container申请的最大CPU核数,默认值:32

给Containers分配的最大物理内存,默认值:8192

配置参数

参数说明

Shuffle的环形缓冲区大小,默认100m

环形缓冲区溢出的阈值,默认80%

配置参数

参数说明

每个Map Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4。

每个Reduce Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4。

Task超时时间,经常需要设置的一个参数,该参数表达的意思为:如果一个Task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该Task处于Block状态,可能是卡住了,也许永远会卡住,为了防止因为用户程序永远Block住不退出,则强制设置了一个该超时时间(单位毫秒),默认是600000。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大,该参数过小常出现的错误提示是“AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer killed by the ApplicationMaster.”

1、《海量数据处理与大数据技术实战》2、《Hadoop权威指南》

实际上,关于 MapReduce的内容还有很多,本期文章只是将比较重要核心的部分介绍了一下。其中,MapReduce的原理,运行流程,优化是面试中比较经常考察的点,而部署结构,容错机制我们仅做学习了解即可。我还想强调一点,一定要学会自发的去学习新的知识和总结学过的内容。否则就容易出现,新学的记不住,学过的忘记了的情况。

THE END
0.hive的数据倾斜解决(Map端reduce端join中)hive数据倾斜解决办法本文详细介绍了Hive数据倾斜的几种常见类型及解决方法,包括Map端、Reduce端和Join操作中的数据倾斜问题。通过调整数据处理逻辑、使用特定函数、合理设置参数等方式,有效解决了数据处理中的长尾现象。 hive的数据倾斜一般我们可以分为 Map倾斜、reduce 倾斜和join 倾斜这几种。 jvzquC41dnuh0lxfp0tfv8|gkzooa=5:2;<398ftvkimg8igvcomu862;6::9A5
1.直线的倾斜角和斜率②本节的难点是对斜率概念的理解.学生认为倾斜角就可以刻画直线的方向,而且每一条直线的倾斜角是唯一确定的,而斜率却不这样.学生还会认为用弧度制表示倾斜角不是一样可以数量化吗.再有,为什么要用倾斜角的正切定义斜率,而不用正弦、余弦或余切哪?要解决这些问题,就要求教师帮助学生认识到在直线的方程中体现的不是jvzquC41yy}/fr~khctxgw3eqo5kkjtcp1mbqnwujw~vgsncqct0498733688;7257723=::6;=20qyo
2.北京2018年小客车指标总量减至10万比例向个人倾斜12月15日,北京市交通委发布了2018年北京小客车指标总量和配置比例,并公布了《北京市小客车数量调控暂行规定》的2017年版修订情况。2018年小客车指标总量从15万降至10万,其中新能源指标保持6万不变,普通指标由9万个减少至4万个。虽然指标减少了,但将大幅向个人倾斜,个人普通车指标数变为3.8万。新能源指标数量将首jvzquC41pg}t0lhvx0ipo872395248681CXUKaGOH\{NL~6vIU_Djv|cQ3=24:;0ujznn
3.中国制造2025融合“互联网+”国务院“点将”十大产业会议还特别提出:“坚持市场主导、改革创新,发挥企业主体作用,大中小企业配套推进,务求重点突破,取得实效,财税、金融、人才等政策都要给予倾斜”。 不论智能制造也好,传统产业升级也罢,把创新贯穿制造业发展始终,也就抓住了中国制造发展新引擎。对此,工信部副部长苏波认为,不掌握关键核心技术是中国产业结构中突出问题之一jvzquC41hktbplj0gcyuoxsg{0ipo8sgyu525>5.42762<786;624:;63a8/j}rn
4.重磅发布!北京邮电大学未来学院!为此学校成立“未来学院”,以确保该计划顺利实施。 未来学院依托学校在信息科技领域的领先地位,依托“信息网络科学与技术学科群”和“计算机科学与网络安全学科群”两个“双一流”学科群优势,设立本硕博贯通培养实验班:元班,以“特殊政策护航+优质资源倾斜+顶尖师资汇聚+科研训练支撑”特色鲜明、优势突出的人才培养模式jvzquC41yy}/d~uv0gjv0ls1kplp1:59;1>63@=0jvs
5.《天才枪手》——选择在一念之间,结果却天壤之别(天才枪手)影评倾斜式布局: 图7、图8、首先倾斜型布局在生活中不如其他布局常见,但动感足以瞬间吸引住人们的眼球。 创意型构图: 图9、图10、创意型构图并没有一个统一的标准。就拿这两张图片说:图9将人物和试卷的关系重新组合,图10连电影中的画面也没有,主要是由电影取得的各项骄人成绩构成。因此两者在宣传手段上也有所不jvzquC41oq|jg7iqwdgo0lto1tkwkn|134;45B691
6.马蜂窝创作者创作中心官方任务栏目说明书由于“官方任务”的选题皆为马蜂窝站内空缺内容,其他参与任务的作品就算无法享有奖励的资源位推荐,同样也能得到自然流量的倾斜。 实物/优惠券奖励 部分官方任务除了流量之外会有额外的奖品奖励,比如无门槛优惠券或者是马蜂窝定制礼包,领取此类官方任务可以获得比普通官方任务更多的奖励! jvzquC41yy}/ojkgpi}p0ls1iqthnj1|kpwnpi1757B9:0jznn
7.闪电指数养老金宝典:您的养老金是怎么算出来的?齐鲁原创月增加额由三部分组成:1定额调整 + 2挂钩调整 + 3适当倾斜 1、定额调整:月增加额企业、机关事业单位统一标准,每人每月增加55元。 2、挂钩调整:月增加额分为两部分计算 第一部分:与上年基本养老金水平挂钩 企业、机关事业单位统一比例:按照2016年底本人基本养老金X 2.1%计算。 jvzquC41pg}t0rvknw4dqv4ujcteqwl1{wgoeqzcpi532:<129881<;569950|mvon
8.每天坚持走6000步,身体竟然发生了巨大的改变!你走对了吗?要改变身体倾斜的行走惯性,通过仰卧起坐来加强腹部肌肉,有助你站得更直。 错误七选错鞋 不适合走路的鞋有以下几个特点:1.鞋底过薄,走路时会有硌脚的感觉;2.鞋底过厚过重,走路时感觉腿特别“沉”,或是落地时声音特别大;3.鞋帮过高,有些人穿着户外运动鞋走路,虽能对脚部提供充分保护,但过高的鞋帮不利于足踝jvzquC41yy}/ezhd0eun1{jcfkth1;539/72/;;179744>dre0nuou
9.全国政法工作会议“改名”的背后新闻报道重点向经济法制建设倾斜 1980年1月24日,中共中央发出《关于成立中央政法委员会的通知》,决定设立中央政法委员会。《通知》规定的中央政法委员会的五项职能中,主要是法律中的政治方向的把握,并不干预具体的司法工作。 1982年7月10日至24日,中央政法委召开全国政法工作会议,各界参会人员400多人。据当时《人民日报》报道jvzq<84ere4qgxung0ipo7hp1p532:9123791l;65:=.4=67:6:80qyon
10.房间空调装什么位置好?卧室空调安装位置?空调安装老师傅告诉你3、空调洞要考虑向外倾斜: 部分居民家的空调挂机因“滴水管”不畅而倒流水;就算立刻拔掉电源插头;也不能及时制止滴水,只要将空调洞略微做点调整就可以了;既防止了水顺着空调洞进来;也不用担心滴水管“外高内低”导致的空调水倒流的事情。 三、空调装在房间哪个位置好 jvzquC41o0lbpp3eqo5{jrxjk1pjcsz1sie55:7340nuou
11.南京医科大学2022年博士后招聘公告2.专业技术职务评聘倾斜政策 师资博士后在站期间可按照学校相关规定参加副高级特设岗位相应专业技术职务评审;受聘职务后,可享受副教授的薪酬待遇(仍享受博士后其他待遇)。 3.科研绩效 在站期间获得的科研项目及产生的科研成果,按学校科研津贴发放相关规定享受科研津贴,与校内教师同等待遇。 jvzquC41{lyz0woow0kew7hp1463285;425d39=2;c7:296;1rghg7mvo