MapReduce的一个子Task的启动过程

首先,每一个mapreduce任务被分配到了某一个TaskTracker后,都会以一个新的进程的方式启动。

1)TaskTracker的Child内部类是每一个运行的子task的main类

2)TaskTracker的lauchTask是TaskTracker启动一个子Task的入口函数

3)TaskTracker的lauchTask通过Task(MapTask/ReduceTask)的createRunner方法得到一个TaskRunner对象(MapTaskRunner/ReduceTaskRunner)。TaskRunner是一个新的线程。通过启动这个新的启动线程来启动Task

    启动的过程是:1.localizeCache    2.设置子java进程的calsspath,和一些环境变量,设置log4j,然后将子java进程的主类设

    置成TaskTracker的Child,然后将子Task的id作为其中的一个参数

4)在程序里面运行一个shell命令 启动子task的java进程

5)TaskTracker的Child启动后,TaskTracker的Child的main方法通过从参数获取的taskid向TaskTracker索取Task对象(MapTask,ReduceTask),然后运行获得的Task的run方法。

6)Task的run方法首先会启动一个和TaskTracker通信的线程来报道进展情况,以及查看TaskTracker是不是重新启动过或者已经死掉了,如果TaskTracker是不是重新启动过或者已经死掉了,子java进程就直接退出。

7)运行MapRunner或者ReduceRunner的run方法。

 

 好绕啊。。。。佩服写这代码的人。由衷的佩服高智商。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值