MapReduce原理及编程小结

MapReduce是一种分布式计算框架,起源于Google,适合大规模数据处理。它将数据操作作业分解为Map和Reduce两个阶段,简化了并行计算的编程模型。在Hadoop中,MapReduce通过Job Tracker和Task Tracker在V1中执行,而在V2(YARN)中,资源管理职责分离,由ResourceManager和ApplicationMaster管理。Map阶段处理数据,Combiner提供本地优化,Reduce阶段进行数据聚合。开发人员主要关注Mapper和Reducer的实现。MapReduce在处理批处理任务时表现出高容错性和高吞吐量,但不适合实时或流式计算。
摘要由CSDN通过智能技术生成

什么是MapReduce
MapReduce是一个分布式计算框架
它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务
起源于Google
适用于大规模数据处理场景
每个job包含Map和Reduce两部分
MapReduce设计思想
分而治之
简化并行计算的编程模型
构建抽象模型:Map和Reduce
开发人员专注与实现Mapper和Reducer函数
隐藏系统层细节
MapReduce特点
优点
易于编程、可拓展性、高容错性、高吞吐量
不适用领域
难以实时计算、不适合流式计算
使用MapReduce实现WordCount
流程图如下
在这里插入图片描述

MapReduce执行过程
数据定义格式
map:(K1,V1) -> list(K2,V2)
reduce:(K2,list(V2)) -> list(K3,V3)
MapReduce执行过程
Mapper
Combiner
Partitioner
Shuffle and Sort
Reducer
在这里插入图片描述

Hadoop V1 MR引擎
Job Tracker
运行在Namenode
接受客户端Job请求
提交给Task Tracker
Task Tracker
从Job Tracker接受任务请求
执行map、reduce等操作
返回心跳给Job Tracker
在这里插入图片描述

Hadoop V2 YARN
YARN的变化
支持更多的计算引擎,兼容MapReduce
更好的资源管理,减少Job Tracker的资源消耗
将Job Tracker的资源管理分为ResourceManager
将Job Tracker的作业调度分为ApplicationMaster
NodeManager称为每个节点的资源和管理任务
在这里插入图片描述

Hadoop及YARN架构
在这里插入图片描述

Hadoop2 MR在YARN上运行流程
在这里插入图片描述

InputSplit(输入分片)
在map之前,根据输入文件创建inputSplit
每个InputSplit对应一个Mapper任务
输入分片存储的是分片长度和记录数据位置的数组
block和split的区别
block是数据的物理表示
split是块中数据的逻辑表示
split划分是在记录的边界处
split的数量应不大于block的数量(绝大多数情况下相等)
在这里插入图片描述

Shuffle阶段
数据从Map输出到Reduce输入的过程
在这里插入图片描述

Key&Value类型
必须可序列化(serializable)
作用:网络传输以及持久化存储
IntWritable、LongWriteable、FloatWriteable、Text、
DoubleWriteable、BooleanWriteable、NullWriteable等
都继承了Writeable接口
并实现write()和readFiled()方法
Keys必须实现WriteableComparable接口
Reduce阶段需要sort
keys需要可比较
MapReduce编程模型
在这里插入图片描述

InputFormat接口
定义了如何将数据读入Mapper
InputSplit[] getSplits
InputSplit表示由单个Mapper处理的数据
getSplits方法将一个大数据在逻辑上拆分为InputSplit

RecordReader<K,V>getRecordReader

常用InputFormat接口实现类
TextInputFormat
FileInputFormat
KeyValueInputFormat
在这里插入图片描述

Mapper类
Mapper主要方法

void setup(Context context)
org.apache.hadoop.mapreduce.Mapper.Context
void map(KEY key,VALUE value,Context context)

为输入分片中的每个键/值对调

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值