Hadoop 任务调度分析启动篇

来源:互联网 发布:阿里云服务器架设sf 编辑:程序博客网 时间:2024/05/22 01:53


      学习hadoop已有一段时间,  从最初的搭建环境, 配置环境, 编写MapReduce应用, 到基于hive的查询, 慢慢的开始喜欢和习惯它的这种模式, 最近对hadoop集群环境运行原理很感兴趣, 很想知道它究竟是怎么做到这种分步式的运算与协调,  也很想能够从事这方面的工作.  学习了董西成的<<深入解析MapReduce架构设计与实现原理>>一书后, 慢慢的为我揭开了Hadoop的盖头,  通过分析源码的实现, 从中也深刻的体会到架构设计的美, 配置的灵活, 构思的巧妙. 本篇主要针对Hadoop的核心--任务调度进行分析, 通过代码的分析, 去理解它的设计,这是一种深入学习hadoop的方式. 

  

   在这里我使用的hadoop版本为1.1.2 , 针对任务调度主要会整理以下流程, 并去分析各个实现细节, 中间有错误和模糊的地方还请给予指摘, 欢迎交流.

   我会以作业提交为起点进行分析:

   一> 分析JobTracker的初始化工作和作业的提交和初始化过程,这主要观注于job初始化都做了那些事, 及状态的变化队列管理等.

   二> 分析JobTracker的心跳接收与响应, TaskScheduler是如何组织和分配不同的TaskAction命令的, 都采用了那种分配策略.以及TaskTrackerStatus的在JT侧的更新.

   三> 分析TaskTracker的的初始化与根据心跳应答启动Task, 这主要会分析任务的行为和启动过程分析.

   四> 分析Task的执行过程和中间的一些细节.

   五> 分析Task和Job的清理过程.

   以上会重点关注任务的调度的分析, 这主要会分析CapacityTaskScheduler的实现. 通过以上的分析, 对于MapReduce应用的整个执行过程会有一个清晰的理解. 针对各个参数的配置会有更明确的理解.

   这中间会分析一些hadoop内部使用的技术点

   一> RPC的实现机制.

   二> JvmManager的管理.

   三> 资源管理的分配策略.

   四> 安全管理.

  

  特此声明: 本篇可能不会过多涉及hadoop的理论实现. 重点分析具体的代码实现及其细节. 

  如有了解的请参考hadoop官网, Hadoop权威指南和深入解析MapReduce架构设计与实现原理. 


未完待续, 请关注下一篇!

原创粉丝点击