MapReduce编程
来源:互联网 发布:数码宝贝进化图鉴软件 编辑:程序博客网 时间:2024/06/04 18:08
MapReduce:一种分布式计算的模型的框架,解决海量数据的计算问题
MapReduce将整个并行计算过程抽象到两个函数
1 Map(映射):对一些独立元素组成的列表的每一个元素进行指定的操作,可以高度并行
2 Reduce(化简):对一个列表的元素组进行合并
一个简单的MapReduce程序只需要指定map(),reduce(),input和output,剩下的事情交给框架处理,简单的处理流程图如下:
MapReduce的系统架构图如下:
JobTracker: 负责接受用户提交的作业,负责启动,跟踪任务执行。
TaskTracker:负责执行JobTracker分配的任务,管理各个任务在每个节点上的执行情况。
Job:用户的每一个请求称为一个作业
Task:每一个作业都需要拆分开来,交由多个服务器来完成,拆分出来的执行单位,就成为任务
Task分为MapTask和ReduceTask两种,分别进行Map和Reduce操作,依据Job设置的Map类和Reduce类
MapReduce执行的流程
一 map处理流程:
1. 读取文件内容,解析成key,value对,对输入文件的每一行解析成key,value对。每一个键值对调用一次map函数。
2. 写自己的逻辑,对输入的key,value进行处理,转换成新的key,value输出。
3. 对输出的key,value进行分区。
4. 对不同分区的数据,按照key进行排序,分组。相同key中的value放在一个集合里。
5. (可选)分组后的数据进行归纳。
二 reduce任务处理流程
1. 对多个map任务处理的输出,按照不同的分区,通过网络copy到不同的reduce节点
2. 对多个map任务的输出进行合并,排序。写reduce函数自己的逻辑,对输入的key,value处理,转换成新的key,value输出。
3. 把reduce的输出保存到文件中去
MapReduce将整个运行分为两个阶段:
Map阶段和Redduce阶段
Map阶段由一定数量的MapTask组成
输入数据的格式解析:InputFormat
输入数据处理:Mapper
数据分组:Partitioner
Reduce阶段由一定数量的ReduceTask组成
远程拷贝
数据按key进行排序
数据处理:Reducer
数据输出格式:OutputFormat
编写MapReduce的模板:
- MapReduce编程
- MapReduce编程
- MapReduce编程
- MapReduce编程
- MapReduce编程
- MapReduce编程
- mapreduce编程
- MapReduce编程
- mapreduce编程模型介绍
- MapReduce编程基础
- MapReduce高级编程
- MapReduce高级编程
- mapreduce编程过程
- MapReduce框架编程体会
- MapReduce编程基础
- MapReduce编程(入门篇)
- MapReduce编程模型
- MapReduce编程(入门篇)
- [转载] 为什么全球最好的大学大半在美国?看看美国的孩子是怎么念书的
- 八大排序算法
- HDU 4757 Tree (倍增算法求LCA + 可持久化Trie树)
- java单例模式(Singleton)
- php中的绘图技术
- MapReduce编程
- java 强制性异常与非强制性异常
- OPENCV 3.3+PYTHON 2.7 配置
- TCP 窗口机制
- UI 实现多线程方式之四 GCD之自定义并行队列
- Spring Batch MultiResourceItemReader example(八)
- 在Makefile中无缝连接字符串
- iOS开发分分钟搞定C语言 —— 运算符
- 通过反射创建单例模式的另一个实例