一种在指定分布式系统中接入指定计算模型的方法和装置的制造方法

文档序号:10511918阅读:422来源:国知局
一种在指定分布式系统中接入指定计算模型的方法和装置的制造方法
【专利摘要】本发明公开了一种在指定分布式系统中接入指定计算模型的方法和装置,指定分布式系统为第一类分布式系统,指定计算模型支持第二类分布式系统但不支持第一类分布式系统;该方法包括:获取第一类分布式系统和第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系;拦截指定计算模型发送的关于第二类分布式系统的接口的调用请求;将关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求,发送至第一类分布式系统;接收返回结果并发送至指定计算模型进行计算处理。该方案不更改原分布式架构保证了数据的稳定性和安全性,且在原分布式架构中接入的指定计算模型满足了相应的处理需求。
【专利说明】
一种在指定分布式系统中接入指定计算模型的方法和装置
技术领域
[0001]本发明涉及数据挖掘处理技术领域,具体涉及一种在指定分布式系统中接入指定计算模型的方法和装置。
【背景技术】
[0002]随着大数据时代的来临,急速增长的数据量、繁杂多样的数据种类,变化飞快的数据形式,需要更加快速有效的海量数据处理方式,分布式系统应运而生,为了适应于不断发展的需求,各种分布式系统一直处于更新演变的过程中。很多情况下,不同版本、类别的分布式系统不相兼容,以第一类分布式系统和第二类分布式系统为例,在面对支持第二类分布式系统但不支持第一类分布式系统的指定计算模型时,如果第一类分布式系统想要使用指定计算模型,就必须将第一类分布式系统变更为第二类分布式系统,其中涉及到对第一类分布式系统的架构的改变,在改变过程中一旦由于失误而导致数据丢失,将给用户带来不可估量的损失。

【发明内容】

[0003]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的在指定分布式系统中接入指定计算模型的方法和装置。
[0004]依据本发明的一个方面,提供了一种在指定分布式系统中接入指定计算模型的方法,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型;
[0005]该方法包括:
[0006]获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系;
[0007]拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;
[0008]根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求,并发送至第一类分布式系统;
[0009]接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。
[0010]可选地,所述关于第二类分布式系统的接口的调用请求中包括:接口名称,接口参数;
[0011]所述根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求包括:
[0012]根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,获取所述接口名称对应的第一类分布式系统的接口名称;
[0013]根据所获取的第一类分布式系统的接口名称,将所述参数信息的格式转换成适配于相应的第一类分布式系统的接口的格式;
[0014]获得关于第一类分布式系统的相应接口的调用请求,该调用请求中包括:所获取的第一类分布式系统的接口名称,格式转换后的参数信息。
[0015]可选地,在未获取到所述接口名称对应的第一类分布式系统的接口名称时,该方法进一步包括:
[0016]根据所述关于第二类分布式系统的接口的调用请求中的接口名称和参数信息,创建一个动态代理对象;
[0017]根据所述接口名称,利用所述动态代理对象从第一类分布式系统的接口列表中找到具有相应调用效果的第一类分布式系统的接口 ;
[0018]将关于该第一类分布式系统的接口的调用请求作为所述关于第一类分布式系统的相应接口的调用请求。
[0019]可选地,所述获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系包括:
[0020]通过调用第一Context类存储第一类分布式系统的接口列表的信息;
[0021 ]通过调用第二Context类存储第二类分布式系统的接口列表的信息;
[0022]利用反射机制实现从第二Context类到第一 Context类的反射,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。
[0023]可选地,所述获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表包括:
[0024]存储第一类分布式系统的接口列表的信息对应的第一Jar包,存储第二类分布式系统的接口列表的信息对应的第二Jar包;其中,所述第一Jar包和所述第二Jar包分别通过相应的Class loader类加载器进行加载。
[0025]可选地,所述拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求包括:根据所述第二 Jar包拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;
[0026]所述将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求包括:通过相应的Class loader类加载器加载所述第一 Jar包,获得关于第一类分布式系统的相应接口的调用请求。
[0027]可选地,所述关于第二类分布式系统的接口的调用请求包括:关于第二类分布式系统的读数据的接口的调用请求,和/或,关于第二类分布式系统的写数据的接口的调用请求;
[0028]所述第二类分布式系统的读数据的接口中包括:该第二类分布式系统的读数据的接口对应的读数据的方法;
[0029]所述第二类分布式系统的写数据的接口中包括:该第二类分布式系统的写数据的接口对应的写数据的方法。
[0030]可选地,所述关于第一类分布式系统的相应接口的调用请求包括:关于第一类分布式系统的读数据的接口的调用请求,和/或,关于第一类分布式系统的写数据的接口的调用请求;
[0031]所述第一类分布式系统的读数据的接口中包括:该第一类分布式系统的读数据的接口对应的读数据的方法;
[0032]所述第一类分布式系统的写数据的接口中包括:该第一类分布式系统的写数据的接口对应的写数据的方法。
[0033]可选地,所述第一类分布式系统为第一版本的Hadoop系统,所述第二类分布式系统为第二版本的Hadoop系统,所述指定计算模型包括如下一种或多种:Yarn计算模型、Spark计算模型、Sqoop计算模型。
[0034]依据本发明的另一个方面,提供了一种在指定分布式系统中接入指定计算模型的装置,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型;
[0035]该装置包括:
[0036]接口信息预置单元,适于获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系;
[0037]调用请求转换单元,适于拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求;
[0038]调用处理单元,适于将转换后的关于第一类分布式系统的相应接口的调用请求发送至第一类分布式系统;接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。
[0039]可选地,所述关于第二类分布式系统的接口的调用请求中包括:接口名称,接口参数;
[0040]所述调用请求转换单元,适于根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,获取所述接口名称对应的第一类分布式系统的接口名称;根据所获取的第一类分布式系统的接口名称,将所述参数信息的格式转换成适配于相应的第一类分布式系统的接口的格式;获得关于第一类分布式系统的相应接口的调用请求,该调用请求中包括:所获取的第一类分布式系统的接口名称,格式转换后的参数信息。
[0041]可选地,所述调用请求转换单元,进一步适于在未获取到所述接口名称对应的第一类分布式系统的接口名称时,根据所述关于第二类分布式系统的接口的调用请求中的接口名称和参数信息,创建一个动态代理对象;根据所述接口名称,利用所述动态代理对象从第一类分布式系统的接口列表中找到具有相应调用效果的第一类分布式系统的接口;将关于该第一类分布式系统的接口的调用请求作为所述关于第一类分布式系统的相应接口的调用请求。
[0042]可选地,所述接口信息预置单元,适于通过调用第一 Context类存储第一类分布式系统的接口列表的信息;通过调用第二Context类存储第二类分布式系统的接口列表的信息;利用反射机制实现从第二 Context类到第一 Context类的反射,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。
[0043]可选地,所述接口信息预置单元,适于存储第一类分布式系统的接口列表的信息对应的第一Jar包,存储第二类分布式系统的接口列表的信息对应的第二Jar包;其中,所述第一 Jar包和所述第二 Jar包分别通过相应的Class loader类加载器进行加载。
[0044]可选地,所述调用请求转换单元,适于根据所述第二Jar包拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;适于通过相应的Classloader类加载器加载所述第一Jar包,获得关于第一类分布式系统的相应接口的调用请求。
[0045]可选地,所述关于第二类分布式系统的接口的调用请求包括:关于第二类分布式系统的读数据的接口的调用请求,和/或,关于第二类分布式系统的写数据的接口的调用请求;
[0046]所述第二类分布式系统的读数据的接口中包括:该第二类分布式系统的读数据的接口对应的读数据的方法;
[0047]所述第二类分布式系统的写数据的接口中包括:该第二类分布式系统的写数据的接口对应的写数据的方法。
[0048]可选地,所述关于第一类分布式系统的相应接口的调用请求包括:关于第一类分布式系统的读数据的接口的调用请求,和/或,关于第一类分布式系统的写数据的接口的调用请求;
[0049]所述第一类分布式系统的读数据的接口中包括:该第一类分布式系统的读数据的接口对应的读数据的方法;
[0050]所述第一类分布式系统的写数据的接口中包括:该第一类分布式系统的写数据的接口对应的写数据的方法。
[0051 ]可选地,所述第一类分布式系统为第一版本的Hadoop系统,所述第二类分布式系统为第二版本的Hadoop系统,所述指定计算模型包括如下一种或多种:Yarn计算模型、Spark计算模型、Sqoop计算模型。
[0052]根据本发明的技术方案,在面对支持第二类分布式系统但不支持第一类分布式系统的指定计算模型时,可以通过将指定计算模型调用第二类分布式系统的接口的调用请求转换为调用第一类分布式系统的等效的接口的调用请求,实现指定计算模型对第一类分布式系统的方法的间接调用,使得第一类分布式系统及相关数据无需做任何改变即可基于指定计算模型进行相关的计算处理。该方案适于那些将第一类分布式系统作为数据处理架构又同时希望使用指定计算模型进行计算的用户,不更改原数据处理架构保证了数据的稳定性和安全性,且接入的指定计算模型满足了相应的处理需求。
[0053]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0054]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0055]图1示出了根据本发明一个实施例的一种在指定分布式系统中接入指定计算模型的方法的流程图;
[0056]图2示出了根据本发明一个实施例的Yarn计算模型、第一版本的Hadoop系统和第二版本的Hadoop系统的交互框图;
[0057]图3示出了根据本发明一个实施例的一种在指定分布式系统中接入指定计算模型的装置的示意图。
【具体实施方式】
[0058]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0059]图1示出了根据本发明一个实施例的一种在指定分布式系统中接入指定计算模型的方法的流程图,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型;如图1所示,该方法包括:
[0060]步骤SI10,获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。
[0061]步骤S120,拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求。
[0062]步骤S130,根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求,并发送至第一类分布式系统。
[0063]步骤S140,接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。
[0064]可见,图1所示的方法面对支持第二类分布式系统但不支持第一类分布式系统的指定计算模型,通过将指定计算模型调用第二类分布式系统的接口的调用请求转换为调用第一类分布式系统的等效的接口的调用请求,实现了指定计算模型对第一类分布式系统的方法的间接调用,使得第一类分布式系统及相关数据无需做任何改变即可基于指定计算模型进行相关的计算处理。该方案适于那些将第一类分布式系统作为数据处理架构又同时希望使用指定计算模型进行计算的用户,不更改原数据处理架构保证了数据的稳定性和安全性,且接入的指定计算模型满足了相应的处理需求。
[0065]在本发明的一个实施例中,上述指定计算模型发送的关于第二类分布式系统的接口的调用请求中包括:接口名称,接口参数;接口名称是第二类分布式系统中的接口的接口名称,接口参数是与该接口相适配的接口参数;指定计算模型发送的关于第二类分布式系统的接口的调用请求是指定计算模型对第二类分布式系统中的某个方法的调用请求,其中方法与接口相对应。
[0066]在上述步骤SI10中所建立的第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系中第一类分布式系统的一个接口与第二类分布式系统的一个接口之间具有映射关系,说明这两个接口所对应的方法是等效的。对于一些接口,通过接口名称和接口参数能够直接确定映射关系,对于另一些接口,通过接口名称和接口参数无法确定映射关系,需要通过适配器类维护其映射关系,还有一些接口是动态的,需要分析其对应的方法的执行原理来确定其映射关系。
[0067]则步骤S130根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求包括:
[0068]步骤S131,根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,获取所拦截的关于第二类分布式系统的接口的调用请求中的所述接口名称对应的第一类分布式系统的接口名称,即获取与指定计算模型想要调用的第二类分布式系统中的接口等效的第一类分布式系统中的接口的接口名称。
[0069]步骤S132,根据所获取的第一类分布式系统的接口名称,将所拦截的关于第二类分布式系统的接口的调用请求中的所述参数信息的格式转换成适配于相应的第一类分布式系统的接口的格式。
[0070]例如,第二类分布式系统的接口a中的关于用户信息的参数为user.name,与之对应的第一类分布式系统的接口a’中的关于用户信息的参数为job.ugi,则在将关于接口a的调用请求转换为调用接口a’的调用请求的过程中,关于用户信息的参数信息从user.name转换为job.ugi。
[0071]步骤S133,获得关于第一类分布式系统的相应接口的调用请求,该调用请求中包括:所获取的第一类分布式系统的接口名称,格式转换后的参数信息。
[0072]可见,在将指定计算模型发送的关于第二类分布式系统的接口的调用请求转换为关于第一类分布式系统的等效的接口的调用请求的过程中,需要找到与被调用的第二类分布式系统的接口等效的第一类分布式系统的接口,还需要将接口参数的格式转换为适配于所找到的第一类分布式系统的接口的格式,使得转换后的调用请求从根本上适配于第一类分布式系统的接口,使得第一类分布式系统能够识别该转换后的调用请求并给出相应的返回结果。
[0073]进一步地,在本发明的一个实施例中,当涉及到动态接口抽象类的方法等不具有一一映射关系的接口时,在进行调用请求的转换的过程中无法获取到所述接口名称对应的第一类分布式系统的接口名称,则此时不再根据映射关系来做调用请求的转换,而是采用动态代理的方式来进行调用。
[0074]具体地,采用动态代理的方式来进行调用包括:根据所述关于第二类分布式系统的接口的调用请求中的接口名称和参数信息,创建一个动态代理对象;根据所述接口名称,利用所述动态代理对象从第一类分布式系统的接口列表中找到具有相应调用效果的第一类分布式系统的接口;将关于该第一类分布式系统的接口的调用请求作为所述关于第一类分布式系统的相应接口的调用请求。
[0075]下文通过一个实施例来说明本方案的具体实施过程:在本实施例中,第一类分布式系统为第一版本的Hadoop系统,第二类分布式系统为第二版本的Hadoop系统,指定计算模型为Yarn计算模型,Yarn计算模型支持第二版本的Hadoop系统但不支持第一版本的Hadoop系统,第一版本的Hadoop系统与第二版本的Hadoop系统不相兼容。A公司的所有数据都在第一版本的Hadoop系统中运营,由于数据量巨大,升级过程中可能发生数据丢失风险,A公司不能将第一版本的Hadoop系统升级为第二版本的Hadoop系统,又由于Yarn计算模型能够实现统一的资源管理以及实现高可用,A公司希望在目前所用的第一版本的Hadoop系统中接入Yarn计算模型。
[0076]为此,依据本方案为第一版本的Hadoop系统创建了一个Spinner组件,该Spinner组件的功能包括:对于那些对应于固定方法的接口,通过调用第一 Context类存储第一版本的Hadoop系统的接口列表的信息,通过调用第二Context类存储第二版本的Hadoop系统的接口列表的信息,利用Java反射机制实现从第二Context类到第一Context类的反射,建立第一版本的Hadoop系统的接口与第二版本的Hadoop系统的接口之间的映射关系。
[0077]在执行过程中,Spinner组件拦截Yarn计算模型发送的关于第二版本的Hadoop系统的接口的调用请求,根据第一版本的Hadoop系统的接口与第二版本的Hadoop系统的接口之间的映射关系,将所述关于第二版本的Hadoop系统的接口的调用请求转换成关于第一版本的Hadoop系统的相应接口的调用请求,其中涉及到接口名称的转换和接口参数的转换,并发送至第一版本的Hadoop系统。第一版本的Hadoop系统在接收到所述关于第一版本的Hadoop系统的相应接口的调用请求后会将相应接口对应的方法及参数返回给Spinner组件,Sp inner组件再返回给Yarn计算模型进行相关处理。
[0078]例如,Spinner组件拦截Yarn计算模型发送的关于第二版本的Hadoop系统的HDFS(Hadoop Distribute File System,分布式文件系统)的读数据的接口的调用请求,和/或,关于第二版本的Hadoop系统的HDFS的写数据的接口的调用请求;其中,第二版本的Hadoop系统的HDFS的读数据的接口中包括:从第二版本的Hadoop系统的HDFS中读数据的方法;第二版本的Hadoop系统的HDFS的写数据的接口中包括:在第二版本的Hadoop系统的HDFS中写数据的方法。
[0079]Spinner组件将关于第二版本的Hadoop系统的HDFS的读数据的接口的调用请求转换为关于第一版本的Hadoop系统的HDFS的读数据的接口的调用请求,并发送给第一版本的Hadoop系统,将第一版本的Hadoop系统的返回结果转发给Yarn计算模型,可见,Yarn计算模型的原本要调用的方法是:从第二版本的Hadoop系统的HDFS中读数据的方法;而经过Spinner的中间作用,使得Yarn计算模型最终调用的方法是:从第一版本的Hadoop系统的HDFS中读数据的方法;进而在调用成功后,Yarn计算模型可以从第一版本的Hadoop系统的HDFS中读取指定数据进行计算。调用写数据的方法的过程同理,在此不再赘述。
[0080]可见,Spinner组件在中间起到翻译、转换的作用,以实现第一版本的Hadoop系统与Yarn计算模型的交互,图2示出了根据本发明一个实施例的Yarn计算模型、第一版本的Hadoop系统和第二版本的Hadoop系统的交互框图,底层是HDFS的实现,叫做存储层,中间这一层包括Spinner组件,第一版本的Hadoop系统和第二版本的Hadoop系统,叫做数据交互层,最上层是Yarn计算模型的实现,叫做计算层,原本计算层通过第二版本的Hadoop系统可以直接访问HDFS,但在本实施例中,计算层发送到第二版本的Hadoop系统的调用请求都被Spinner组件转换发送至第一版本的Hadoop系统,通过第一版本的Hadoop系统访问HDFS。[0081 ]在本发明的一个实施例中,在将关于第二版本的Hadoop系统的接口的调用请求转换成关于第一版本的Hadoop系统的相应接口的调用请求的过程中,存在一个问题:如果第二版本的Hadoop系统和第一版本的Hadoop系统中具有名称相同参数相同的接口,在调用转换的过程中就可能发生冲突,在此本方案利用了 Java提供的类加载器Classloader,Class loader可以自定义当前要加载哪个Jar包,具体方法包括:
[0082]存储第一版本的Hadoop系统的接口列表的信息对应的第一 Jar包,存储第二版本的Hadoop系统的接口列表的信息对应的第二Jar包;其中,所述第一Jar包和所述第二Jar包分别通过相应的Class loader类加载器进行加载;则Spinner组件根据所述第二 Jar包拦截Yarn计算模型发送的关于第二版本的Hadoop系统的接口的调用请求;将关于第二版本的Hadoop系统的接口的调用请求转换成关于第一版本的Hadoop系统的相应接口的调用请求,通过相应的Class loader类加载器加载所述第一 Jar包,获得关于第一版本的Hadoop系统的相应接口的调用请求。这样本方案就在Class loader层面上把两个相同名称和相同参数的接口隔离开来,不会产生调用冲突。
[0083]在本发明的其他实施例中,指定计算模型还可以是Yarn计算模型、Spark计算模型、Sqoop计算模型等其他计算模型,这里不做限制。
[0084]图3示出了根据本发明一个实施例的一种在指定分布式系统中接入指定计算模型的装置的示意图,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型;如图3所示,该在指定分布式系统中接入指定计算模型的装置200包括:
[0085]接口信息预置单元310,适于获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。
[0086]调用请求转换单元320,适于拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求。
[0087]调用处理单元330,适于将转换后的关于第一类分布式系统的相应接口的调用请求发送至第一类分布式系统;接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。
[0088]可见,图3所示的装置面对支持第二类分布式系统但不支持第一类分布式系统的指定计算模型,通过将指定计算模型调用第二类分布式系统的接口的调用请求转换为调用第一类分布式系统的等效的接口的调用请求,实现了指定计算模型对第一类分布式系统的方法的间接调用,使得第一类分布式系统及相关数据无需做任何改变即可基于指定计算模型进行相关的计算处理。该方案适于那些将第一类分布式系统作为数据处理架构又同时希望使用指定计算模型进行计算的用户,不更改原数据处理架构保证了数据的稳定性和安全性,且接入的指定计算模型满足了相应的处理需求。
[0089]在本发明的一个实施例中,上述关于第二类分布式系统的接口的调用请求中包括:接口名称,接口参数;则调用请求转换单元320,适于根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,获取关于第二类分布式系统的接口的调用请求中的接口名称对应的第一类分布式系统的接口名称;根据所获取的第一类分布式系统的接口名称,将所述参数信息的格式转换成适配于相应的第一类分布式系统的接口的格式;获得关于第一类分布式系统的相应接口的调用请求,该调用请求中包括:所获取的第一类分布式系统的接口名称,格式转换后的参数信息。
[0090]其中,调用请求转换单元320,进一步适于在未获取到所述接口名称对应的第一类分布式系统的接口名称时,根据所述关于第二类分布式系统的接口的调用请求中的接口名称和参数信息,创建一个动态代理对象;根据关于第二类分布式系统的接口的调用请求中的接口名称,利用所述动态代理对象从第一类分布式系统的接口列表中找到具有相应调用效果的第一类分布式系统的接口;将关于该第一类分布式系统的接口的调用请求作为所述关于第一类分布式系统的相应接口的调用请求。
[0091]在本发明的一个实施例中,接口信息预置单元310,适于通过调用第一Context类存储第一类分布式系统的接口列表的信息;通过调用第二Context类存储第二类分布式系统的接口列表的信息;利用反射机制实现从第二Context类到第一Context类的反射,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。
[0092]在本发明的一个实施例中,接口信息预置单元310,适于存储第一类分布式系统的接口列表的信息对应的第一 Jar包,存储第二类分布式系统的接口列表的信息对应的第二Jar包;其中,所述第一Jar包和所述第二Jar包分别通过相应的Classloader类加载器进行加载。
[0093]则调用请求转换单元320,适于根据所述第二Jar包拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;适于通过相应的Classloader类加载器加载所述第一Jar包,获得关于第一类分布式系统的相应接口的调用请求。
[0094]在本发明的一个实施例中,所述关于第二类分布式系统的接口的调用请求包括:关于第二类分布式系统的读数据的接口的调用请求,和/或,关于第二类分布式系统的写数据的接口的调用请求;其中,所述第二类分布式系统的读数据的接口中包括:该第二类分布式系统的读数据的接口对应的读数据的方法;所述第二类分布式系统的写数据的接口中包括:该第二类分布式系统的写数据的接口对应的写数据的方法。
[0095]相对应地,所述关于第一类分布式系统的相应接口的调用请求包括:关于第一类分布式系统的读数据的接口的调用请求,和/或,关于第一类分布式系统的写数据的接口的调用请求;其中,所述第一类分布式系统的读数据的接口中包括:该第一类分布式系统的读数据的接口对应的读数据的方法;所述第一类分布式系统的写数据的接口中包括:该第一类分布式系统的写数据的接口对应的写数据的方法。
[0096]在一个具体的实施例中,所述第一类分布式系统为第一版本的Hadoop系统,所述第二类分布式系统为第二版本的Hadoop系统,所述指定计算模型包括如下一种或多种:Yarn计算模型、Spark计算模型、Sqoop计算模型。
[0097]需要说明的是:图3所示装置的各实施例与图1-图2所示的各实施例对应相同,上文中已有详细说明,在此不再赘述。
[0098]综上所述,根据本发明的技术方案,在面对支持第二类分布式系统但不支持第一类分布式系统的指定计算模型时,可以通过将指定计算模型调用第二类分布式系统的接口的调用请求转换为调用第一类分布式系统的等效的接口的调用请求,实现指定计算模型对第一类分布式系统的方法的间接调用,使得第一类分布式系统及相关数据无需做任何改变即可基于指定计算模型进行相关的计算处理。该方案适于那些将第一类分布式系统作为数据处理架构又同时希望使用指定计算模型进行计算的用户,不更改原数据处理架构保证了数据的稳定性和安全性,且接入的指定计算模型满足了相应的处理需求。
[0099]需要说明的是:
[0100]在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0101]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0102]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0103]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0104]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0105]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的在指定分布式系统中接入指定计算模型的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0106]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0107]本发明公开了Al、一种在指定分布式系统中接入指定计算模型的方法,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型;
[0108]该方法包括:
[0109]获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系;
[0110]拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;
[0111]根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求,并发送至第一类分布式系统;
[0112]接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。
[0113]A2、如Al所述的方法,其中,所述关于第二类分布式系统的接口的调用请求中包括:接口名称,接口参数;
[0114]所述根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求包括:
[0115]根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,获取所述接口名称对应的第一类分布式系统的接口名称;
[0116]根据所获取的第一类分布式系统的接口名称,将所述参数信息的格式转换成适配于相应的第一类分布式系统的接口的格式;
[0117]获得关于第一类分布式系统的相应接口的调用请求,该调用请求中包括:所获取的第一类分布式系统的接口名称,格式转换后的参数信息。
[0118]A3、如A2所述的方法,其中,在未获取到所述接口名称对应的第一类分布式系统的接口名称时,该方法进一步包括:
[0119]根据所述关于第二类分布式系统的接口的调用请求中的接口名称和参数信息,创建一个动态代理对象;
[0120]根据所述接口名称,利用所述动态代理对象从第一类分布式系统的接口列表中找到具有相应调用效果的第一类分布式系统的接口 ;
[0121]将关于该第一类分布式系统的接口的调用请求作为所述关于第一类分布式系统的相应接口的调用请求。
[0122]A4、如Al所述的方法,其中,所述获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系包括:
[0123]通过调用第一Context类存储第一类分布式系统的接口列表的信息;
[0124]通过调用第二Context类存储第二类分布式系统的接口列表的信息;[Ο125]利用反射机制实现从第二 Context类到第一 Context类的反射,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。
[0126]A5、如AI所述的方法,其中,所述获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表包括:
[0127]存储第一类分布式系统的接口列表的信息对应的第一Jar包,存储第二类分布式系统的接口列表的信息对应的第二Jar包;其中,所述第一Jar包和所述第二Jar包分别通过相应的Class loader类加载器进行加载。
[0128]A6、如A5所述的方法,其中,
[0129]所述拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求包括:根据所述第二 Jar包拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;
[0130]所述将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求包括:通过相应的Class loader类加载器加载所述第一 Jar包,获得关于第一类分布式系统的相应接口的调用请求。
[0131]A7、如Al所述的方法,其中,
[0132]所述关于第二类分布式系统的接口的调用请求包括:关于第二类分布式系统的读数据的接口的调用请求,和/或,关于第二类分布式系统的写数据的接口的调用请求;
[0133]所述第二类分布式系统的读数据的接口中包括:该第二类分布式系统的读数据的接口对应的读数据的方法;
[0134]所述第二类分布式系统的写数据的接口中包括:该第二类分布式系统的写数据的接口对应的写数据的方法。
[0135]A8、如A7所述的方法,其中,
[0136]所述关于第一类分布式系统的相应接口的调用请求包括:关于第一类分布式系统的读数据的接口的调用请求,和/或,关于第一类分布式系统的写数据的接口的调用请求;
[0137]所述第一类分布式系统的读数据的接口中包括:该第一类分布式系统的读数据的接口对应的读数据的方法;
[0138]所述第一类分布式系统的写数据的接口中包括:该第一类分布式系统的写数据的接口对应的写数据的方法。
[0139]A9、如Al所述的方法,其中,
[OMO]所述第一类分布式系统为第一版本的Hadoop系统,所述第二类分布式系统为第二版本的Hadoop系统,所述指定计算模型包括如下一种或多种:Yarn计算模型、Spark计算模型、Sqoop计算模型。
[0141]本发明还公开了 B10、一种在指定分布式系统中接入指定计算模型的装置,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型;
[ΟΙ42]该装置包括:
[0143]接口信息预置单元,适于获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系;
[0144]调用请求转换单元,适于拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求;
[0145]调用处理单元,适于将转换后的关于第一类分布式系统的相应接口的调用请求发送至第一类分布式系统;接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。
[0146]B11、如BlO所述的装置,其中,所述关于第二类分布式系统的接口的调用请求中包括:接口名称,接口参数;
[0147]所述调用请求转换单元,适于根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,获取所述接口名称对应的第一类分布式系统的接口名称;根据所获取的第一类分布式系统的接口名称,将所述参数信息的格式转换成适配于相应的第一类分布式系统的接口的格式;获得关于第一类分布式系统的相应接口的调用请求,该调用请求中包括:所获取的第一类分布式系统的接口名称,格式转换后的参数信息。
[0148]B12、如Bll所述的装置,其中,
[0149]所述调用请求转换单元,进一步适于在未获取到所述接口名称对应的第一类分布式系统的接口名称时,根据所述关于第二类分布式系统的接口的调用请求中的接口名称和参数信息,创建一个动态代理对象;根据所述接口名称,利用所述动态代理对象从第一类分布式系统的接口列表中找到具有相应调用效果的第一类分布式系统的接口;将关于该第一类分布式系统的接口的调用请求作为所述关于第一类分布式系统的相应接口的调用请求。
[0150]B13、如BlO所述的装置,其中,
[0151]所述接口信息预置单元,适于通过调用第一Context类存储第一类分布式系统的接口列表的信息;通过调用第二 Context类存储第二类分布式系统的接口列表的信息;利用反射机制实现从第二 Context类到第一 Context类的反射,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。
[0152]B14、如BlO所述的装置,其中,
[0153]所述接口信息预置单元,适于存储第一类分布式系统的接口列表的信息对应的第一Jar包,存储第二类分布式系统的接口列表的信息对应的第二Jar包;其中,所述第一Jar包和所述第二 Jar包分别通过相应的Class loader类加载器进行加载。
[0154]B15、如B14所述的装置,其中,
[0155]所述调用请求转换单元,适于根据所述第二Jar包拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;适于通过相应的Classloader类加载器加载所述第一Jar包,获得关于第一类分布式系统的相应接口的调用请求。
[0156]B16、如BlO所述的装置,其中,
[0157]所述关于第二类分布式系统的接口的调用请求包括:关于第二类分布式系统的读数据的接口的调用请求,和/或,关于第二类分布式系统的写数据的接口的调用请求;
[0158]所述第二类分布式系统的读数据的接口中包括:该第二类分布式系统的读数据的接口对应的读数据的方法;
[0159]所述第二类分布式系统的写数据的接口中包括:该第二类分布式系统的写数据的接口对应的写数据的方法。
[0160]B17、如B16所述的装置,其中,
[0161]所述关于第一类分布式系统的相应接口的调用请求包括:关于第一类分布式系统的读数据的接口的调用请求,和/或,关于第一类分布式系统的写数据的接口的调用请求;
[0162]所述第一类分布式系统的读数据的接口中包括:该第一类分布式系统的读数据的接口对应的读数据的方法;
[0163]所述第一类分布式系统的写数据的接口中包括:该第一类分布式系统的写数据的接口对应的写数据的方法。
[0164]B18、如BlO所述的装置,其中,
[0165]所述第一类分布式系统为第一版本的Hadoop系统,所述第二类分布式系统为第二版本的Hadoop系统,所述指定计算模型包括如下一种或多种:Yarn计算模型、Spark计算模型、Sqoop计算模型。
【主权项】
1.一种在指定分布式系统中接入指定计算模型的方法,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型; 该方法包括: 获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系; 拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求; 根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求,并发送至第一类分布式系统; 接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。2.如权利要求1所述的方法,其中,所述关于第二类分布式系统的接口的调用请求中包括:接口名称,接口参数; 所述根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求包括: 根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,获取所述接口名称对应的第一类分布式系统的接口名称; 根据所获取的第一类分布式系统的接口名称,将所述参数信息的格式转换成适配于相应的第一类分布式系统的接口的格式; 获得关于第一类分布式系统的相应接口的调用请求,该调用请求中包括:所获取的第一类分布式系统的接口名称,格式转换后的参数信息。3.如权利要求2所述的方法,其中,在未获取到所述接口名称对应的第一类分布式系统的接口名称时,该方法进一步包括: 根据所述关于第二类分布式系统的接口的调用请求中的接口名称和参数信息,创建一个动态代理对象; 根据所述接口名称,利用所述动态代理对象从第一类分布式系统的接口列表中找到具有相应调用效果的第一类分布式系统的接口 ; 将关于该第一类分布式系统的接口的调用请求作为所述关于第一类分布式系统的相应接口的调用请求。4.如权利要求1所述的方法,其中,所述获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系包括: 通过调用第一 Context类存储第一类分布式系统的接口列表的信息; 通过调用第二 Context类存储第二类分布式系统的接口列表的信息; 利用反射机制实现从第二 Context类到第一 Context类的反射,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系。5.如权利要求1所述的方法,其中,所述获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表包括: 存储第一类分布式系统的接口列表的信息对应的第一 Jar包,存储第二类分布式系统的接口列表的信息对应的第二Jar包;其中,所述第一Jar包和所述第二Jar包分别通过相应的Class loader类加载器进行加载。6.如权利要求5所述的方法,其中, 所述拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求包括:根据所述第二 Jar包拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求; 所述将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求包括:通过相应的Classloader类加载器加载所述第一Jar包,获得关于第一类分布式系统的相应接口的调用请求。7.如权利要求1所述的方法,其中, 所述关于第二类分布式系统的接口的调用请求包括:关于第二类分布式系统的读数据的接口的调用请求,和/或,关于第二类分布式系统的写数据的接口的调用请求; 所述第二类分布式系统的读数据的接口中包括:该第二类分布式系统的读数据的接口对应的读数据的方法; 所述第二类分布式系统的写数据的接口中包括:该第二类分布式系统的写数据的接口对应的写数据的方法。8.如权利要求7所述的方法,其中, 所述关于第一类分布式系统的相应接口的调用请求包括:关于第一类分布式系统的读数据的接口的调用请求,和/或,关于第一类分布式系统的写数据的接口的调用请求; 所述第一类分布式系统的读数据的接口中包括:该第一类分布式系统的读数据的接口对应的读数据的方法; 所述第一类分布式系统的写数据的接口中包括:该第一类分布式系统的写数据的接口对应的写数据的方法。9.如权利要求1所述的方法,其中, 所述第一类分布式系统为第一版本的Hadoop系统,所述第二类分布式系统为第二版本的Hadoop系统,所述指定计算模型包括如下一种或多种:Yarn计算模型、Spark计算模型、Sqoop计算模型。10.—种在指定分布式系统中接入指定计算模型的装置,其中,所述指定分布式系统为第一类分布式系统,所述指定计算模型为支持第二类分布式系统但不支持第一类分布式系统的计算模型; 该装置包括: 接口信息预置单元,适于获取第一类分布式系统的接口列表,获取第二类分布式系统的接口列表,建立第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系; 调用请求转换单元,适于拦截所述指定计算模型发送的关于第二类分布式系统的接口的调用请求;根据第一类分布式系统的接口与第二类分布式系统的接口之间的映射关系,将所述关于第二类分布式系统的接口的调用请求转换成关于第一类分布式系统的相应接口的调用请求; 调用处理单元,适于将转换后的关于第一类分布式系统的相应接口的调用请求发送至第一类分布式系统;接收第一类分布式系统的返回结果并发送至所述指定计算模型,由所述指定计算模型根据所述返回结果进行计算处理。
【文档编号】G06F9/44GK105867928SQ201610192917
【公开日】2016年8月17日
【申请日】2016年3月30日
【发明人】覃侃, 王磊, 钟靓
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1