网站开发是自己开发还是外包的,特色软件app推荐,自己做网站什么网站比较好,wordpress 移植1.1 MapReduce到底是什么 Hadoop MapReduce是一个软件框架#xff0c;基于该框架能够容易地编写应用程序#xff0c;这些应用程序能够运行在由上千个商用机器组成的大集群上#xff0c;并以一种可靠的#xff0c;具有容错能力的方式并行地处理上TB级别的海量数据集。这个定…1.1 MapReduce到底是什么 Hadoop MapReduce是一个软件框架基于该框架能够容易地编写应用程序这些应用程序能够运行在由上千个商用机器组成的大集群上并以一种可靠的具有容错能力的方式并行地处理上TB级别的海量数据集。这个定义里面有着这些关键词
一是软件框架二是并行处理三是可靠且容错四是大规模集群五是海量数据集。 1.2 MapReduce做什么 MapReduce擅长处理大数据它为什么具有这种能力呢这可由MapReduce的设计思想发觉。MapReduce的思想就是“分而治之”。 1Mapper负责“分”即把复杂的任务分解为若干个“简单的任务”来处理。“简单的任务”包含三层含义
一是数据或计算的规模相对原任务要大大缩小二是就近计算原则即任务会分配到存放着所需数据的节点上进行计算三是这些小任务可以并行计算彼此间几乎没有依赖关系。 2Reducer负责对map阶段的结果进行汇总。至于需要多少个Reducer用户可以根据具体问题通过在mapred-site.xml配置文件里设置参数mapred.reduce.tasks的值缺省值为1。
一个比较形象的语言解释MapReduce 我们要数图书馆中的所有书。你数1号书架我数2号书架。这就是“ Map”。我们人越多数书就更快。 现在我们到一起把所有人的统计数加在一起。这就是“ Reduce”。 1.3 MapReduce工作机制 实体一客户端用来提交MapReduce作业。 实体二JobTracker用来协调作业的运行。 实体三TaskTracker用来处理作业划分后的任务。 实体四HDFS用来在其它实体间共享作业文件。 二、Hadoop中的MapReduce框架 一个MapReduce作业通常会把输入的数据集切分为若干独立的数据块由Map任务以完全并行的方式去处理它们。
框架会对Map的输出先进行排序然后把结果输入给Reduce任务。通常作业的输入和输出都会被存储在文件系统中整个框架负责任务的调度和监控以及重新执行已经关闭的任务。 通常MapReduce框架和分布式文件系统是运行在一组相同的节点上也就是说计算节点和存储节点通常都是在一起的。这种配置允许框架在那些已经存好数据的节点上高效地调度任务这可以使得整个集群的网络带宽被非常高效地利用。 2.1 MapReduce框架的组成 1JobTracker JobTracker负责调度构成一个作业的所有任务这些任务分布在不同的TaskTracker上由上图的JobTracker可以看到2 assign map 和 3 assign reduce。你可以将其理解为公司的项目经理项目经理接受项目需求并划分具体的任务给下面的开发工程师。 2TaskTracker TaskTracker负责执行由JobTracker指派的任务这里我们就可以将其理解为开发工程师完成项目经理安排的开发任务即可。
2.2 MapReduce的输入输出 MapReduce框架运转在key,value键值对上也就是说框架把作业的输入看成是一组key,value键值对同样也产生一组key,value键值对作为作业的输出这两组键值对有可能是不同的。 一个MapReduce作业的输入和输出类型如下图所示可以看出在整个流程中会有三组key,value键值对类型的存在。 2.3 MapReduce的处理流程 这里以WordCount单词计数为例介绍map和reduce两个阶段需要进行哪些处理。单词计数主要完成的功能是统计一系列文本文件中每个单词出现的次数如图所示 1map任务处理 2reduce任务处理