码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop简单运行流程

时间:2015-07-31 01:26:56      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:hadoop

Hadoop集群中分主节点master节点和slave节点,master节点监控slave节点。master和slave之间通过ssh协议进行通信。

       master节点上部署有JobTracker和NameNode,当然也可以部署TaskTracker和DataNode。slave节点上部署TaskTracker和DataNode节点。

JobTracker监控TaskTracker,NameNode管理DataNode节点。每个TaskTracker节点又有若干个map和reducer槽。每个map槽或reduce槽就代表一个任务。

TaskTracker监控本机的map和reduce任务。如果map任务或reduce任务有更新,会通过心跳(一般间隔是3秒)告诉TraskTracker,

TraskTracker再通过心跳(一般至少5s,因为代价比较大)告诉JobTracker。




1。整体流程

一道MapRedcue作业是通过JobClient.rubJob(job)向master节点的JobTracker提交的, JobTracker接到JobClient的请求后把其加入作业队列中。

JobTracker一直在等待JobClient通过RPC提交作业,而TaskTracker一直通过RPC向 JobTracker发送心跳heartbeat询问有没有任务可做,如果有,

让其派发任务给它执行。如果JobTracker的作业队列不为空, 则TaskTracker发送的心跳将会获得JobTracker给它派发的任务。这是一道pull过程。

slave节点的TaskTracker接到任务后在其本地发起Task,执行任务。

名词解释

 1.1.JobClient
             每一个job都会在用户端通过JobClient类将应用程序以及配置参数打包成jar文件存储在HDFS,并把路径提交到JobTracker,然   后由JobTracker创

建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。
  
       1.2.JobTracker
             JobTracker是一个master服务,启动之后JobTracker会接收job,负责调度job的每个子任务task运行于TaskTracker上,并监控它们,如

果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。
   
     1.3.TaskTracker
             TaskTracker是运行于多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。2.主要数据结构
     
   2.1.JobInProgress
             JobClient提交job后,JobTracker会创建一个JobInProgress来跟踪和调度这个job,并把它添加到job队列里。JobInProgress会根据提交的job jar中

定义的输入数据集(已分解成FileSplit)创建对应的一批TaskInProgress用于监控和调度MapTask,同时在创建指 定数目的TaskInProgress用于监控和

调度ReduceTask,缺省为1个ReduceTask。
    
    2.2.TaskInProgress
             JobTracker启动任务时通过每一个TaskInProgress来launchTask,这时会把Task对象(即MapTask和ReduceTask)序列化写入相应的TaskTracker服

务中,TaskTracker收到后会创建对应的TaskInProgress(此TaskInProgress实现非JobTracker中使用的 TaskInProgress,作用类似)用于监控和调度

该Task。启动具体的Task进程是通过TaskInProgress管理的TaskRunner对象来运行的。TaskRunner会自动装载job jar,并设置好环境变量后启动一个

独立的java child进程来执行Task,即MapTask或者ReduceTask,但它们不一 定运行在同一个TaskTracker中。
     2.3 MapTask和ReduceTask
               一个完整的job会自动依次执行Mapper、Combiner(如有的话)和Reducer,其中Mapper和Combiner是由MapTask调用执行,Reducer则

由ReduceTask调用,Combiner实际也是Reducer接口类的实现。Mapper会根据job jar中定义的输入数据集 按<key1,value1>对读入,处理完成生成

临时的<key2,List value2>对,如果定义了Combiner,MapTask会在Mapper完成调用该Combiner将相同key的值做合并处理,以减少输出结果集。

MapTask的任务全完成即交给ReduceTask进程调用Reducer处理,生成最终结果<key3,value3> 对。




版权声明:本文为博主原创文章,未经博主允许不得转载。

hadoop简单运行流程

标签:hadoop

原文地址:http://blog.csdn.net/ac_great/article/details/47160049

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!