首页> 中国专利> 一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统

一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统

摘要

本发明公开了一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统,其通过将源数据进行实时汇聚、存储至Hadoop云平台;为作业启动指定相应的策略,如定时准时启动或者等此粒度对应时间段内的数据全部汇聚完毕;给单步、多步的作业指定对应的启动脚本,启动系统,通过程序高效、智能的控制作业的运行。通过本发明,可以给每个粒度的作业指定单独的策略,控制不同粒度的作业按照不同的策略保证其安全性;通过“流”的思想控制作业分步、快速的完成。

著录项

  • 公开/公告号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等)实现等。这些都在本发明的权利要求所限定的保护范围内。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号