作业管理系统(Batch Management System)是在集群环境上管理批量作业的调度系统。 集群的使用者通过作业管理系统与集群进行异步地交互——通常一个集群作业要运行相当长的时间,使用者通常不需要在终端前等待作业结束。 作业管理系统的一般工作方式如下:
- 用户向作业管理系统提交作业;
- 作业管理系统根据现有资源调度作业,将作业分配到适当节点运行;
- 作业结束,调度系统记录运行结果;
- 用户收到电子邮件或者在工作目录下看到运行结果。
相比于直接让用户登录到集群的每个节点进行运算,使用作业管理系统有很多好处,如更小的权限、更高的资源利用率、更便利的管理方式等。 因此,大型集群,如高性能计算集群,都提供了作业管理系统供用户使用。
作业管理系统的几个要素包括:
- 硬件资源池:服务器节点、互联网络、全局文件系统;
- 资源管理器:资源监视器、调度器和调度策略;
- 用户端库和工具;
商用的作业管理系统有IBM LSF、Altair PBS等,使用较为广泛的开源作业管理系统有Torque。
Hadoop也具有作业管理系统的核心功能,如接收作业、分配作业运行、监视硬件资源等。 这个入门教程将Hadoop与作业管理系统类比,从用户编写、提交作业的角度介绍Hadoop使用。 希望能为用户提供一份“可实践”的材料,由浅入深循序渐进,而不是一开始就扎入Hadoop冗长的Java API上。
阅读本教程前你应该对Hadoop有初步了解,并且有一个可用的伪分布式或者分布式Hdoop环境。 你可以参考Apache MapReduce Tutorial了解Hadoop,并搭建一个自己的Hadoop环境。