`
lt200819
  • 浏览: 181645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JobTracker与Scheduler

 
阅读更多

JobTracker作为hadoop mapred架构中的核心模块,负责接收用户提交的Job请求,将Job(以Task形式)分配到各Task执行。Hadoop将JobTracker分配任务以及任务调度的逻辑进行了独立抽象,交给TaskScheduler完成,从而使得对Hadoop有改进企图的使用者可以通过实现自己的TaskScheduler类来完成对JobTracker的调度机制的个性化定制。

工作机制并不复杂,org.apache.hadoop.mapred.TaskScheduler为一个虚类,主要方法有:

public void start() throws IOException
public void terminate() throws IOException
public abstract List<Task> assignTasks(TaskTracker taskTracker)  throws IOException

研究一下JobTracker是如何使用这些方法的,就可知道其如何完成任务的调度工作。

1. 初始化
JobTracker对象中会包含一个类型为org.apache.hadoop.mapred.TaskScheduler的成员taskScheduler。taskScheduler在JobTracker对象的构造函数中,以反射方式创建。所创建的实际类型,为配置中的mapred.jobtracker.taskScheduler配置项所定义。只要是TaskScheduler的扩展类,都可以将其类名定义到mapred.jobtracker.taskScheduler中,从而实现让JobTracker使用用户自定义的scheduler的目的。

JobTracker为一个独立进程,其main方法会调用offerService方法,offerService会进行一些初始化工作及启动JobTracker的相关服务线程。其中,就会调用taskScheduler.start()。

2. 任务分配
JobTracker的heartbeat方法,会被taskTracker通过Hadoop IPC机制调用(对于IPC我们将另行说明)。在配置的时间间隔之后,每个taskTracker都会触发这个JobTracker heartbeat。关注一下heartbeat的参数:TaskTrackerStatus status,  boolean restarted, boolean initialContact,   boolean acceptNewTasks, short responseId 。其中的acceptNewTasks,当taskTracker任务自己还可以接受更多任务时,被设置成true;status则存储了taskTracker的状态信息。

JobTracker在heartbeat的处理过程中,当确认调用这个heatbeat的tasktracker可以接受更多的task时,调用taskScheduler.assignTasks来触发scheduler的任务分配逻辑,这样,通过传入参数“TaskTracker”告诉scheduler哪台tasktracker正在请求任务分配,scheduler则通过这个方法的task列表返回值,告诉jobtracker可以为该tasktracker分配哪些任务。

3. 结束
这个比较简单,JobTracker在结束的时候会调用close()方法,而该方法中,会调用scheduler的close。

分享到:
评论

相关推荐

    JobTracker:Hadoop JobTracker OS X 菜单栏应用程序

    JobTracker Mac 菜单栏应用程序 Hadoop JobTracker 的 Mac 菜单栏应用程序界面。 它使您可以轻松访问 JobTracker 中的作业,并提供有关开始、完成和失败作业的 Growl/通知中心通知。 请参阅了解更多信息并下载二...

    MapReduceV1:Job提交流程之JobTracker端分析

    MapReduceV1实现中,主要存在3个主要的分布式进程(角色):JobClient、JobTracker和TaskTracker,我们主要是以这三个角色的实际处理活动为主线,并结合源码,分析实际处理流程。上一篇我们分析了Job提交过程中...

    MapReduceV1:JobTracker处理Heartbeat流程分析

    我们基于Hadoop1.2.1源码分析MapReduceV1的处理流程。这篇文章的内容,更多地主要...JobTracker与TaskTracker之间通过org.apache.hadoop.mapred.InterTrackerProtocol协议来进行通信,TaskTracker通过该接口进行远程调

    light-task-scheduler.rar

    有三种角色, JobClient, JobTracker, TaskTracker。各个节点都是无状态的,可以部署多个,来实现负载均衡,实现更大的负载量, 并且框架具有很好的容错能力。 采用多种注册中心(Zookeeper,redis等)进行节点信息...

    Springboard JobTracker-crx插件

    语言:English 直接从职位发布网站将职位申请...获得联系:与Springboard社区成员联系并扩展您的网络。获得消息:通过请求信息面谈从他们的经验中学习。 获得推荐:您可能会推荐给招聘经理,以担任其公司的公开职位。 权

    hadoop 容量调度器

    mapred.capacity-scheduler.queue.&lt;queue-name&gt;.capacity:设置调度器中各个queue的容量,这里指的是占用的集群的slots的百分比,需要注意的是,所有queue的该配置项加起来必须等于100,否则会导致JobTracker启动...

    基于Dijkstra算法分布式JobTracker节点模型通信方式的优化.pdf

    #资源达人分享计划#

    MapReduceV1:JobTracker端Job/Task数据结构

    在MapReduce程序运行的过程中,JobTracker端会在内存中维护一些与Job/Task运行相关的信息,了解这些内容对分析MapReduce程序执行流程的源码会非常有帮助。在编写MapReduce程序时,我们是以Job为单位进行编程处理,一...

    JobTracker

    自述文件该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...

    大数据平台常见面试题.pdf

    TaskTracker 主动与 JobTracker 通信,接收作业,并负责直接执⾏每⼀个任务。 TaskTracker 都需要运⾏在 HDFS 的 DataNode 上 4. HDFS 默认 Block Size a)32MB b)64MB c)128MB 注:旧版本是64MB 5. Client 端上传⽂...

    MapReduceV1:TaskTracker端启动Task流程分析

    TaskTracker周期性地向JobTracker发送心跳报告,在RPC调用返回结果后,解析结果得到JobTracker下发的运行Task的指令,即LaunchTaskAction,就会在TaskTracker节点上准备运行这个Task。Task的运行是在一个与...

    国外面试leetcode-JobTracker:工作追踪器

    JobTracker是一款适用于申请科技行业实习和全职工作的大学生的应用程序,可帮助他们组织工作申请。 为什么要使用这个应用程序? 目前,大学生使用 Excel 电子表格、Google Sheets 电子表格或跟踪他们的实习和新毕业...

    LTS用户文档

    LTS用户文档 LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用,同时也希望开源爱好者一起贡献。

    分布式任务调度框架 集合

    有三种角色, JobClient, JobTracker, TaskTracker。 4. uncode-schedule 基于zookeeper+spring task的分布式任务调度组件,非常小巧,无需任何修改就可以使spring task具备分布式特性,确保所有任务在集群中不重复...

    jobtracker-client

    工作追踪器 1.0 在此处部署版本: : 这里的后端存储库: : 一个使用 React、express、node 和 MongoDB 从头构建的 jobtracker 应用程序! 在寻找新的下一个机会的同时跟踪我申请的所有工作!

    JobTracker:为Hadoop1实现了实时调度器

    更改Scheduler.java中的assignTasks()方法,添加一个模块,杀死未命中的作业 制作jar并更改Hadoop1的配置 重启 Hadoop1 集群 FIFO调度器 默认调度程序调度更早到来的作业 EDFS调度器 将首先安排截止日期较早的作业。...

    搭建hadoop伪分布式.docx

    这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode),请注意分布式运行中的这几个结点的区别:从分布式存储的角度来说,...

    JobTracker Extension-crx插件

    语言:English 该扩展使学生可以快速管理他们的工作申请截止日期。 就业吧! 通过此扩展程序,用户只需单击两次即可将“握手”作业的最后期限添加到其Google日历中。 它还只需一步即可添加来自其他网站的事件。

Global site tag (gtag.js) - Google Analytics