Hadoop之MapReduce概述

本文介绍了Hadoop MapReduce的核心概念,包括序列化机制、分区、排序、合并、数据本地化策略以及Job的执行流程。MapReduce是Hadoop的分布式计算框架,通过Map处理数据,Reduce进行数据汇总。数据本地化策略能有效减少网络资源消耗,提高计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

MapReduce是Hadoop中一套分布式的计算框架,分为Map和Reduce两个部分,Map负责数据的整理,Reduce负责数据的汇总.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.序列化机制

1.在MapReduce中,要求被传输的数据必须能够被序列化

2.Hadoop中,序列化机制默认使用AVRO,但是Hadoop对AVRO的序列化机制进行了进一步封装,提供了更简单的 序列化机制,只需要实现Writable,重写其中的方法即可.在序列化时,要求属性不能为null

3.分区

分区也就是对MapReduce中的数据进行分类,默认只有1个分区,可以依据业务需要指定.每个分区都必须对应一个ReduceTask,么个ReduceTask都会产生一个结果文件.MapReduce还对分区进行了编号,从0开始递增.分区的顶级父类是Partitioner

4.排序

在MapReduce中,会对键做自然排序.自定义的类可以通过WritableComparable并重写其方法来实现.

如果存在多属性排序的场景,也就是二次排序,必须要注意,如若值相同由于实现了Reduce接口所以会被当成同一个键处理,因此需要return一个数,以避免被去重.

在这里插入图片描述

5.合并

在MapReduce中,默认只有一个Reduce,为了提高计算效率,减轻Reduce压力,可在数据传输到Reduce之前对数据先进行一次整合,该过程就是Combine,一般情况,Combine和Reduce的逻辑是一样的,所以合并不影响最终计算结果,只需要在Driver中添加job.setCombinerClass(calss);

6.数据本地化策略

1.当JobTracker接收到应用之后,会去访问NameNode获取要处理的文件信息

2.NameNode将文件信息返回给JobTracker

3.JobTracker收到文件信息之后会将文件进行切片,一般切片大小会与切块大小设置一样.每个切片会分配给一个MapTask

4.JobTracker会MapTask分发到TaskTracker来执行.在分发的时候,哪个DataNode上有对应的Block,那么MapTask就会分发到这个节点上,也就是数据本地化

5.数据本地化的目的:减少对网络资源的消耗

7.Job的执行流程

1.客户端提交一个job任务到JobTracker

2.JobTracker收集环境信息:检测类型是否匹配;检测输入/输出路径是否合法

3.JobTracker给job分配一个全局递增的jobid,然后将jobid返回给客户端

4.客户端收到jobid之后,将jar包提交到HDFS上

5.准备执行job任务

6.JobTracker会将job任务进行划分,划分为MapTask和ReduceTask,其中MapTask的数量由切片数量决定,ReduceTask的数量由Partitioner/numReduceTask决定

7.JobTracker等待TaskTracker的心跳.一般TaskTracker和DataNode会设置为同一个节点.当TaskTracker发送心跳信息的时候,JobTracker就会给TaskTracker分配任务.注意:在分配的时候,MapTask符合数据本地化策略,也就是TaskTracker上有这个数据的时候才会将MapTask分给它,ReduceTask分配到相对空闲的节点上

8.TaskTracker领取到任务之后,到对应的节点上下载jarbap(逻辑移动而数据不动)

9.TaskTracker会在本节点内启动JVM子进程执行MapTask或者是ReduceTask . 注意: 每一个MapTask或者ReduceTask都会启动一次JVM子进程.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值