`
linhaoxiang
  • 浏览: 22273 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Hadoop的MapReduce的工作机制剖析

阅读更多

Hadoop的MapReduce的工作机制剖析

 

安装完hadoop之后我们肯定第一个就要先跑跑Wordcount的实例,这个实例的运行机制就是MapReduce.什么叫MapReduce呢,你可以把他分为Map和Reduce两个过程。

Mapper 

nMap-reduce的思想就是分而治之 

nMapper负责,即把复杂的任务分解为若干个简单的任务执行 

n简单的任务有几个含义:1 数据或计算规模相对于原任务要大大缩小;2 就近计算,即会被分配到存放了所需数据的节点进行计算;3 这些小任务可以并行计算,彼此间几乎没有依赖关系 

Reducer 

n对map阶段的结果进行汇总 

nReducer的数目由mapred-site.xml配置文件里的项目mapred.reduce.tasks决定。缺省值为1,用户可以覆盖之 

接下来我们看看MapReduce的运行图

 

 

这个图有十个步骤,代表了MapReduce的运行机制

<!--[if !supportLists]-->1.<!--[endif]-->首先编写好MapReduce Programe作业,也就是JAVA代码,然后由其中任一节点进行提交。

<!--[if !supportLists]-->2.<!--[endif]-->由JobClient向JobTracker来申请一个作业或者说任务ID,用来申请加入任务列表中。

<!--[if !supportLists]-->3.<!--[endif]-->通过HDFS系统,把任务源代码也就是JAVA代码发送到各个节点里面去

<!--[if !supportLists]-->4.<!--[endif]-->提交任务,正式加入到任务列表中来完成

<!--[if !supportLists]-->5.<!--[endif]-->初始化任务,比如建立数据结构,记录Job运行情况等

<!--[if !supportLists]-->6.<!--[endif]-->通过HDFS向Namenode来询问文件分布在哪些节点里面,得到这些索引

<!--[if !supportLists]-->7.<!--[endif]-->通过TaskTracker和JobTracker每分钟一次的心跳联系来获知哪些节点可以运行任务,比如死机或者正忙的节点就不会进行任务

<!--[if !supportLists]-->8.<!--[endif]-->确定好需要执行任务的节点或者说TaskTracker后,会通过HDFS来获取任务的JAVA代码

<!--[if !supportLists]-->9.<!--[endif]-->需要完成任务的节点开始在本地架设虚拟机准备开始执行任务

<!--[if !supportLists]-->10.<!--[endif]-->运行任务

 

 

 

  • 大小: 157.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics