`
lt200819
  • 浏览: 187477 次
  • 性别: 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。

分享到:
评论

相关推荐

    light-task-scheduler.rar

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

    企业级IT架构分享 云计算架构师成长之路 Hadoop公平调度器指南 共8页.pdf

    - **调度器类**:`mapred.jobtracker.taskScheduler`用于指定使用的调度器类,对于公平调度器而言,应设置为`org.apache.hadoop.mapred.FairScheduler`。 - **默认资源池**:`mapred.fairscheduler.default-pool`...

    hadoop capacity

    Capacity Scheduler的安装通常与Hadoop集群的安装同步进行。一旦Hadoop安装完成,可以通过配置文件来启用Capacity Scheduler。 #### 五、配置 ##### 5.1 使用Capacity Scheduler 要启用Capacity Scheduler,需要...

    分布式任务调度框架 集合

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

    hadoop调度指南

    &lt;name&gt;mapred.jobtracker.taskScheduler &lt;value&gt;org.apache.hadoop.mapred.FairScheduler ``` 重启集群后,可以通过访问JobTracker的Web UI界面下的`http://&lt;jobtracker URL&gt;/scheduler`来确认公平调度器是否...

    Yarn知名培训私密资料

    3. Scheduler:调度器负责资源的分配策略,包括FIFO Scheduler、Capacity Scheduler和Fair Scheduler。 - FIFO Scheduler:先进先出,简单易实现,但可能不公平。 - Capacity Scheduler:容量调度器,保证各个队列...

    lts消息分布式源码

    5. 错误处理与重试:在`TaskTracker`和`JobTracker`中,都有对异常情况的处理逻辑,如任务执行失败后的重试机制,以及心跳检测以防止节点失联。 四、优化与扩展 LTS的源码设计清晰,易于理解和扩展。开发者可以...

    Hadoop公平调度器指南.pdf

    &lt;name&gt;mapred.jobtracker.taskScheduler &lt;value&gt;org.apache.hadoop.mapred.FairScheduler ``` - 基本参数包括但不限于资源池的设置、最小共享资源的定义等。 - 高级参数则涵盖了资源抢占的具体配置、作业限制...

    Hadoop任务调度器

    3. JobTracker通过TaskScheduler进行任务调度。 4. TaskTracker周期性地通过heartbeat向JobTracker报告自身状态和任务状态。 5. JobTracker根据调度策略决定哪些任务分配给哪些TaskTracker。 6. TaskTracker接收到新...

    分布式任务调度

    3. **任务执行与反馈**:TaskTracker执行任务后,将执行结果反馈给JobTracker。如果JobTracker不可用,则将结果存储至本地FailStore,等待JobTracker恢复后再进行反馈。 4. **任务结果处理**:JobTracker根据任务...

    YARN 基础架构,工作机制,任务调度器

    YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 中的资源管理系统,它的设计思想是将 MRv1 中的 JobTracker 拆分成两个独立的服务:一个全局的资源管理器 ResourceManager 和每个应用程序持有的 ...

    Hadoop期末整理.pdf

    7. 调度器:Hadoop 提供了FIFO(先进先出)、Capacity Scheduler和Fair Scheduler三种调度策略,以优化资源分配和作业执行效率。 总结来说,Hadoop 是一种针对大数据处理的解决方案,通过HDFS存储数据,MapReduce...

    大数据高级编程最佳实践

    每个TaskTracker都与JobTracker保持联系,报告其状态和进度。 - **HDFS:**为MapReduce任务提供存储支持,确保数据的可靠性和高可用性。 #### 三、MapReduce作业执行流程 MapReduce作业的执行过程可以概括为以下几...

    hadoop 容量调度器

    所有的队列容量之和必须等于100%,否则JobTracker将无法启动。 2. `mapred.capacity-scheduler.queue.&lt;queue-name&gt;.maximum-capacity`: 这个参数定义了队列可使用的最大容量,即队列在任何时刻能够占用的最大资源...

    Apache Hadoop---Yarn.docx

    在Hadoop 2.0版本中,YARN作为核心组件引入,取代了原有的MR1(MapReduce 1.0)中的JobTracker,实现了资源管理和作业调度的分离。 YARN的核心思想是将JobTracker的功能拆分为ResourceManager(RM)和...

    LTS用户文档

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

Global site tag (gtag.js) - Google Analytics