(六)MapReduce特点
来源:互联网 发布:汽车导航软件安装 编辑:程序博客网 时间:2024/06/08 07:01
MapReduce特点
适合数据复杂度运算
不适合算法复杂度的运算
不适合实时计算、流式计算、DAG有向图计算
综上,要求算法足够简单,数据可以足够大!
MapReduce架构
采用Master/Slave
执行流程
MapReduce包含四个组成部分
Client
JobTracker
TaskTracker
Task
Map算法Reduce数据
从HDFS出来Split[0,1,……],用getsplit()分片。Split数量决定MapTask数量,即MapTask数量无法自己决定。
Map主要就是用来对数据进行切分。
Partitioner通过返回确定reduce数量,
hello world --无需split-->hello world---recordreader-->hello hadoop hello hadoop<O,hello word>---map---><hello,1><world,1>---无需partitioner---><O,hello word> <hello,1><hadoop,1> ---combine---><hello,1,1><world,1><hadoop,1>---无需copy--->---reduce---><hello,2><world,1><hadoop,1>--->output
1.23 0.91--split-->10000点坐标--recordreader--><0,1.23 0.91>1.45 1.11 <0,1.45 1.11 >0.22 0.25 <0,0.22 0.25 >--map-->截取浮点数,算出距离,记录是否在圆内--><O,1>--无需partitioner--> <O,0> <O,1>--combine--><0,1 1 1 1 1>--无需copy-->--reduce--><0,n> n*4/10000
MapReduce完整执行流程如图所示
Map流程
Inputformat:首先将 HDFS 中的数据以 Split 方式作为 MapReduce 的输入
Mapper:每个Mapper 将输入(key,value)数据解析成输出(key,value)
Partition:根据key或value及reduce的数量来决定当前的这对输出数据最终应该交由哪个reduce task处理( Partitioner接口,默认自动完成,可定制)
Combine:缓存溢写时完成,如果有很多个相同key/value对需要发送到某个reduce端去,那么需要将这些key/value值拼接到一块,减少与partition相关的索引记录(reducer接口,默认自动完成,可定制)
Merge:溢写文件合并,同时再次执行Combiner(默认自动完成)
注:
HDFS中的数据是以 block存储,这里怎么又变成了以Split 作为输入呢?其实 block 是 HDFS 中的术语,Split 是 MapReduce 中的术语。默认的情况下,一个 Split 可以对应一个 block,当然也可以对应多个block,它们之间的对应关系是由 InputFormat 决定的。默认情况下,使用的是 TextInputFormat,这时一个Split对应一个block。 假设这里有4个block,也就是4个Split,分别为Split0、Split1、Split2和Split3。这时通过 InputFormat 来读每个Split里面的数据,它会把数据解析成一个个的(key,value),然后交给已经编写好的Mapper 函数来处理。
默认对key hash后再以reduce task数量取模。默认的取模方式只是为了平均reduce的处理能力,如果用户自己对Partitioner有需求,可以订制并设置到job上。
Map流程图
Reduce流程
Copy:简单地拉取数据
Merge:同map Merge,文件合并
Reducer:每个Reducer将输入(key,value)数据解析成输出(key,value)
把结果放到HDFS上
- (六)MapReduce特点
- MapReduce编程实例(六)
- mapreduce(六):MapReduce原理
- MapReduce Design Patterns(3. Top Ten))(六)
- [Hadoop源码解读](六)MapReduce篇之MapTask类
- [Hadoop源码解读](六)MapReduce篇之MapTask类
- Hadoop MapReduce之ReduceTask任务执行(六)
- [Hadoop源码解读](六)MapReduce篇之MapTask类
- [Hadoop源码解读](六)MapReduce篇之MapTask类
- Hadoop读书笔记(六)MapReduce自定义数据类型demo
- [hadoop]MapReduce实例之好友推荐(六)
- MapReduce学习笔记之数据连接(六)
- Hadoop学习之MapReduce(六)
- Hadoop学习之MapReduce(六)
- 我国网络游戏产业地域特点六“最”
- MapReduce Design Patterns(chapter 3 (part 2))(六)
- hadoop学习(六)WordCount示例深度学习MapReduce过程(1)
- Hadoop权威指南学习(六)——MapReduce的特性
- 图像匹配 一些基本算法
- 解android的Handler之谜
- java向上转型和向下转型
- 原子操作
- jvm概念梳理
- (六)MapReduce特点
- Burp Suite 介绍
- 使用Filter-policy Route-policy ACL 实现对RIP路由发布的控制
- datasets api 问题
- webview内的iframe中的事件不可用
- 实现通用的双向链表(c语言实现)
- PHP——计算最大值和平均值(关键字重复引起的错误)
- 解决boot分区不足的问题
- STM32F10X寄存器版本开发环境的搭建