Hadoop组件之一mapreduce原理学习笔记(初学者快速了解原理)

目录

Mapreduce定义:

mapreduce的优点与缺点

Mapreduce的实例进程:

Mapreduce的执行过程

Map阶段:

Reduce阶段

Shuffle机制:

Shuffle的弊端

Mapreduce定义:

Mapreduce是一个分布式计算的编程框架

如果没有mapreduce编程框架如何实现分布式计算:

  1. 实现服务器之间的相互通信(解决任务的执行顺序问题)
  2. 多线程并发执行任务

一个完整的mapreduce程=用户业务逻辑代码+默认的组件

用户业务逻辑代码:解决实际的计算问题的代码

默认组件:将底层多线程,通信等交互信息封装成编程框架

mapreduce的优点与缺点

优点:

  1. 易编程,用户只需要写业务逻辑代码,剩下的由框架去实现
  2. 良好的扩展性,可以动态的增加服务,提高服务器的性能
  3. 高容错,当一个服务器挂掉,会重新分配任务到其他服务器上

4.海里数据的计算,上千台服务器同时计算,可计算Tb级别的数据

缺点:

  1. 不适合实时计算 (计算数据长)
  2. 不擅长流计算  (流:来一个数据就立马处理。批:先存一批数据在进行计算)
  3. 不擅长DAG计算(迭代计算,上一个计算结果输出做为下一个计算的输入)

Mapreduce的实例进程:

Mrappmaster:负责mapreduce程序的调度和协调(只有一个)

Maptask:负责map阶段处理

Reducetask:负责reduce阶段的处理

在mapreduce编程中只能有一个map阶段和一个reduce阶段,或许直接map阶段结束任务

在mapreduce编程中不能有多个map阶段

在复杂的业务逻辑中只能mapreduce程序串行运行

 

  1. 在Mapreduce程序中是以<k,v>的形式进行传输的
  2. 以k进行排序与分组等操作

BooleanWriable:标准布尔型数

ByteWriable:单字节数

DoubleWriable:双字节数值

FloatWriable:浮点数

IntWriable:整型数

LongWriable:长整型数

Text:文本

Mapreduce的执行过程

Map阶段:

  1. 对输入数据进行逻辑切片(以块的大小  默认:128m)
  2. 将切片分发给maptask处理(有几个切片就有几个task)
  3. 以<k,v>的形式读取切片 读取方式默认为按行读取  k为行的偏移量(每以行的起始位置)   v为行的文本内容    
  4. 调用mapper类中的用户编写map方法对输入数据处理,以k,v的形式输出
  5. 按照一定规则对map输出进行分区,默认不分区,分区的数量等与reduce的数量
  6. 将map输出写入内存缓存区(。避免直接写入,减少对磁盘的冲击力,提高效率),当缓冲区满时溢出成为一个个临时文件,在溢出的同时对其进行排序
  7. 对溢出的文件进行merge合并,保证一个task只有一个最终文件

Reduce阶段

  1. reduce主动向map复制提取需要的数据
  2. 对提取过来的数据进行合并,将分散的数据合并成为一个大文件,在对合并数据进行排序  按k的进行字典排序

为什么要合并:在复制过来的文件中文件与文件直接可能有相同的数据,合并将相同的数据以k键放入一组以wordcount为例  最终输入到reduce方法中的k,v形式为[k,(1,1,1,1)

  1. 对排序后的键值对调用reduce方法进行处理,将结果以k,v的形式写入hdfs中

Shuffle机制:

Shuffle是洗牌的意思,将数据进行排序

Shufell是mapreduce阶段从map的输出开始到输入reduce阶段的过程

Shuffle的弊端

shuffle机制存在的导致mapreduce程序运行慢

原因在于shuffle阶段反复涉及内存与磁盘的往复

Map阶段

缓存区之前是在内存中        内存

合并后数据写入磁盘                磁盘

 Reduce阶段

复制提出是从磁盘中读取        磁盘

读取到内存中处理          内存

处理完之后写入磁盘       磁盘 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值