一种实时在线的分布式计算框架的实现方法_2

文档序号:8412380阅读:来源:国知局
重Java VirtualMachine (Java虚拟机,以下简称JVM)置过程中,这个堆栈被丢弃并重新创建。(临时堆栈的初始大小可以通过配置选项指定)。为了使持久性可重用的JVM被重置,从中间件堆栈对象到临时堆栈对象的活动的参考信息一定不能存在。如果存在这样的信息,JVM将无法被重置。
[0027]步骤102,利用共享的JVM资源,实现JVM的重置;重置包括初始化JVM、重用中间件和/或共享应用类;重置具体的实现方法为,通过Java本地接口实现JVM的重置;共享应用类中禁止修改应用类;禁止修改应用类的具体内容包括,禁止修改应用类的全局静态变量、禁止接入应用类的派生物、禁止基于应用类加载程序库文件和禁止管理应用类的线程;重用中间件的具体方法包括清理中间件的状态和调用初始化的类文件;清理中间件的状态包括释放中间件的存储空间、终止中间件的线程和清除中间件在堆栈的控制;
[0028]在重置JVM时,每个JVM —个事务的模型意味着JVM资源的重用,包括:创建JVM,运行事务,销毁JVM。然而,对于一个传统的JVM而言,重启的开销非常大;大量的事务处理要求一个JVM能够被多个事务连续的重用,而且销毁和创建一个新的JVM仅在绝对必要的时候才去执行。一个可被重置的JVM被定义为一个在应用程序间可以将其重置到一个已知的状态的JVM。一旦JVM被重置,下一个运行的应用程序将无法决定它是运行在一个新的JVM上还是一个被重置的JVM。结果,该程序不能被先前程序的任何活动所影响。这个操作模型在持久性可重用的JVM中通过一个JVM选项来提供,-Xresettable选项。当该选项被指定时,JVM可以通过Java本地接口功能被重置,使用ResetJavaVMO功能。成功的提供重置功能使得接下来的应用程序能够在一个相同的持久性可重用的JVM被执行,成功的提供连续的重置功能使得在持久性可重用的JVM中连续执行数以千计的程序成为可能。它提供:降低每个事务的JVM启动开销。初始化JVM的开销被扩展分布到数个在JVM内执行的事务上,而且每个事务的JVM重置开销相对较低。降低每个事务的类加载开销。这是因为连续的重用中间件类,和可共享的应用类。如果JVM重置失败,加载程序销毁该JVM然后重新创建一个新的JVM。无论何时该情况发生,事务处理性能将会被降低。因此当遇到使JVM无法重置的活动和条件时,重置失败将会发生,例如:因为一个应用类执行了一个无法重置的操作。
[0029]由于持久性可重用的JVM不信任应用类,因此应用类必须遵循一套严格的设置规则防止JVM重置失败。例如:禁止对应用类执行如下操作:修改全局静态变量,并以此改变JVM的状态;使用抽象窗口工具包(AWT)或者任何它的派生物接入一个显示器、键盘、或者打印机,因为这样将会改变AWT的状态,并被当作是一个无法重置的子系统。例如:一个能够找到它的背景显示颜色的应用将被先前的一个应用所改变状态;直接加载一个本地程序库,因为它并不知道哪一个本地程序库是由应用提供的。例如:它能够修改静态变量;直接管理线程。这个限制的存在是为了确保当临时堆栈被清理时,不能够有任何到该临时堆栈的接入。以上这些行为,仅当它们可能在应用被终止以一个未定义的状态离开这个JVM时,才会被禁止。不能依靠这个应用去恢复该状态,而且这个JVM也不允许代表这个应用去恢复状态,因为这样会破坏Java的编码规范。因此这些行为是无法重置的行为,应用代码被JVM当作是不信任的代码对待。所以,如果在执行应用时侦测到无法重置的行为,这个JVM将会被打上无法重置的标记,加载程序将会被销毁,并重新创建该JVM。如果由于应用代码不被信任而导致在一定范围内被禁用,你将如何为系统构建需要全范围使用程序资源的功能,使用可信任的中间件,清理中间件的状态。
[0030]可信任的中间件通过一个中间件类加载器被加载,该加载器定义了这些被加载的类将被中间件所信任。被JVM信任的中间件通过JVM-reset功能去管理它自身的状态。中间件通过以下两方面管理自己的状态:它在ResetJavaVMO功能中清理自己的状态。通过使用能够为每一个中间件类定义的特殊的清理方法完成该操作。例如:典型的清理操作包括:释放存储空间;终止在事务中被创建的任何线程;清空从中间件对象到应用对象的所有参考信息。这样确保JVM重置不会因为交叉堆在垃圾回收时失败。因为中间件状态可以通过清理方法控制,而且采用该清理方法可以通过重置JVM为中间件保留状态。在ResetJavaVMO调用后中间件重新初始化它的类。它使用能够为每一个中间件类定义的特殊的重新初始化方法进行该操作,并且在第一次重用这个类时执行。
[0031 ] 步骤103,通过所述JVM的重置,实现了在线的分布式计算框架。
[0032]以上通过具体的和优选的实施例详细的描述了本发明,但本领域技术人员应该明白,本发明还提供了用于执行在此描述的任何方法的计算机程序或计算机程序产品,以及其上存储了用于执行在此描述的任何方法的程序的计算机可读介质。本发明并不局限于以上所述实施例,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。
【主权项】
1.一种实时在线的分布式计算框架的实现方法,其特征在于,包括如下步骤: 步骤101,在JVM的MapReduce地址空间中共享JVM资源;所述JVM资源包括堆栈、力口载所述堆栈的中间件和运行所述堆栈的应用类; 步骤102,利用共享的所述JVM资源,实现所述JVM的重置;所述重置包括初始化所述JVM、重用所述中间件和/或共享所述应用类; 步骤103,通过所述JVM的重置,实现了在线的分布式计算框架。
2.根据权利要求1所述的实时在线的分布式计算框架的实现方法,其特征在于:步骤101中,所述堆栈包括系统堆栈、应用类系统堆栈和非系统堆栈;所述系统堆栈用于为所述JVM运行的生命周期内加载类文件;所述应用类系统堆栈用于为所述JVM的生命周期内共享的所述JVM资源构建应用类对象;所述非系统堆栈用于为所述JVM的生命周期内构建内存区域。
3.根据权利要求2所述的实时在线的分布式计算框架的实现方法,其特征在于:所述系统堆栈包括通过自举类加载系统类文件、通过扩展类加载系统的标准扩展类文件和加载中间件类文件。
4.根据权利要求2所述的实时在线的分布式计算框架的实现方法,其特征在于:所述非系统堆栈包括通过加载中间件类共享对象的中间件堆栈和通过环境变量加载临时类文件对象的临时堆栈。
5.根据权利要求1所述的实时在线的分布式计算框架的实现方法,其特征在于:步骤102中,所述重置具体的实现方法为,通过Java本地接口实现JVM的重置。
6.根据权利要求1所述的实时在线的分布式计算框架的实现方法,其特征在于:步骤102中,共享所述应用类中禁止修改所述应用类;禁止修改所述应用类的具体内容包括,禁止修改所述应用类的全局静态变量、禁止接入所述应用类的派生物、禁止基于所述应用类加载程序库文件和禁止管理所述应用类的线程。
7.根据权利要求1所述的实时在线的分布式计算框架的实现方法,其特征在于:步骤102中,重用所述中间件的具体方法包括清理所述中间件的状态和调用初始化的类文件。
8.根据权利要求7所述的实时在线的分布式计算框架的实现方法,其特征在于:清理所述中间件的状态包括释放所述中间件的存储空间、终止所述中间件的线程和清除所述中间件在所述堆栈的控制。
【专利摘要】一种实时在线的分布式计算框架的实现方法,包括步骤101,在JVM的MapReduce地址空间中共享JVM资源;所述JVM资源包括堆栈、加载所述堆栈的中间件和运行所述堆栈的应用类;步骤102,利用共享的所述JVM资源,实现所述JVM的重置;所述重置包括初始化所述JVM、重用所述中间件和/或共享所述应用类;步骤103,通过所述JVM的重置,实现了在线的分布式计算框架。在大规模集群操作系统的事务处理环境中,持久性可重用Java虚拟机能够加速Java应用的处理速度。持久性可重用的JVM通过提供以下能力提高了在这些环境中事务处理的吞吐量,大大降低用于海量数据处理的MapReduce任务的启动时间。
【IPC分类】G06F9-455
【公开号】CN104731634
【申请号】CN201310723603
【发明人】张明浩, 王旭, 王耘, 陆金红
【申请人】珠海世纪鼎利通信科技股份有限公司
【公开日】2015年6月24日
【申请日】2013年12月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1