首页> 中国专利> 分布式处理系统、分布式处理设备、分布式处理方法和分布式处理程序

分布式处理系统、分布式处理设备、分布式处理方法和分布式处理程序

摘要

为了提供能够减少要传输的数据容量并且以告诉开始分布式处理的分布式处理系统等。一种多个计算机(2a、2b、…)互连的分布式处理系统(1),其中计算机(2)中的每一个设置有加载每个模块并且执行初始化处理的模块加载器(3)、从先前提供的存储装置或另一计算机获取包括用于初始化处理的命令的元数据的元数据管理单元(4)、读取并且写入存储装置或其他计算机内的文件的文件管理单元(5)、以及执行分布式批处理应用的执行容器(6)。文件管理单元(5)在所述初始化处理之后,检查在所述存储装置中是否存在包括相应模块的执行代码的执行区域,并且当执行区域不存在时,从其他计算机加载执行代码,并且写入所加载的执行代码作为执行区域。

著录项

  • 公开/公告号CN105474177A

    专利类型发明专利

  • 公开/公告日2016-04-06

    原文格式PDF

  • 申请/专利权人 日本电气株式会社;

    申请/专利号CN201480031306.1

  • 发明设计人 安田纯一;

    申请日2014-05-29

  • 分类号G06F9/54(20060101);G06F15/177(20060101);

  • 代理机构11219 中原信达知识产权代理有限责任公司;

  • 代理人李兰;孙志湧

  • 地址 日本东京

  • 入库时间 2023-12-18 15:16:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-04

    授权

    授权

  • 2016-05-04

    实质审查的生效 IPC(主分类):G06F9/54 申请日:20140529

    实质审查的生效

  • 2016-04-06

    公开

    公开

说明书

技术领域

本发明涉及分布式处理系统、分布式处理设备、分布式处理方法 和分布式处理程序。更具体地讲,本发明涉及能够通过减小通信量高 速执行处理的分布式处理系统等。

背景技术

需要由计算机实现的处理已经变得越来越复杂且大规模。然而, 仅仅作为硬件的性能(计算能力、存储量等)的提高已经达到极限。 因此,近来,已经特别开发出借助网络相互连接的多个计算机以分配 方式协作执行处理所采用的分布式处理的技术(分布式数据库、分布 式高速缓存、分布式共享存储器、分布器批处理等)。

近来,特别地,变得可以在个人计算机领域中以低价获得容量是 4GB级别的RAM(主存储单元)、容量是1TB级别的硬盘(外部存 储器设备)、通信速度是1Gbps级别的NIC(网卡)等并且可以容易 地借助高速网络将设置有它们的计算机设备相互连接。因此,变得常 见的是,连接多个这种节点(服务器设备)并且针对各节点采用分布 式处理中间件以使其执行分布式处理。

中间件是典型地设置在操作系统(OS)和应用软件之间并且执行 OS功能和应用软件的多用途功能的扩展形式的软件。在这些之中,分 布式处理中间件提供分布式处理(多个节点之间的数据同步、应用的 分布/配置、进程的开始/结束、错误处理等)中需要的功能。近来,特 别地,用大量节点以协作方式执行处理的所谓云计算变得发达,使得 分布式处理中间件的重要性尤其愈发增大。

作为使用分布式处理中间件的分布式处理系统可执行的分布式处 理方法,存在诸如MapReduce、BSP和MPI的多种方法。在这些之中, 主-从型分布式处理方法也是典型方法。

主-从型是被称为主的控制组件或节点控制其他节点所采用的处 理模式中的一种,并且处理所谓的从。当在节点之间或者在进程之间 创建主-从关系时,一直由主对从进行控制。

图20是示出现有分布式处理系统900的结构的说明图。分布式处 理系统900是通过借助网络930将多个计算机设备相互连接而构成的。 计算机设备中的一个是主节点910,其他是从节点920a、920b--(一般 来讲,被称为从节点920)。

分布式处理中间件912安装在主节点910的OS911(操作系统) 上。类似地,分布式处理中间件922安装在从节点920的OS921上。

主节点910将分布式应用分布于从节点920,使其执行必要处理。 然而,通过从节点处理的部分与通过主节点处理的部分并不完全相同, 而是常常可以是处理的部分或数据的部分。通过在各节点执行不同处 理或者处理不同数据,可分布式并行进行多种处理。因此,可高速执 行处理。

图21是示出通过图20中示出的分布式处理系统900执行的分布 式应用950的结构的说明图。分布式应用950是通过组合处理模块、 公共模块、配置文件、二进制数据(图像文件等)等的多个集合而构 成的。

模块中的每个是执行格式文件、公共库文件等。在Windows(注 册商标)的情况下,例如,它是EXE文件、DLL文件等。在Linux(注 册商标)的情况下,它是外壳脚本、执行文件、库文件等。在Java(注 册商标)的情况下,它是Jar文件、Class文件等。

在任何情况下,模块中的每个由“元数据”和“执行区域”构成。 元数据是诸如模块名称、签名(方法名称和参数的集合)、域、常数 等关于模块的数据。执行区域是诸如实际操作方法的执行代码。

另外,各模块包括在执行时进行的初始化处理。更具体地讲, Windows的DLL初始化是DllMain(),Linux的库初始化是_init(),Java 的初始化是例如<clinit>、<init>。

当分布式应用950启动时,加载首先在各节点中启动的处理模块 的元数据以分析元数据,在能够实际执行处理的存储器中设置常数和 执行区域。如果其中包括对于另一个模块的依赖关系,则重复进行加 载该模块并且解决该依赖关系以成为可进行模块之间的调用(称为“联 系”)的状态的动作。

一般,各模块具有用于初始化处理的部分。通过在链接之后执行 初始化处理,有关的应用成为可执行状态。也就是说,通过重复“读 出必要文件(加载)→解决各模块的依赖关系(联系)→执行初始化处 理(初始化)”的动作,分布式应用950变得可执行。

然而,各模块的加载时机取决于各设备的实现方式,存在在启动 时加载全部必要模块的情况和在实际涉及模块之前一直不加载模块的 情况。

作为其相关技术文献,存在以下文献。专利文献2中描绘了基于 设定规则选择对象数据并且提高使用它进行处理的效率的分布式处理 系统。专利文献2中描绘了通过使用图形用户界面执行对分布式处理 的管理的技术。

专利文献4中描绘了使用设置有专用于特定处理的子处理器的处 理设备的分布式处理系统。专利文献5中描绘了网络服务在网络上的 部署。专利文献6中描绘了如果在自身设备中没有提供必要信息则从 其他设备获取分布式处理设备中需要的信息以在所有设备之间进行信 息共享的技术。

专利文献7中描绘了关于多层软件的元数据的布局的技术。非专 利文献1中描绘了作为典型分布式处理中间件的Hadoop的概况。

专利文献1:日本未经审查的专利公开2012-063832

专利文献2:日本未经审查的专利公开2011-034137

专利文献3:日本未经审查的专利公开2008-171277

专利文献4:日本未经审查的专利公开2006-155187

专利文献5:日本未经审查的专利公开2004-533687

专利文献6:日本未经审查的专利公开2004-342042

专利文献7:日本未经审查的专利公开2003-505750

非专利文献1:“Let’sTryDistributedProcessing”(尝试进行分 布式处理),TakeshiWakimoto.,2010年9月29日(2013年5月14 日搜索),PasonaTECH,<URL: http://www.pasonatech.co.jp/techlab/rdtrend/rep7.jsp>

在当前的描述中,假设在诸如上述非专利文献1中描绘的Hadoop 的Java环境下运行的分布式操作系统900,使得要注意将处理模块和 公共模块中的每个编写为类(.class)文件。然而,要注意,本发明不 一定限于Java环境。

图21中示出的分布式应用950包括第一步至第三步的处理模块 951至953(step01.class至step03.class)、用于各步的第一公共模块 954至第三公共模块956(shared01.class至shared03.class)、其他配置 文件、二进制数据等。

另外,分布式应用950还包括第二步的从节点方的处理模块952a (step02_slave.class),因为在仅仅由主节点910执行第一步和第三步 的同时,主节点919和从节点920中的每个通过以协作方式执行分布 式处理来执行第二步。上述文件中的每个被置于文件名为诸如 “distributedbatchapplication1.jar”等的一个文件中。

图22是示出通过图20中示出的现有分布式处理系统900执行图 21中示出的分布式应用950的情况的动作的说明图。主节点910在从 用户接收到执行命令时将分布式应用950的文件(distributedbatch application1.jar)分布于各从节点920。在各节点中,各分布式处理中间 件912(922)启动处理,扩展分布式应用950的文件,加载类文件并 且执行它。

然而,如图21中所示,并非分布式应用950的所有步骤都执行分 布式处理。因此,如果仅仅分布式应用950的文件(distributedbatch application1.jar)被分布于各节点,则分布式处理中未使用的文件被另 外传递。这显然是无用传递。尤其是,当包含诸如图像、移动图片、 音频等大尺寸文件时,除非使用此文件,否则是浪费。

另外,当在执行时传递文件时,从节点920出现启动处理延迟的 问题。参照图21中示出的情况,在第二步中执行分布式处理。当在完 成第一步并且开始第二步的时间点,主节点910将分布式应用950的 文件分布于各从节点920时,在分布处理中和扩展“distributedbatch application1.jar”文件并且加载类文件的阶段执行的处理中,产生延迟。

为了不造成延迟,考虑分布分布式应用950的文件并且将在仅仅 主节点910执行第一步的同时在各从节点920方完成类文件的扩展和 加载所采用的方法。然而,这会造成其他问题。

在分布式处理中,从节点920的数量经常会变成数千个、数万个, 或者可以是比这些大的规模。另外,分布式处理中间件912(922)一 般在实际要执行分布处理的时间点检查各节点的资源(计算器资源) 的状况之后将处理分配给设定数量的从节点。也就是说,在该时间点 之前,一直不可得知哪些从节点执行分布式处理。

因此,如果分布式应用950的文件被预先无条件地分布于各从节 点920,则文件甚至可预先分布于实际没有被分配处理的从节点920。 这也是无用传递。也就是说,并不认为为了不造成从节点920的启动 处理延迟而预先分布分布式应用950的文件是适宜的。

另外,执行在许多情况下各节点(主节点910和从节点920中的 每个)以协作方式执行的分布式处理,以对不同的目标数据执行相同 处理,使得在各节点中启动时执行的启动处理常常是公共处理。

无视于此,从节点920中的每个的分布式处理中间件922一般通 过操作步骤中的每个来产生和删除进程。因此,节点中的每个针对操 作步骤中的每个每次都执行相同的启动处理。这也是作为延迟成因的 无用处理。

在上述的专利文献1至7和非专利文献1中没有描绘能够克服上 述问题并且既实现减少在执行时将传递到各从节点的数据量又实现开 始高速进行分布式处理的技术。

因此,本发明的目的是提供能够减少在执行时将传递到各从节点 的数据量并且开始高速进行分布式处理的分布式处理系统、分布式处 理设备、分布式处理方法和分布式处理程序。

发明内容

为了实现以上目的,根据本发明的分布式处理系统是一种以下的 分布式处理系统,所述分布式处理系统包括以协作分布式方式执行分 布式批处理应用的多个相互连接的计算机,其中:所述计算机中的每 个包括模块加载器、元数据管理单元、文件管理单元和执行容器,所 述模块加载器通过加载构成所述分布式批处理应用的各模块来执行初 始化处理,所述元数据管理单元从预先设置的存储模块或者从其他计 算机获取包含各模块之间的所述初始化处理的命令的元数据,所述文 件管理单元读取所述存储模块或其他计算机中的文件/将文件写入所述 存储模块或其他计算机中,所述执行容器执行所述分布式批处理应用; 以及所述文件管理单元包括以下功能:在所述模块加载器用所述元数 据执行所述初始化处理之后,检查在所述存储模块中是否存在包含所 述模块的执行代码的执行区域,并且当不存在所述执行区域时,从其 他计算机加载所述执行代码并且将它作为所述执行区域写入。

为了实现以上目的,根据本发明的分布式处理设备是以下的一种 分布式处理设备,多个所述分布式处理设备相互连接以构成以协作分 布式方式执行分布式批处理应用的分布式处理系统,所述分布式处理 设备包括:模块加载器,其通过加载构成所述分布式批处理应用的各 模块来执行初始化处理;元数据管理单元,其从预先设置的存储模块 或者从其他计算机获取包含各模块之间的所述初始化处理的命令的元 数据;文件管理单元,其读取所述存储模块或其他计算机中的文件/将 文件写入所述存储模块或其他计算机中;以及执行容器,其执行所述 分布式批处理应用;其中,所述文件管理单元包括以下功能:在所述 模块加载器用所述元数据执行所述初始化处理之后,检查在所述存储 模块中是否存在包含所述模块的执行代码的执行区域,并且当不存在 所述执行区域时,从其他计算机加载所述执行代码并且将它作为所述 执行区域写入。

为了实现以上目的,根据本发明的分布式处理方法是一种用于分 布式处理系统的分布式处理方法,所述分布式处理系统包括以协作分 布式方式执行分布式批处理应用的多个相互连接的计算机,其中:元 数据管理单元获取包含构成所述分布式批处理应用的各模块之间的初 始化处理的命令的元数据;模块加载器用所述元数据来执行初始化处 理;在所述初始化处理之后,文件管理单元检查在存储模块中是否存 在包含所述模块的执行代码的执行区域;当不存在包含所述执行代码 的所述执行区域时,所述文件管理单元从其他计算机加载所述执行代 码并且将它作为所述执行区域写入;以及执行容器执行包含所述执行 代码的模块。

为了实现以上目的,根据本发明的分布式处理程序是一种用于分 布式处理系统的分布式处理程序,所述分布式处理系统包括以协作分 布式方式执行分布式批处理应用的多个相互连接的计算机,所述程序 致使所述计算机执行:用于获取包含构成所述分布式批处理应用的各 模块之间的初始化处理的命令的元数据的处理;用于用所述元数据执 行所述初始化处理的处理;用于在所述初始化处理之后检查在存储模 块中是否存在包含所述模块的执行代码的执行区域的处理;用于当所 述存储模块中不存在所述执行区域时从其他计算机加载所述执行代码 并且将它作为所述执行区域写入的处理;以及用于执行包含所述执行 代码的模块的处理。

本发明被构造成如上所述只用元数据执行试探性初始化处理并且 如果没有执行代码则从其他计算机加载执行代码。因此,指定代码没 有被发送到不执行处理的计算机。这样可以提供表现出优异特征使得 能够减小在执行时将传递到各从节点的数据量并且高速开始分布式处 理的分布式处理系统、分布式处理设备、分布式处理方法和分布式处 理程序。

附图说明

图1是示出根据本发明的基本模式的分布式处理系统的结构的说 明图;

图2是示出根据本发明的第一实施例的分布式处理系统的结构的 说明图;

图3是示出图2中示出的主节点和从节点的更详细结构的说明图;

图4是示出作为图2至图3中示出的分布式处理系统的执行目标 的分布式批处理应用的结构的说明图;

图5是示出在图2至图3中示出的分布式处理系统中操作图4中 示出的分布式批处理应用的情况下执行的处理的流程图;

图6是继图5之后的流程图;

图7是示出在完成直至图5中的步骤S106的处理的状态下的元数 据共享单元的说明图;

图8是示出其中通过图4中示出的分布式批处理应用定义“执行 区域加载命令”的第一主模块(step1.class)的说明图;

图9是示出处于直至图5中示出的步骤S113的处理被完成和执行 区域被覆写的状态下的第一主模块(step1.class)的说明图;

图10是示出其中通过图4中示出的分布式批处理应用定义“执行 区域加载命令”的第二主模块(step2.class)的说明图;

图11是示出仅仅通过图5中示出的步骤S115的处理创建的元数 据的从模块(step2_slave.class)的说明图;

图12是示出处于图5中示出的步骤S113的处理被完成并且设置 执行区域的状态下的从模块(step2_slave.class)的说明图;

图13是示出根据本发明的第二实施例的分布式处理系统的结构 的说明图;

图14是示出图13中示出的主节点和从节点的更详细结构的说明 图;

图15是示出在图13至图14中示出的分布式处理系统中操作的分 布式批处理应用的结构的说明图;

图16是示出在图13至图14中示出的分布式处理系统中操作图 15中示出的分布式批处理应用的情况下执行的处理的流程图;

图17是继图16之后的流程图;

图18是示出完成分布式批处理应用320的动作的状态下元数据共 享单元的说明图;

图19是示出在分布式批处理应用320的动作之后完成分布式批处 理应用330的动作的状态下元数据共享单元的说明图;

图20是示出现有分布式处理系统的结构的说明图;

图21是示出图20中示出的分布式处理系统执行的分布式应用的 结构的说明图;以及

图22是示出通过图20中示出的现有分布式处理系统执行图21中 示出的分布式应用时的动作的说明图。

具体实施方式

(基本模式)

下文中,将参照附图图1描述本发明的基本模式的结构。

根据基本模式的分布式处理系统1是其中多个计算机2a、2b—相 互连接并且这些计算机以协作分布式方式执行分布式批处理应用的分 布式处理系统。计算机2中的每个包括:模块加载器3,其加载构成分 布式批处理应用并且执行初始化处理的各模块;元数据管理单元4,其 从预先设置的存储模块或者从其他计算机获取包含各模块之间的初始 化处理的命令的元数据;文件管理单元5,其读取存储模块或其他计算 机中的文件/将文件写入存储模块或其他计算机中;执行容器6,其执 行分布式批处理应用。另外,文件管理单元114设置有以下功能:在 模块加载器用元数据执行初始化处理之后,检查在存储模块中是否存 在包含模块的执行代码的执行区域,并且如果发现不存在执行代码, 则从其他计算机加载该执行代码并且将它作为执行区域进行写。

下面,将把各单元和各设备的更详细结构作为第一实施例进行描 述。

(第一实施例)

随后,将参照附图图2至图3描述本发明的第一实施例的结构。

根据实施例的分布式处理系统100是其中多个计算机(主节点10 和从节点20)相互连接并且这些计算机以分布式协作方式执行分布式 批处理应用120的分布式处理系统。计算机2中的每个包括:模块加 载器112,其加载构成分布式批处理应用并且执行初始化处理的各模 块;元数据管理单元113,其从预先设置的存储模块或者从其他计算机 获取包含各模块之间的初始化处理的命令的元数据;文件管理单元 114,其读取存储模块或其他计算机中的文件/将文件写入存储模块或其 他计算机中;执行容器111,其执行分布式批处理应用。另外,文件管 理单元114设置有以下功能:在模块加载器用元数据执行初始化处理 之后,检查在存储模块中是否存在包含模块的执行代码的执行区域, 并且如果发现不存在执行代码,则从其他计算机加载该执行代码并且 将它作为执行区域进行写。

另外,文件管理单元114具有创建仅仅元数据的模块作为文件和 通过元数据管理单元113与其他计算机共享它的功能。

另外,多个计算机中的一个是管理分布式批处理应用的分布式执 行的主节点10,除了主节点外的计算机是从节点20。这里要注意,主 节点10的文件管理单元114具有创建仅仅元数据的模块作为文件并且 将它发送到从节点20的功能。

用上述结构,分布式处理系统变得能够减少在执行时将传递到各 从节点的数据量并且开始高速进行分布式处理。

下文中,将对此进行更详细的描述。

图2是示出根据本发明的第一实施例的分布式处理系统100的结 构的说明图。分布式处理系统100是通过借助网络30将多个计算机设 备相互连接而构成的,没有设置关于计算机数量的特别限制。在图2 中,为了以简单方式表现本发明的构思,只示出三个节点,即,主节 点10(分布式处理设备)和从节点20a、20b(分布式处理设备)。一 般来讲,从节点20a和20b被称为从节点20。

图3是示出图2中示出的主节点10和从节点20的更详细结构的 说明图。虽然图3示出关于主节点10的结构,但就硬件而言,从节点 20也具有相同结构。

主节点10包括:处理器11,其是用于执行计算机程序的主单元; 存储模块12,其存储程序和数据;通信模块13,其通过连接到网络30 执行与其他设备的数据通信。主节点10还设置有除了这些外的许多硬 件元件。然而,本文中将只讨论为了描述本发明而需要说明的元件。 另外,从节点20也包括与主节点10的处理器、存储模块和通信模块 相同的处理器21、存储模块22和通信模块23。

在处理器11中,OS101(操作系统)首先进行操作,并且在此情 况下,分布式处理中间件110此后进行操作。分布式处理中间件110 包括诸如执行容器111、模块加载器112、元数据管理单元113和文件 管理单元114的功能单元中的每个,并且使用存储模块22用作元数据 共享单元115和文件夹116。另外,在分布式处理中间件110的动作的 情况下,分布式批处理应用120进行操作。

在从节点20中,与主节点10的分布式处理中间件相同的分布式 处理中间件110进行操作。然而,在从节点20方,只示出元数据共享 单元115、文件夹116和存储模块22。然而,要注意,可通过由从节 点20方执行与主节点10相同的动作,进行随后将描述的由其他节点 通过元数据管理单元113和文件管理单元114获取元数据并且读取/写 入文件。另外,也可在从节点20a和20b之间相互进行相同动作。

执行容器111执行分布式批处理应用120。执行容器111还可使 用模块加载器112加载分布式批处理应用120的模块并且读取/写入文 件。

模块加载器112加载模块、配置文件等,分析元数据,并且将它 们置于文件夹116上,从而能执行。这对应于Java语言中的类加载器 (ClassLoader)。“ClassLoader”在这里被扩展,使得元数据被加载 到文件夹116的时机和初始化处理或重新初始化的重新安排也可自动 地进行。

元数据管理单元113对模块的元数据执行管理。元数据管理单元 113从元数据共享单元115或文件管理单元114获取模块的元数据并且 将它提供到模块加载器112。另外,元数据管理单元还可从其他节点的 元数据共享单元115获取元数据。

元数据共享单元115提供保存模块的被加载元数据并且共享它的 功能。另外,元数据共享单元115提供也允许由其他节点参考被保存 元数据的功能。

文件管理单元114管理自身节点或其他节点的文件夹116上的文 件并且执行读取/写入。另外,还提供以下功能:用实际模块文件创建 仅仅元数据的文件并且只读取/写入其他节点的文件的差异。文件夹116 是由文件管理单元114管理的存储器区域。

图4是示出作为图2至图3中示出的分布式处理系统100的执行 目标的分布式批处理应用120的结构的说明图。分布式批处理应用120 由多个模块、配置文件、二进制文件等构成。各模块由元数据和执行 区域构成。元数据是模块、初始化命令等中的每个之间的依赖关系存 储在其中的区域。执行区域是实际要执行的代码存储在其中的区域。

分布式批处理应用120由第一步121至第三步123构成。在图4 中,示出分布式批处理应用120和第一步121和第二步122的元数据 以及执行区域。

在各步骤之后,只由主节点10执行第一步121和第三步123。然 而,通过各从节点20以协作方式进行分布式处理,进行第二步122。 下文中,主节点10的执行容器111被称为“主容器”并且从节点20 的执行容器111被称为“从容器”。

另外,第一步121中主节点10执行的模块被称为第一主模块121a (step1.class),第二步122中主节点10执行的模块被称为第二主模块 122a(step2.class),第二步122中从节点20执行的模块被称为从模块 122b(step2_slave.class)。

此外,需要用共享模块122c(shared2.class)执行第二主模块122a 和从模块122b。

执行容器111(主容器)扩展提供到文件夹116上的主节点10的 分布式批处理应用120,并且模块文件和配置文件中的每个被保存在扩 展的文件夹上。

另外,执行容器111(主容器)加载模块文件的元数据(随后将 描述)并且解决(联系)依赖关系来执行初始化以启动分布式批处理 应用120。元数据管理单元113的元数据共享单元115借助模块加载器 112将加载在其中的元数据保存在文件夹116中,同时,将它提供到从 节点20的元数据共享单元115,以保存它。

首先,仅由主节点10的执行容器111(主容器)执行第一步121。 在下面的第二步122中,执行容器111(主容器)向从节点20提供执 行第二步122的从执行的命令。从节点20启动执行容器111(从容器), 以准备启动分布式批处理应用120。

从节点20从主节点10的元数据共享单元115获取执行第二步122 所需的元数据。然后,从节点创建仅仅元数据的类文件并且将它存储 到文件夹116。从节点20的执行容器111(从容器)调用用于执行从 模块122b(step2_slave.class)的处理的方法。然而,要注意在要调用 的方法中没有实际执行代码,该方法只提供用于加载执行区域的命令。 因此,执行该命令。

也就是说,从节点20的执行容器111(从容器)从主节点10的 元数据共享单元115获取从模块122b(step2_slave.class)的执行区域 的数据,根据其中写入的内容将文件夹116的存储区域的数据重新初 始化,并且将从模块122b(step2_slave.class)写入其中。也就是说, 在从节点20中,对元数据和执行区域二者执行重新初始化。由此,获 取可执行正常应用动作的状态。因此,执行从模块122b (step2_slave.class)。在从节点20a和20b中同时执行上述的处理。

在从节点20a和20b中,可使用已经由主节点10执行的数据进行 元数据的获取和加载。由此,变得可以高速执行启动。另外,在调用 实际要执行的代码之后,获取执行所需的代码和数据,使得实际要传 递的数据量可减少。

图5至图6是示出在图2至图3中示出的分布式处理系统100中 操作图4中示出的分布式批处理应用120的情况下执行的处理的流程 图。图5至图6因为纸面的空白而分开在两页上示出。首先,执行容 器111(主容器)加载distributedbatchapplication1.jar文件,并且将其 内部的模块、配置文件等中的每个保存于文件夹116(步骤S101)。

随后,执行容器111(主容器)加载分布式批处理应用120的配 置文件120a并且启动分布式批处理应用120(步骤S102)。本文中, 如图1中所示,执行容器111(主容器)从第一步121起依次进行执行 处理。

为了执行第一步121,执行容器111(主容器)向模块加载器112 提供加载第一主模块121a(step1.class)从而成为可执行状态的命令, 并且响应于此,模块加载器112加载第一主模块121a(step1.class)的 元数据(步骤S103)。

此时,模块加载器112向元数据管理单元113进行关于第一主模 块121a(step1.class)的存在的查询。响应于此,元数据管理单元113 检查主节点10的元数据共享单元115中是否存在元数据。此时,在元 数据共享单元115中不存在元数据,使得元数据管理单元113将指示 “否”的响应返回到模块加载器112(步骤S104)。

模块加载器112在接收到命令时将它提供到文件管理单元114以 从文件夹116上的文件加载第一主模块121a(step1.class)的元数据。 文件管理单元114在文件夹116中搜索第一主模块121a(step1.class), 加载元数据,并且将它提供到模块加载器112(步骤S105)。

随后,模块加载器112在存储器上扩展第一主模块121a (step1.class)的元数据并且同时将它告知元数据管理单元113。元数 据管理单元113将元数据写入元数据共享单元115(步骤S106)。图7 是示出在完成直至图5中的步骤S106的处理的状态下的元数据共享单 元115的说明图。

随后,模块加载器112加载第一主模块121a(step1.class)的元数 据并且当在元数据的“依赖关系”的部分中定义所需的共享模块和从 模块时,根据定义加载必要文件或者向其他设备提供命令(步骤S107)。 在该实施例的情况下,在第一主模块121a中没有特别定义依赖关系。 因此,这里的执行没有特别之处,被推进到“解决依赖关系”方。

然后,模块加载器112执行试探性初始化处理(步骤S108)。实 际上,不执行第一主模块121a(step1.class)的正常初始化处理,预先 定义第一主模块121a(step1.class)以调用“<clinit>”并且进行所有其 他方法调用“executionregionloadingcommand”。图8是示出其中在图4 中示出的分布式批处理应用120中定义其“executionregionloading command”的第一主模块121a(step1.class)的说明图。

这里的“executionregionloadingcommand”是通过加载在模块加载 器112中指定处于能够执行应用的状态的类的执行区域来执行重新初 始化的方法。以这种方式执行试探性初始化,并且由此认为正常初始 化处理结束。第一步121不包括分布式处理,使得在这里不执行随后 将描述的步骤S115。

由此,执行容器111(主容器)开始执行第一主模块121a (step1.class)。如图8中所示,在该实施例中,用“executionregion loadingcommand”取代实际执行代码。因此,执行容器111(主容器) 向模块加载器112提供加载执行区域的命令,模块加载器112向文件 管理单元114提供加载该类的执行区域的命令(步骤S109)。

当类文件的执行区域处于自身节点的文件夹116中时,文件管理 单元114在接收到命令时从该类文件加载执行区域(步骤S110至 S111)。如果不存在类文件或者在文件夹116中没有执行区域(仅仅 元数据的类文件),则加载其他节点中的类文件的执行区域(步骤S110 至S112)。

在这个实施例中,在主节点10的文件夹116中存在扩展的第一主 模块121a(step1.class)。因此,文件管理单元114加载执行区域并且 将它告知模块加载器112。

模块加载器112将执行区域设置于主存储器,覆写元数据,并且 执行重新初始化,以成为可执行方法的状态(步骤S113)。图9是示 出处于直至图5中示出的步骤S113的处理被完成时执行区域被覆写的 状态下的第一主模块121a(step1.class)的说明图。然后,执行容器111 (主容器)在该状态下执行第一主模块121a(step1.class)(步骤S114), 并且终止关于第一步121的处理。

随后,执行容器111(主容器)开始执行关于第二步122的处理。 也就是说,针对第二主模块121a(step2.class)执行与步骤S101至S106 的处理相同的处理。

随后,模块加载器112用第二主模块121a(step2.class)的元数据 执行解决依赖关系的处理(步骤S107)。第二主模块121a(step2.class) 的元数据的“依赖关系”的部分表示取决于从模块122b (step2_slave.class)和共享模块122c(shared2.class),使得尝试从元 数据共享单元115读出它们。然而,它们在其中并不存在,使得文件 管理单元114读出它们并且将它们写入元数据共享单元115。

由此,解决依赖关系。因此,处理转到步骤S108,以如第一步121 的情况下一样执行试探性初始化,脱离用“executionregionloading command”取代所有方法的状态(步骤S108至S114)。图10是示出 在图4中示出的分布式批处理应用120中定义其“executionregion loadingcommand”的第二主模块(step2.class)的说明图。在这种情况 下,从模块122b(step2_slave.class)和共享模块122c(shared2.class) 像它们在主节点10方一样保留。

在第二步122中,主节点10和从节点20以协作方式执行分布式 并行处理。因此,主节点10的执行容器111(主容器)创建仅仅元数 据的从模块122b(step2_slave.class)(执行区域只是“executionregion loadingcommand”)并且将它发送到从节点20(步骤S115)。图11 是示出仅仅通过图5中示出的步骤S115的处理创建的元数据的从模块 122b(step2_slave.class)的说明图。要注意,仅仅主节点10创建的元 数据的从模块122b可或不可保存在主节点10方的存储模块12中。

从节点20的执行容器(从容器)在接收到从模块122b (step2_slave.class)的执行时开始执行并且执行与步骤S101至S103 的步骤的处理相同的处理。在从模块122b(step2_slave.class)的元数 据的“依赖关系”的部分中,需要共享模块122c(sgared2.class),使 得元数据管理单元113检查在主节点10的元数据共享单元115中是否 存在这些模块(步骤S101至S104)。

从节点20的模块加载器112借助元数据管理单元113获取主节点 10的第二主模块121a(step2.class)、从模块122b(step2_slave.class) 和共享模块122c(shared2.class)的元数据。原来,必须执行用于解决 依赖关系的处理。然而,这已经被主节点10的处理解决。因此,从主 节点的元数据共享单元115获取这些模块(步骤S107),由此“dependent relationissolved”。

从节点20的模块加载器112在文件夹116上扩展从主节点10的 元数据共享单元115获取的元数据,并且如主节点10的情况下一样执 行尝试性初始化(步骤S108)。

从节点20的执行容器111(从容器)调用从模块122b (step2_slave.class)。然而,在其元数据中包含“executionregionloading command”,使得用于加载执行区域的指令被提供到从节点20的模块 加载器112(步骤S109)。

从节点20的文件管理单元114在接收到该命令时从主节点10的 文件夹116读出文件类的执行区域并且将它写入自身文件夹116,因为 在自身文件夹116中没有从模块122b(step2_slave.class)(步骤S113、 S116)。

从节点20的模块加载器112将执行区域设置于主存储器,覆写元 数据,并且执行重新初始化,以成为可执行方法的状态(步骤S113)。 图12是示出处于图5中示出的步骤S113的处理被完成时设置执行区 域的状态下的从模块122b(step2_slave.class)的说明图。然后,执行 容器111(从容器)在该状态下执行从模块122b(step2_slave.class)(步 骤S114),并且终止关于第二步122的处理。

如第一步121的情况下一样,通过主节点10执行关于第三步S123 的处理。通过以上步骤,完成关于执行分布式批处理应用120的处理。

(第一实施例的整体动作和效果)

接下来,将描述上述实施例的整体动作。

在其中多个计算机相互互连并且通过这些计算机以协作分布式方 式执行分布式批处理应用的分布式处理系统中展现根据实施例的分布 式处理方法。元数据管理单元从构成分布式批处理应用的模块中的每 个中获取包含初始化处理的命令的元数据(图5:步骤S101至S107)。 模块加载器用元数据执行初始化处理(图5:步骤S108)。在初始化 处理之后,文件管理单元检查在存储模块中是否存在包含模块的执行 代码的执行区域(图6:步骤S109至S110)。当在存储模块中不存在 包含执行代码的执行区域时,文件管理单元从其他计算机加载执行代 码并且将它作为执行区域写入(图6:步骤S110至S112、S116),执 行容器执行包含执行代码的模块(图6:步骤S113至S114)。

然后,在初始化处理之后,文件管理单元创建仅仅元数据的模块 作为文件,并且通过元数据管理单元与其他计算机共享它(图5:步骤 S115)。这里要注意,这多个计算机中的一个是管理分布式批处理应 用的分布式执行的主节点,除了主节点外的计算机是从节点;通过在 初始化处理之后创建仅仅元数据的模块作为文件并且将它发送到从节 点的主节点的文件管理单元进行处理。

这里要注意,动作步骤中的每个可被置于供计算机执行的程序中, 以使设置于直接执行各步骤的主节点10和从节点20中的每个的处理 器11和12执行这些步骤。程序可被记录在诸如DVD、CD、闪存存储 器等的非暂态记录介质中。在该情况下,从记录介质读出程序并且由 计算机执行。用这些动作,实施例可提供以下效果。

在实施例中,主节点10首先将仅仅元数据的模块文件发送到从节 点20,使得此时发送的数据量可由此减少。另外,当实际在从节点20 中进行执行处理时,从主节点10获取执行代码。因此,执行代码没有 被发送到实际不执行处理的从节点,使得大量发送数据可减少。

另外,分布式处理中从节点使用的元数据原则上是相同的,只有 处理目标数据等是不同的。因此,对于大量从节点,可共用同一元数 据,使得不必每次都执行相同的初始化处理。因此,更高速地执行初 始化。另外,可存在在分布式处理中针对不同数据的相同处理被分配 到同一从节点的情况。然而,即使在这种情况下,也可以通过共享相 同元数据来加速进行初始化的效果。

作为实施例的扩展形式,首先,图5中示出的步骤S104至S105 的处理可被限定成同时将元数据加载到元数据共享单元115和文件管 理单元114并且使用首先读出的元数据。由此,可预期到加速读取的 效果。另外,即使任一个导致读取错误,也可进行从其他单元进行读 取。因此,可预期实现故障耐受特性的效果。

类似地,可同时读出元数据和执行区域。另外,可从自身节点读 出元数据并且可从其他节点读出执行区域。

同时,用Java语言定义类文件中的固定字符串一定包含在元数据 中的规则。然而,在试探性初始化时不使用固定字符串数据。因此, 不包含固定字符串的元数据可从主分布到从,可通过获取执行区域的 执行代码,同时获取固定字符串数据。由此,可预期发送数据量进一 步减少。

另外,在图5中示出的步骤S104至S108的处理中,从主节点10 加载元数据并且仅仅元数据的文件被写入本地文件夹。然而,还可同 时将该文件写入本地元数据共享单元115。例如,在从节点20中出现 执行错误并且重新启动的情况下,可在同一节点从元数据共享单元115 重新读取元数据。因此,可高速执行加载和重新初始化处理。

(第二示例性实施例)

除了第一实施例中示出的结构之外,根据本发明的第二示例性实 施例的分布式处理系统200被设计成包括可公共地由各计算机共享的 分布式共享存储器230,元数据管理单元313被设计成包括使分布式共 享存储器230存储元数据参考的公共文件的功能。

用这种结构,可获取与第一实施例的效果相同的效果。另外,变 得可以通过在不同处理中使用相同元数据来加速处理。

下文中,将对此进行更详细的描述。

图13是示出根据本发明的第二实施例的分布式处理系统200的说 明图。分布式处理系统200是通过如上述第一实施例的情况中一样将 多个计算机设备相互连接而构成的。然而,这里示出多个主节点控制 的不同处理在同一分布式处理系统中并行执行的情况。

因此,图13只示出诸如主节点210a、210b(一般来讲,被称作主 节点210)和从节点220的三个节点。另外,可被访问的分布式共享存 储器230参照来自任一个主节点210的内容并且从节点220同时连接 到各设备。无须说,没有设置关于主节点210和从节点220的数量的 特别限制。另外,虽然分布式共享存储器230可实际上由与诸如NAS (网络附接存储)的网络连接的外部存储设备等实现,但没有设置关 于特定设备模式的特别限制。

图14是示出图13中示出的主节点210和从节点220的更详细结 构的说明图。主节点210和从节点220就硬件而言具有与第一实施例 的主节点10和从节点20相同的结构。因此,向相同的元件应用相同 的名称和相同的参考标号,特别地省略对其的详细说明。

在处理器11(21)中,OS101(操作系统)首先进行操作,并且 在此情况下,与第一实施例的分布式处理中间件110不同的分布式处 理中间件310此后进行操作。分布式处理中间件310包括诸如执行容 器311、模块加载器312、元数据管理单元313和文件管理单元314的 功能单元中的每个。另外,上述分布式共享存储器230用作元数据共 享单元315,存储模块12(22)用作文件夹316。

分布式处理中间件310的功能单元中的每个的动作原则上与第一 实施例的分布式处理中间件110的功能单元中的每个的动作相同。然 而,元数据共享单元315在分布式共享存储器230上,使得其内容可 被操作不同分布式批处理应用的节点中的每个公共地参考。在分布式 处理中间件310进行动作的情况下,分布式批处理应用320和330进 行操作。

图15是示出在图13至图14中示出的分布式处理系统200中操作 的分布式批处理应用320和330的结构的说明图。像第一实施例中描 述的分布式批处理应用120的情况中一样,分布式批处理应用320是 由第一步骤321至第三步骤323的动作步骤构成的。类似地,分布式 批处理应用330也是由第一步骤331至第三步骤323的动作步骤构成 的。

这里要注意,分布式批处理应用320的第一步321中主节点210a 执行的模块被称为第一主模块321a(step11.class),第二步322中主 节点210a执行的模块被称为第二主模块322a(step12.class),第二步 322中从节点320执行的模块被称为从模块322b(step12_slave.class)。 不必对第三步323之后的步骤进行特别说明,使得这里省略对其的描 绘。

类似地,分布式批处理应用330的第一步331中主节点210b执行 的模块被称为第一主模块331a(step21.class),第二步332中主节点 210b执行的模块被称为第二主模块332a(step22.class)。

另外,第二步332中从节点320执行的从模块332b (step22_slave.class)使用与分布式批处理应用320的共享模块相同的 共享模块322c(shared02.class)。不必对从模块322b(step12_slave.class) 和第三步333之后的步骤进行特别说明,使得这里省略对其的描绘。

当在分布式处理系统200中操作分布式批处理应用320和330时, 直至第一步321和331的动作是与第一实施例的动作相同的动作。也 就是说,当主节点210a启动分布式批处理应用320时,共享模块322c (shared02.class)的元数据被存储在元数据共享单元315中。随后,当 主节点210b启动分布式批处理应用330时,因为共享模块322c (shared02.class)的元数据已经被存储,所以共享模块322c可被公用。

图16和图17是示出在图13至图14中示出的分布式处理系统200 中操作图15中示出的分布式批处理应用320和330时的处理的流程图。 图16至图17因为纸面的空白而分开在两页上示出。图16至图17的 流程图中示出的各动作与图5至图6中示出的第一实施例的各动作基 本上相同,使得向相同的动作应用相同的参考标号。唯一的差异在于, 被写入元数据的元数据共享单元315在分布式共享存储器230中(步 骤S206)。

图18是示出完成分布式批处理应用320的动作的状态下元数据共 享单元315的说明图。图19是示出在分布式批处理应用320的动作之 后完成分布式批处理应用330的动作的状态下元数据共享单元315的 说明图。

如图18中所示,在这个阶段的元数据共享单元315中,存储构成 分布式批处理应用320的第一主模块312a(step11.class)、第二主模 块322a(step12.class)、从模块322b(step12_slave.class)和共享模块 322c(shared02.class)(省略对第三步之后的步骤的描绘)。

当此后操作分布式批处理应用330时,图18中示出的阶段中的共 享模块322c(shared02.class)可被公用,而构成分布式批处理应用330 的第一主模块331a(step21.class)、第二主模块322a(step22.class)、 从模块322b(step22_slave.class)被存储在元数据共享单元315中。因 为不必向其他节点进行关于模块的存在的查询,所以可高速进行这些 动作。

如上所述,用该实施例,可以通过减少执行不同工作的多个分布 式批处理应用之间的元数据复制来共享元数据。因此,可更有效地进 行应用的部署和初始化。另外,变得不必向其他节点进行关于远数据 的存在的查询,使得不必弄清哪个元数据处于哪个节点。因此,即使 存在正产生故障的节点,在获取元数据时也不出现因为此节点造成的 失效。

作为实施例的扩展形式,主节点和从节点都可被构造成将自身容 器所读取的元数据注册到元数据共享单元115。例如,如果有数据不是 被主节点读出而是被从节点读出,则对于其他分布式批处理应用,元 数据有可能被主节点和其他从节点使用。

虽然以上参照附图中示出的特定实施例描述了本发明,但本发明 不仅限于上述实施例。可采用任何其他已知结构,只要可用该结构实 现本发明的效果即可。

上述实施例的新技术内容可被如下总结。虽然实施例的部分或整 个部分可被如下总结为新技术,但本发明不一定只限于下文。

(补充注释1)

一种分布式处理系统,所述分布式处理系统包括以协作分布式方 式执行分布式批处理应用的多个相互连接的计算机,其中:

所述计算机中的每个包括模块加载器、元数据管理单元、文件管 理单元和执行容器,所述模块加载器通过加载构成所述分布式批处理 应用的各模块来执行初始化处理,所述元数据管理单元从预先设置的 存储模块或者从其他计算机获取包含各模块之间的初始化处理的命令 的元数据,所述文件管理单元读取所述存储模块或其他计算机中的文 件/将文件写入所述存储模块或其他计算机中,所述执行容器执行所述 分布式批处理应用;以及

所述文件管理单元包括以下功能:在所述模块加载器用所述元数 据执行所述初始化处理之后,检查在所述存储模块中是否存在包含所 述模块的执行代码的执行区域,并且当不存在所述执行区域时,从其 他计算机加载所述执行代码并且将它作为所述执行区域写入。

(补充注释2)

根据补充注释1中描绘的分布式处理系统,其中,

所述文件管理单元包括创建仅仅所述元数据的模块作为文件并且 通过所述元数据管理单元与其他计算机共享所述模块的功能。

(补充注释3)

根据补充注释1中描绘的分布式处理系统,其中,

所述多个计算机中的一个是管理所述分布式批处理应用的分布式 执行的主节点,并且除了所述主节点外的计算机是从节点;以及

所述主节点的所述文件管理单元包括创建仅仅所述元数据的模块 作为文件并且将所述模块发送到所述从节点的功能。

(补充注释4)

根据补充注释1中描绘的分布式处理系统,所述分布式处理系统 包括可被所述计算机中的每个公共参考的分布式共享存储器,其中,

所述元数据管理单元包括将被所述元数据参考的公共文件存储到 所述分布式共享存储器的功能。

(补充注释5)

一种分布式处理设备,多个所述分布式处理设备相互连接以构成 以协作分布式方式执行分布式批处理应用的分布式处理系统,并且所 述分布式处理设备包括:

模块加载器,其通过加载构成所述分布式批处理应用的各模块来 执行初始化处理;

元数据管理单元,其从预先设置的存储模块或者从其他计算机获 取包含各模块之间的初始化处理的命令的元数据;

文件管理单元,其读取所述存储模块或其他计算机中的文件/将文 件写入所述存储模块或其他计算机中;

执行容器,其执行所述分布式批处理应用;其中,

所述文件管理单元包括以下功能:在所述模块加载器用所述元数 据执行所述初始化处理之后,检查在所述存储模块中是否存在包含所 述模块的执行代码的执行区域,并且当不存在所述执行区域时,从其 他计算机加载所述执行代码并且将它作为所述执行区域写入。

(补充注释6)

根据补充注释5中描绘的分布式处理系统,其中,

所述文件管理单元包括创建仅仅所述元数据的模块作为文件并且 通过所述元数据管理单元与其他计算机共享所述模块的功能。

(补充注释7)

根据补充注释5中描绘的分布式处理系统,其中,

所述元数据管理单元包括将被所述元数据参考的公共文件存储到 可被所述计算机中的每个公共参考的分布式共享存储器中的功能。

(补充注释8)

一种用于分布式处理系统的分布式处理方法,所述分布式处理系 统包括以协作分布式方式执行分布式批处理应用的多个相互连接的计 算机,其中:

元数据管理单元,其获取包含构成所述分布式批处理应用的各模 块之间的初始化处理的命令的元数据;

模块加载器,其用所述元数据来执行初始化处理;

在所述初始化处理之后,文件管理单元检查在存储模块中是否存 在包含所述模块的执行代码的执行区域;

当所述存储模块中不存在包含所述执行代码的所述执行区域时, 所述文件管理单元从其他计算机加载所述执行代码并且将它作为所述 执行区域写入;以及

执行容器,其执行包含所述执行代码的模块。

(补充注释9)

根据补充注释8中描绘的分布式处理方法,其中,

在所述初始化处理之后,所述文件管理单元创建仅仅所述元数据 的模块作为文件,并且通过所述元数据管理单元与其他计算机共享所 述模块。

(补充注释10)

根据补充注释9中描绘的分布式处理方法,其中:

所述多个计算机中的一个是管理所述分布式批处理应用的分布式 执行的主节点,并且除了所述主节点外的计算机是从节点;以及

在所述初始化处理之后,所述主节点的所述文件管理单元创建仅 仅所述元数据的模块作为文件并且将所述模块发送到所述从节点。

(补充注释11)

根据补充注释8中描绘的分布式处理方法,所述分布式处理方法 包括可被所述计算机中的每个公共参考的分布式共享存储器,其中,

所述元数据管理单元将被所述元数据参考的公共文件存储到所述 分布式共享存储器。

(补充注释12)

一种用于分布式处理系统的分布式处理程序,所述分布式处理系 统包括以协作分布式方式执行分布式批处理应用的多个相互连接的计 算机,所述程序致使所述计算机执行:

用于获取包含构成所述分布式批处理应用的各模块之间的初始化 处理的命令的元数据的处理;

用于用所述元数据执行所述初始化处理的处理;

用于在所述初始化处理之后检查在存储模块中是否存在包含所述 模块的执行代码的执行区域的处理;

用于当所述存储模块中不存在包含所述执行代码的所述执行区域 时从其他计算机加载所述执行代码并且将它作为所述执行区域写入的 处理;以及

用于执行包含所述执行代码的模块的处理。

(补充注释13)

根据补充注释12中描绘的分布式处理程序,所述分布式处理程序 致使计算机进一步执行用于在所述初始化处理之后创建仅仅所述元数 据的模块作为文件并且与其他计算机共享所述模块的处理。

工业可应用性

本申请要求基于2013年5月31日提交的日本专利申请 No.2013-115527的优先权权利并且本申请的公开的全部内容特此以引 用方式并入。

本发明被广泛应用于执行分布式处理的计算机网络。实际上,本 发明可提供随着分布处理的规模变大而减小通信量并且加速处理的优 异效果。

参考标号

1、100、200分布式处理系统

2、2a、2b计算机

3、112模块加载器

4、113元数据管理单元

5、114文件管理单元

6、111执行容器

10、210、210a、210b主节点

11、21处理器

12、22存储模块

13、23通信模块

20、20a、20b、220从节点

30网络

101OS

110、310分布式处理中间件

111、311执行容器

112、312模块加载器

113、313元数据管理单元

114、314文件管理单元

115、315元数据共享单元

116、316文件夹

120、320、330分布式批处理应用

120a配置文件

121、321第一步

121a、321a第一主模块

122、322第二步

122a、322a第二主模块

122b、322b从模块

122c、322c共享模块

123、323第三步

123a、323a第三主模块

230分布式共享存储器

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号