MapReduce原理

MapReduce介绍

1.MapReduce是一个分布式计算框架

  • 它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务。
  • 起源于Google

2.适用于大规模数据处理场景

  • 每个节点处理存储在该节点的数据

3.每个job包含Map和Reduce两部分

MapReduce的设计思想

1.分而治之

  • 简化并行计算的编程模型

2.构建抽象模型:Map和Reduce

  • 开发人员专注于实现Mapper和Reducer函数

3.隐藏系统层细节

  • 开发人员专注于业务逻辑实现

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
    在这里插入图片描述
    Map一定要有,combiner可有可无,paritioner一定要有,reducer在某种情况下可以没有;
    mapper数目无法操作有inputsplit决定的(可以改块大小达到mapper数目),但是Reducer可以操作

Hadoop V1 MR引擎

Job Tracker

  • 运行在Namenode
  • 接受客户端Job请求
  • 提交给Task Tracker

Task Tracker

  • 从Job Tracker接受任务请求
  • 执行map、reduce等操作
  • 返回心跳给Job Tracker
    在这里插入图片描述

Hadoop V2 YARN

重要图:
在这里插入图片描述
yarn的时候回香江

MapeReduce的局限性

yarn的变化
yarn环境下的资源管理器
jt resource 任务放在ResourceManager
job

Hadoop及YARN架构

在这里插入图片描述

Hadoop2 MR在Yarn上运行流程

在这里插入图片描述

InputSplit(输入分片)

在map之前,根据输入文件创建inputSplit

  • 每个InputSplit对应一个Mapper任务
  • 输入分片存储的是分片长度和记录数据位置的数组
  • 记录边界划分的(*)

block和split的区别

  • block是数据的物理表示
  • split是块中数据的逻辑表示
  • split划分是在记录的边界处
  • split的数量应不大于block的数量(一般相等)
    在这里插入图片描述

Shuffle阶段

在这里插入图片描述

Key&Value类型

必须可序列化(serializable)

  • 作用:网络传输以及持久化存储
  • IntWritable、LongWriteable、FloatWritable、Text、DoubleWritable, BooleanWritable、NullWritable等

都继承了Writable接口

  • 并实现write()和readFields()方法

Keys必须实现WritableComparable接口

  • Reduce阶段需要sort
  • keys需要可比较

MapReduce编程模型

在这里插入图片描述
有2方法:getinputsplit:又来计算有多少个inputsplit,他就知道启动几个mapper
createReconReader<k,v>:

InputFormat接口

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值