你好,游客 登录
背景:
阅读新闻

Hadoop实战之 hadoop作业调度详解

[日期:2014-09-19] 来源:  作者: [字体: ]

2.4       JobTracker和TaskTracker

 

    如上面所述,JobTracker和TaskTracker是MapReduce框架最基本的两个服务,其他所有处理均由它们调度执行,下面简单介绍它们内部提供的服务及创建的线程,详细过程下回分解J

 

2.4.1            JobTracker的服务和线程

 

    JobTracker是MapReduce框架中最主要的类之一,所有job的执行都由它来调度,而且hadoop系统中只配置一个 JobTracker应用。启动JobTracker后它会初始化若干个服务以及若干个内部线程用来维护job的执行过程和结果。下面简单介绍一下它们。

 

    首先,JobTracker会启动一个interTrackerServer,端口配置在Configuration中 的"mapred.job.tracker"参数,缺省是绑定8012端口。它有两个用途,一是用于接收和处理TaskTracker的 heartbeat等请求,即必须实现InterTrackerProtocol接口及协议。二是用于接收和处理JobClient的请求,如 submitJob,killJob等,即必须实现JobSubmissionProtocol接口及协议。

 

 

    其次,它会启动一个infoServer,运行StatusHttpServer,缺省监听50030端口。是一个web服务,用于给用户提供web界面查询job执行状况的服务。

 

 

    JobTracker还会启动多个线程,ExpireLaunchingTasks线程用于停止那些未在超时时间内报告进度的Tasks。 ExpireTrackers线程用于停止那些可能已经当掉的TaskTracker,即长时间未报告的TaskTracker将不会再分配新的 Task。RetireJobs线程用于清除那些已经完成很长时间还存在队列里的jobs。JobInitThread线程用于初始化job,这在前面章 节已经介绍。TaskCommitQueue线程用于调度Task的那些所有与FileSystem操作相关的处理,并记录Task的状态等信息。

 

 

2.4.2            TaskTracker的服务和线程

 

    TaskTracker也是MapReduce框架中最主要的类之一,它运行于每一台DataNode节点上,用于调度Task的实际运行工作。它内部也会启动一些服务和线程。

 

 

    TaskTracker也会启动一个StatusHttpServer服务来提供web界面的查询Task执行状态的工具。

 

 

    其次,它还会启动一个taskReportServer服务,这个用于提供给它的子进程即TaskRunner启动的MapTask或者 ReduceTask向它报告状况,子进程的启动命令实现在TaskTracker$Child类中,由TaskRunner.run()通过命令行参数 传入该服务地址和端口,即调用TaskTracker的getTaskTrackerReportAddress(),这个地址会在 taskReportServer服务创建时获得。

 

 

    TaskTracker也会启动一个MapEventsFetcherThread线程用于获取Map任务的输出数据信息。





收藏 推荐 打印 | 录入: | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款