公开/公告号CN103399787A
专利类型发明专利
公开/公告日2013-11-20
原文格式PDF
申请/专利权人 北京华胜天成科技股份有限公司;北京华胜天成软件技术有限公司;
申请/专利号CN201310339780.8
申请日2013-08-06
分类号
代理机构北京庆峰财智知识产权代理事务所(普通合伙);
代理人刘元霞
地址 100192 北京市海淀区学清路8号科技财富中心A座11层
入库时间 2024-02-19 20:56:53
法律状态公告日
法律状态信息
法律状态
2016-09-14
授权
授权
2013-12-18
实质审查的生效 IPC(主分类):G06F9/46 申请日:20130806
实质审查的生效
2013-11-20
公开
公开
技术领域
本发明涉及云计算领域,特别涉及一种基于Hadoop云计算平台MapReduce作业流式调度方法及调度系统。
背景技术
为了更为清楚的理解本发明,首先对几个名词进行以下解释:
Hadoop云平台:一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
MapReduce计算框架:基于HDFS的并行处理大数据集的软件框架,与HDFS构成Hadoop的两大核心组件。可以通过Hadoop提供的原生脚本提交Jar包(可运行的Java软件包),MapReduce计算框架会在整个Hadoop集群中运行此Jar包,简称运行MR Job,同时返回一个MR Job ID,根据此ID可以查询对应的MR Job状态、停止此MR Job。
协调系统——ZooKeeper:是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
当前对于MapReduce作业的调度主要是利用Linux操作系统的Crontab定时命令以及Hadoop原生脚本来进行作业调度。此方法虽然简单,但是最小粒度是分钟,同时不能为不同的作业指定不同的启动条件和需要多个MR Job才能完成的作业的智能、高效调度,扩展性非常差,同时不能有效的对Job进行应用级 别的监控,即作业失败后无法智能处理失败任务,可靠性不足。
发明内容
鉴于现有技术中存在的问题,本发明目的在于提供一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统,从而解决用户无法定制作业启动时机和需要多个MR Job的复杂应用无法智能高效调度问题。
根据本发明的一个方面,提供了一种基于Hadoop云计算平台的MapReduce作业流式调度方法,其特征在于包括以下步骤:
S1,在ZooKeeper上创建三棵“树”——准备树(prepare树)、工作树(working树)、失败树(failed树);在每棵树下为每个粒度创建一个节点,在working树和failed树的粒度节点下创建步骤节点;
S2:向外提供接口,让用户自定义Job的启动条件,主程序根据对应的实现去监控HDFS上的数据,当满足用户定义的条件时,在prepare树下建立一个作业元数据信息节点,指定MR Job需要的HDFS数据路径;
S3:主程序子线程监控prepare树下的节点,当发现有节点时,根据节点中的路径信息构造MR Job启动脚本,启动MR Job,记录启动时间、MR Job的ID和启动脚本信息到作业元数据信息节点,并将prepare树下的节点移动到working树对应的目录下;
S4:主程序每隔一段时间,遍历working树下的所有节点,根据MR Job ID获取MR Job的状态,如果失败,则失败次数加1,然后判断失败次数是否超过给定阈值,如果超过阈值,将此节点移动到failed树下,否则根据启动脚本重启此MR Job;如果成功,则根据作业性质的不同进行不同的处理;最后根据系统时间和MR Job的启动时间,判断MR Job是否超时,如果超时,则重启此MR Job,失败次数加1。
优选的,上述步骤S4中所述根据作业性质的不同进行不同的处理,包括以下步骤:
1)根据应用的复杂度不同,将作业分为单步MR Job作业和多步MR Job作业,同时在主程序内部为多步MR Job实例一个容器对象,其中包含着每一步对应的MR Job的启动脚本;
2)如果一个单步MR Job作业成功执行,则记录日志并删除作业信息节点;否则,当其中一个步骤完成后,MR Job容器对象中的计数器加1,然后根据计数器启动下一个MR Job,当所有步骤完成后,计数器归0,删除成功的作业信息节点。
根据本发明的另一方面,提供了一种基于Hadoop云计算平台的MapReduce作业流式调度系统,其特征在于包括:
树创建模块,用于在ZooKeeper上创建三棵“树”——准备树(prepare树)、工作树(working树)、失败树(failed树);在每棵树下为每个粒度创建一个节点,在working树和failed树的粒度节点下创建步骤节点;
Prepare树构造模块,用于向外提供接口,让用户自定义Job的启动条件,主程序根据对应的实现去监控HDFS上的数据,当满足用户定义的条件时,在prepare树下建立一个作业元数据信息节点,指定MR Job需要的HDFS数据路径;
Working树转移模块,用于主程序子线程监控prepare树下的节点,当发现有节点时,根据节点中的路径信息构造MR Job启动脚本,启动MR Job,记录启动时间、MR Job的ID和启动脚本信息到作业元数据信息节点,并将prepare树下的节点移动到working树对应的目录下;
Working树执行模块,用于主程序每隔一段时间,遍历working树下的所有节点,根据MR Job ID获取MR Job的状态,如果失败,则失败次数加1,然后判断失败次数是否超过给定阈值,如果超过阈值,将此节点移动到failed树下,否则根据启动脚本重启此MR Job;如果成功,则根据作业性质的不同进行不同的处理;最后根据系统时间和MR Job的启动时间,判断MR Job是否超时,如果超时,则重启此MR Job,失败次数加1。
优选的,上述Working树执行模块中所述根据作业性质的不同进行不同的处理,通过以下模块实现:
MR Job分类模块,用于根据应用的复杂度不同,将作业分为单步MR Job作业和多步MR Job作业,同时在主程序内部为多步MR Job实例一个容器对象,其中包含着每一步对应的MR Job的启动脚本;
MR Job调度模块,用于如果一个单步MR Job作业成功执行,则记录日志并删除作业信息节点;否则,当其中一个步骤完成后,MR Job容器对象中的计 数器加1,然后根据计数器启动下一个MR Job,当所有步骤完成后,计数器归0,删除成功的作业信息节点。
通过本发明,可以给每个粒度的作业指定单独的策略,控制不同粒度的作业按照不同的策略保证其安全性;通过“流”的思想控制作业分步、快速的完成。
附图说明
图1例示了本发明实施例在ZooKeeper上创建三棵“树”的具体结构;
图2例示了本发明实施例一种基于Hadoop云计算平台的MapReduce作业流式调度系统的结构图。
具体实施方式
为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明中,作业信息对象包含Hadoop MR Job使用的数据、Job的启动脚本、Job的ID、Job的启动时间、Job的步骤数、Job的失败次数等。
根据本发明的一个实施例,基于Hadoop云计算平台的MapReduce作业流式调度方法包括以下步骤:
S1,在ZooKeeper上创建三棵“树”——准备树(prepare树)、工作树(working树)、失败树(failed树);在每棵树下为每个粒度创建一个节点,在working树和failed树的粒度节点下创建步骤节点;
图1例示了在ZooKeeper上创建三棵“树”的具体结构。
S2:向外提供接口,让用户自定义Job的启动条件,主程序根据对应的实现去监控HDFS上的数据,当满足用户定义的条件时,在prepare树下建立一个作业元数据信息节点,指定MR Job需要的HDFS数据路径;
通过步骤S2,实现了根据定制作业启动时机的功能。
S3:主程序子线程监控prepare树下的节点,当发现有节点时,根据节点中的路径信息构造MR Job启动脚本,启动MR Job,记录启动时间、MR Job的ID和启动脚本信息到作业元数据信息节点,并将prepare树下的节点移动到working树对应的目录下;
S4:主程序每隔一段时间,遍历working树下的所有节点,根据MR Job ID获取MR Job的状态,如果失败,则失败次数加1,然后判断失败次数是否超过 给定阈值,如果超过阈值,将此节点移动到failed树下,否则根据启动脚本重启此MR Job;如果成功,则根据作业性质的不同进行不同的处理;最后根据系统时间和MR Job的启动时间,判断MR Job是否超时,如果超时,则重启此MR Job,失败次数加1。
优选的,上述步骤S4中所述根据作业性质的不同进行不同的处理,包括以下步骤:
1)根据应用的复杂度不同,将作业分为单步MR Job作业和多步MR Job作业,同时在主程序内部为多步MR Job实例一个容器对象,其中包含着每一步对应的MR Job的启动脚本;
2)如果一个单步MR Job作业成功执行,则记录日志并删除作业信息节点;否则,当其中一个步骤完成后,MR Job容器对象中的计数器加1,然后根据计数器启动下一个MR Job,当所有步骤完成后,计数器归0,删除成功的作业信息节点。
上述整个过程就像是“流水”一样自动运行,因而可称为“流”式MR Job调度。
本发明可完全以计算机程序的方式实现,因而通过与方法一一对应的方式,本发明还可构造出相应的系统结构。本发明还包括一种基于Hadoop云计算平台的MapReduce作业流式调度系统,如附图2所示,其特征在于包括:
树创建模块,用于在ZooKeeper上创建三棵“树”——准备树(prepare树)、工作树(working树)、失败树(failed树);在每棵树下为每个粒度创建一个节点,在working树和failed树的粒度节点下创建步骤节点;
图1例示了在ZooKeeper上创建三棵“树”的具体结构。
Prepare树构造模块,用于向外提供接口,让用户自定义Job的启动条件,主程序根据对应的实现去监控HDFS上的数据,当满足用户定义的条件时,在prepare树下建立一个作业元数据信息节点,指定MR Job需要的HDFS数据路径;
Working树转移模块,用于主程序子线程监控prepare树下的节点,当发现有节点时,根据节点中的路径信息构造MR Job启动脚本,启动MR Job,记录启动时间、MR Job的ID和启动脚本信息到作业元数据信息节点,并将prepare树下的节点移动到working树对应的目录下;
Working树执行模块,用于主程序每隔一段时间,遍历working树下的所有节点,根据MR Job ID获取MR Job的状态,如果失败,则失败次数加1,然后判断失败次数是否超过给定阈值,如果超过阈值,将此节点移动到failed树下,否则根据启动脚本重启此MR Job;如果成功,则根据作业性质的不同进行不同的处理;最后根据系统时间和MR Job的启动时间,判断MR Job是否超时,如果超时,则重启此MR Job,失败次数加1。
优选的,上述Working树执行模块中所述根据作业性质的不同进行不同的处理,通过以下模块实现:
MR Job分类模块,用于根据应用的复杂度不同,将作业分为单步MR Job作业和多步MR Job作业,同时在主程序内部为多步MR Job实例一个容器对象,其中包含着每一步对应的MR Job的启动脚本;
MR Job调度模块,用于如果一个单步MR Job作业成功执行,则记录日志并删除作业信息节点;否则,当其中一个步骤完成后,MR Job容器对象中的计数器加1,然后根据计数器启动下一个MR Job,当所有步骤完成后,计数器归0,删除成功的作业信息节点。
通过本发明,可以给每个粒度的作业指定单独的策略,控制不同粒度的作业按照不同的策略保证其安全性;通过“流”的思想控制作业分步、快速的完成。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如使用可实现同种功能目的的算法、使用不同的编程语言(如C、C++、Java等)实现等。这些都在本发明的权利要求所限定的保护范围内。
机译: 用于调度作业的信息处理系统,用于调度作业的作业管理装置,用于调度作业的程序以及用于调度作业的方法
机译: 基于调度程序的Hadoop生态系统中的数据分发应用服务器和包括该服务器的Hadoop生态系统
机译: 基于调度程序的Hadoop生态系统中的数据分发应用服务器和包括该服务器的Hadoop生态系统