
摘要: 在“从串行到并行,从并行到分布式”中,我们区分了串行,并行,并发和分布式,并介绍了分布式计算框架MapReduce. 在本文中,我们将对MapReduce(Hadoop 2.x版)的概念,执行过程和工作原理进行深入讨论.
百度百科对MapReduce的定义仍然比较全面:
MapReduce是用于并行处理大数据的计算模型,框架和平台. 它包含以下三层含义:
1)MapReduce是基于集群的高性能并行计算平台. 它使市场上的普通商用服务器可以形成具有数十个,数百个至数千个节点的分布式并行计算集群.
2)MapReduce是并行计算和运行的软件框架. 它提供了一个大型但设计良好的并行计算软件框架,该框架可以自动完成计算任务的并行处理,自动划分计算数据和计算任务,自动分配和执行任务以及在群集节点上收集计算结果以及分配数据存储,数据通信,容错处理和其他并行计算涉及系统要处理的系统的许多复杂底层细节,从而大大减轻了软件开发人员的负担.

3)MapReduce是并行编程模型和方法. 借助功能编程语言Lisp的设计概念,它提供了一种简单的并行编程方法,使用Map和Reduce函数编程来实现基本的并行计算任务,并提供了抽象操作和并行编程接口,以完成数据编程和计算处理简单方便.
用您自己的话概括:
MapReduce是一个基于集群的计算平台,一个简化了分布式编程的计算框架以及一个将分布式计算抽象为两个阶段(Map和Reduce)的编程模型. (记住这句话可以用来强迫)
首先,一个MapReduce程序执行流程图,让我们欣赏一下.


MapReduce工作原理
从图中我们可以看到MapReduce具有以下4个独立实体.
1. JobClient: 运行在客户端节点上,负责将MapReduce程序作为Jar包存储并存储在HDFS中mapreduce的工作原理,并将Jar包的路径提交给Jobtracker,后者负责分配和监视任务.
2. JobTracker: 在名称节点上运行,负责接收JobClient提交的Job,安排Job的每个子任务在TaskTracker上运行并进行监视mapreduce的工作原理,并在发现失败的任务后重新运行.
3. TaskTracker: 在数据节点上运行,负责与JobTracker主动通信,接收作业并直接执行每个任务.

4. HDFS: 用于与其他实体共享作业文件.
通过以下过程在每个实体之间完成MapReduce作业.
JobClient通过RPC协议从JobTracker请求一个新的应用程序ID,并且用于MapReduce作业的ID JobTracker检查该作业的输出描述. 例如,如果未指定输出目录或目录已经存在,则不提交作业,并且将错误返回给JobClient,否则,将新的作业ID返回给JobClient. JobClient将使用作业所需的资源(包括作业JAR文件,配置文件和计算出的Input slice)复制到以作业ID命名的HDFS文件夹中JobClient通过SubmitApplication()提交作业JobTracker收到调用它的SubmitApplication()消息,执行任务初始化JobTracker读取要在HDFS上处理的文件并开始计算输入分片,每个分片对应于TaskTrackerTaskTracker通过心跳机制接收任务(任务的描述性信息). TaskTracker读取HDFS上的作业资源(JAR软件包,配置文件等). TaskTracker启动一个Java子进程来执行特定的Task(MapperTask或ReducerTask)TaskTracker将Reduce结果写入HDFS

MapReduce工作原理图

读取HDFS中的文件. 每行都解析为
5. (可选)减少分组数据
根据不同的分区,将多个映射任务的输出通过网络复制到不同的reduce节点
合并并排序多个地图的输出.
重写reduce函数以实现自己的逻辑,处理输入键和值,并将其转换为新的键和值输出
将reduce的输出保存到文件中
最后,请允许我做广告. 作者开设了一个公共帐户[Big Data School],与大数据和人工智能分享一些相关的学习材料和访谈经验. 欢迎您一起交流学习.

大数据学院的二维代码
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-201893-1.html
武官不怕死
已经做了n次作战方案