胡元元
摘 要:JobManager作业管理系统是众多作业管理系统中的一员。随着计算机应用的增加和巨大的数据需求,JobManager作业管理系统对数据的放置也提出了更高的要求。提出了JobManager作业管理系统的数据放置问题,并为该问题设计了详细的数据放置子系统体系结构。
关键词:作业管理;数据放置;调度;分布式
DOIDOI:10.11907/rjdk.162492
中图分类号:TP319
文献标识码:A文章编号:1672-7800(2016)012-0048-03
0 引言
JobManager作业管理系统中的数据密集应用对大块I/O的需求越来越大,在广域网中处理和复制大量数据,带来数据放置的可靠性和效率问题。查找、传输、使用和复制数据,数据管理器要在需要的时候对数据进行分配和释放,并在用户使用完数据之后清空所有使用痕迹。
数据放置活动是整个JobManager作业管理系统中的关键因素,对数据的访问通常是数据密集应用中的瓶颈[1]。
1 数据放置子系统结构
JobManager作业管理系统提供了一个数据放置子系统来解决数据放置问题,这个子系统包括数据放置的专业调度程序,一个用于了解数据放置的作业分析器,一个从记录中提取有用信息并给予解释的知识库,以及一些实时优化工具[2]。这种数据放置子系统提供完整的可靠性、用户的抽象能力、在存储服务器上的平衡负载能力和控制网络中的交换能力。
在远程作业执行过程中,数据放置是整个作业执行的重要环节。当前解决这个问题的方法是手工或者使用简单脚本,没有任何自动化和容错能力,不适应分布式计算环境的剧烈变化。它们对作业没有权限,作业在整个过程中没有调度。
为了解决这些问题,数据放置作业在分布式计算环境中必须像计算作业一样成为第一类作业,它们需要排队、调度、监控和检查。更加重要的是,必须在没有人为干预的情况下成功执行。
因此,可为JobManager作业管理系统设计一个数据放置子系统来专门处理数据放置问题。数据放置子系统结构如图1所示。下面对数据放置子系统各模块进行介绍。
2 数据放置子系统模块
2.1 作业描述
在介绍数据放置子系统作业描述之前,有必要介绍JobManager作业管理系统中的作业和作业流,在此基础上,对数据放置作业和计算作业使用不同的作业描述。
2.1.1 单元作业(UnitJob)
在作业管理系统中,单元作业是可被执行的基本单位。
在作业管理系统中,通常需要自动执行一系列作业,如果这些作业满足一定的执行逻辑或者称之为作业依赖关系,那么将这些作业按照一定的依赖关系定制成一个作业流是一种很好的解决方式。
作业流在作业管理系统中也称为作业网络,是相互关联的作业形成的一个作业序列。它的基本工作单元是作业。每个作业流都有一个虚拟的开始点和结束点。不含任何作业的作业流叫空作业流[3]。作业流是作业管理系统管理和调度的基本单元,作业不能脱离作业流而单独提交给系统。
2.1.2 作业网络图
作业流程图又称为作业网络图,是按照一定的逻辑关系将用户定义的作业组织成一个网状图,是作业流的图形表现形式。在作业管理系统中,一个作业流中既包含了多个传统意义上可执行的作业,又包含了作业之间的依赖关系,还有一种关系是作业流之间的依赖关系。作业之间的依赖关系以及作业流之间的依赖关系是作业流参考模型的显著特点,能够大大提升作业流的表达能力和执行能力。
2.1.3 结构化作业流
在基于作业流的作业管理系统中,可以构造出各种复杂的作业网络,以更好地控制作业的执行顺序。本文所研究的作业管理系统中,可以使用相关作业表示出顺序、条件/分支、循环3种基本的执行结构,形成结构化作业流。
(1)顺序。作业执行顺序是前后关系,前一作业执行完毕,后一作业再开始执行,见图2。
(2)条件/分支。条件/分支根据执行条件决定作业网络的执行走向,见图3。
(3)循环。循环执行类似于程序语言中的do-while。利用跳转作业来指定要循环执行的目标作业及重复次数,见图4。
obManager作业管理系统中的数据密集应用需要从远程站点到执行站点移动输入数据,执行作业,然后将输出数据从执行站点移动到原来或者是另一个远程站点。如果不希望在执行站点出现用尽磁盘空间情况,就需要在传输数据前分配空间,并且在移动输出数据后释放空间。
作业描述模块需要将这些计算和数据放置步骤使用不同的作业描述。将原来一个单元作业分解为计算作业和数据放置作业的集合,以便对数据放置作业进行下一步操作。
2.2 作业分析器
作业分析器获得用户定义的作业描述后,将作业描述分解为数据放置作业描述和计算作业描述,作业分析器将这两类作业区别开来。作业分析器建立了具体的图,数据放置作业是其中的节点,它们之间的依赖关系作为图中的弧,如图5所示,作业分析器将具体的图提交给作业流管理器。
从图5可以看出,原本的单元作业被分解为数据放置作业和计算作业。其中数据放置作业种类包括:
(1)传输:这种类型的作业是从一个物理位置转移一个完整的或部分的文件到另一个物理位置,包括输入操作、输出操作和第三方传输。
(2)分配空间:这类作业是在目的节点上分配存储空间、网络带宽并在来源/目的地之间建立一条通路,在数据放置前为需要放置的数据分配需要的资源。
(3)释放:这类作业是分配前释放相应资源。
(4)删除:这类作业是从远程或者本地存储服务器、磁带或磁盘进行物理删除。
2.3 作业流管理器
作业流管理器收到作业分析器转送的作业图后,将计算作业提交到计算作业队列[4],数据放置作业提交给数据放置作业队列[5]。不同队列中的作业由其对应的调度程序调度。
2.4 资源代理/策略实施器
资源代理为作业匹配资源,并且帮助数据定位和决定数据移动方向,每当需要时就会进行一次作业到资源的映射服务。策略实施器帮助申请具体的资源或具体的作业策略,就像一个存储服务器可以允许多少并行连接一样。
2.5 数据放置调度程序
数据放置调度程序分别在JobManager作业管理系统的输入/输出控制系统和输入/输出调度程序中。每个协议和数据存储系统都有不同的用户接口和不同的访问协议库。当作业执行时,用户需要处理所有不同协议库的复杂连接,并且在数据传输协议和存储系统中使用不同的接口[6]。数据放置调度程序为所有不同的协议和存储服务器提供一个统一的接口,并且在用户间提供抽象的能力。数据放置调度程序根据实施信息来调度队列中的作业。系统最重要的组成部分是数据放置调度程序,它根据数据放置作业特征作出正确的调度决定。
2.6 网络监视工具
网络监视工具收集并统计最大可利用端对端带宽、实际利用带宽、潜在的因素和传输的数量,并对调度程序和资源代理/策略实施器进行反馈。
2.7 知识库
JobManager作业管理系统使用过程中有这种情况:主机接受了作业,但是长时间没有做任何事情。调度程序只能不断尝试与主机对话,需要几小时甚至几天。同时还有特定主机在特定的作业等级上存在问题,但它却成功地执行了其它等级作业。查出上述问题的原因非常困难,而且受影响的只是部分作业。所以,简单的方法是让这些作业尽量避免使用资源。
为此提出了知识库观念,用来收集不同作业经验。知识库从批调度系统产生的作业记录文件中收集信息[7]。数据放置子系统从记录文件中提出信息并将它们加入知识库。知识库解析这些日志并且提出有用的信息,比如不同的事件、时间戳、错误信息和利用统计[8],然后将这些信息输入到数据库。知识库在数据库中询问、解释,然后返回结果给调度程序和资源代理/策略实施器,调度程序利用这些信息作出更好的调度决定。
2.8 失败代理
失败代理是从收集的信息或者知识库的反馈中尽快查出失败原因,并且使用“重试”机制和“最大允许时间”来判断和解决失败问题。调度程序隐藏了网络、存储系统、中间件或软件的失败。 “重试”机制指在返回一个失败前,可以重试失败的数据传输作业任意多次。 “中止并再运行”机制使用户可以为数据传输作业指定“最大允许运行时间”。当一个作业的运行时间超过了指定时间时,调度程序会自动终止这个作业并且重新运行,解决了系统传输永远挂起或者永不返回的问题,用户可指定重复任意次。
3 结语
本文提出了JobManager作业管理系统数据放置问题,为该问题设计了数据放置子系统,并对数据放置子系统体系结构进行了详细描述,为今后数据放置作业调度打下了基础。
参考文献:
[1] KOUZESRT,ANDERSONGA,ELBERTST,et al.The changing paradigm of data-intensive computing [J].Computer,2009,42(1):26-34.
[2] DEANJ,GHEMAWATS.Map reduce:simplified data processing on large clusters[J].Communications of the ACM,2008,51(1):107-113.
[3] CHANGF,DEANJ,GHEAMAWATS,et al.Big table:a distributed storage system for structured data[J].ACMTrans on Computer Systems,2008,26(2):1-26.
[4] DOWDYLW,FOSTERDV.Comparative model soft file assignment problem[J].ACM Computing Surveys (CSUR),1982,14(2):287-313.
[5] DUZ,HUJ,CHENY.Optimized QoS-aware replica placement heuristics and applications in astronomy data grid[J].Journal of Systems and Software,2011,84(7):1224-1232.
[6] YUAND,YANGY,LIUX,et al.A data placement strategy in scientific cloud workflows[J].Future Generation Computer Systems,2010,26(8):1200-1214.
[7] 刘少伟,孔令梅,任开军,等.云环境下优化科学工作流执行性能的两阶段数据放置与任务调度策略[J].计算机学报,2011,34(11):2121-2130.
[8] TEVFIK KOSAR.Data placement in widely distributed systems [D].University of Wisconsin-Madison,2005.
(责任编辑:杜能钢)