CN104753874B - 实现Hadoop兼容性的方法和装置 - Google Patents
实现Hadoop兼容性的方法和装置 Download PDFInfo
- Publication number
- CN104753874B CN104753874B CN201310745774.2A CN201310745774A CN104753874B CN 104753874 B CN104753874 B CN 104753874B CN 201310745774 A CN201310745774 A CN 201310745774A CN 104753874 B CN104753874 B CN 104753874B
- Authority
- CN
- China
- Prior art keywords
- hadoop
- packet
- host node
- hadoop system
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现Hadoop兼容性的方法和装置,属于通信领域。所述方法包括:在采用第二协议的第二Hadoop***上接收到访问文件的请求;确定文件所在主节点的版本信息及主节点属于采用第一协议的第一Hadoop***;运行兼容访问接口调用第二Hadoop***中与该请求对应的第二方法,且将其中的对象转换为第一Hadoop***中与该请求对应的第一方法中的对象;将第二方法所属的包的名称由第二Hadoop***能识别的包名转换为第一Hadoop***能识别的包名,然后发送给主节点。所述装置包括:接收模块、确定模块、第一处理模块、第二处理模块和发送模块。本发明实现了基于不同协议的第一和第二Hadoop***之间的兼容性,丰富了Hadoop***的功能。
Description
技术领域
本发明涉及通信领域,特别涉及一种实现Hadoop兼容性的方法和装置。
背景技术
Hadoop是由Apache组织主导的用于大数据分析处理的开源框架,主要包括hdfs存储和Mapreduce计算两大内容。随着技术的不断发展和更新,在Hadoop1.0***的基础上,已发布了新的Hadoop2.0***,其中最重要的一个功能就是YARN(Yet Another ResourceNegotiator,下一代资源管理***)。
Hadoop2.0***的存储访问方式与Hadoop1.0***有很大区别。Hadoop1.0***采用的是Hadoop自带的RPC(Remote Procedure Call Protocol,远程过程调用协议)通信,而Hadoop2.0***则采用PB(Protocol Buffer,协议缓冲)协议来通信。
当使用Hadoop2.0***访问Hadoop1.0***的数据时,必须将数据从Hadoop1.0***拷贝到Hadoop2.0***上,这一过程将消耗很长的时间,效率较低。因此,目前的Hadoop2.0***与Hadoop1.0***还不兼容,无法实现在Hadoop2.0***上访问Hadoop1.0***中的数据。
发明内容
有鉴于此,本发明实施例提供了一种实现Hadoop兼容性的方法和装置,以实现Hadoop***不同版本之间的兼容性。所述技术方案如下:
一方面,提供了一种实现Hadoop兼容性的方法,包括:
在采用第二协议的第二Hadoop***上接收到访问文件的请求;
根据所述请求,确定文件所在主节点的版本信息;
根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***;
运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名;
将转换后的包发送给所述主节点。
另一方面,提供了一种实现Hadoop兼容性的装置,包括:
接收模块,用于在采用第二协议的第二Hadoop***上接收到访问文件的请求;
确定模块,用于根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用远程过程调用RPC协议的第一Hadoop***;
第一处理模块,用于运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
第二处理模块,用于将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名;
发送模块,用于将转换后的包发送给所述主节点。
本发明实施例提供的技术方案带来的有益效果是:通过在采用第二协议的第二Hadoop***上接收到访问文件的请求;根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***,运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,将转换后的包发送给所述主节点,实现了基于不同协议的第一和第二Hadoop***之间的兼容性,能够实现在第二Hadoop***上访问第一Hadoop***的数据,提高了Hadoop***访问的易用性,丰富了Hadoop***的功能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1提供的实现Hadoop兼容性的方法流程图;
图2是本发明实施例2提供的实现Hadoop兼容性的方法流程图;
图3是本发明实施例3提供的实现Hadoop兼容性的方法流程图;
图4是本发明实施例3提供的实现Hadoop兼容性的流程示意图;
图5是本发明实施例4提供的实现Hadoop兼容性的装置一种结构图;
图6是本发明实施例4提供的实现Hadoop兼容性的装置另一种结构图;
图7是本发明实施例5提供的服务器结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种实现Hadoop兼容性的方法,包括:
101:在采用第二协议的第二Hadoop***上接收到访问文件的请求;
102:根据该请求确定该文件所在主节点的版本信息;
103:根据该版本信息确定该主节点属于采用第一协议的第一Hadoop***;
104:运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
105:将所述第二方法所属的包的名称,由第二Hadoop***能识别的包名转换为第一Hadoop***能识别的包名;
106:将转换后的包发送给该主节点。
本实施例中,第一协议为RPC协议,第二协议为PB协议。第一Hadoop***就是指Hadoop1.0***,采用RPC协议进行通信;第二Hadoop***就是指Hadoop2.0***,采用PB协议进行通信。
本实施例中,如果根据该版本信息确定该主节点属于第二Hadoop***,则按照第二Hadoop***的文件访问方式执行相应的流程,此处不做过多说明。
本实施例中,根据该请求确定该文件所在主节点的版本信息,可以包括:
读取第二Hadoop***的配置文件,确定hdfs类型的文件由该兼容访问接口处理;在该配置文件中查找节点列表,获得该文件所在主节点的版本信息。
优选地,上述在该配置文件中查找节点列表,获得该文件所在主节点的版本信息,可以包括:
在该配置文件中查找节点列表;如果该节点列表中可以包括该主节点,则获知该主节点属于第一Hadoop***;如果该节点列表中不可以包括该主节点,则获知该主节点属于第二Hadoop***。
本实施例中,在采用第二协议的第二Hadoop***上接收到访问文件的请求之前,还可以包括:
对第二Hadoop***的包进行重命名,以使重命名后的包名与第一Hadoop***中的包名不重复。
本实施例中,上述将所述第二方法所属的包的名称,由第二Hadoop***能识别的包名转换为第一Hadoop***能识别的包名,可以包括:
调用输出对象方法,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名,恢复为重命名之前的所述第一Hadoop***能识别的包名。
本实施例中,上述方法还可以包括:
当接收到该主节点发送的包时,调用输入对象方法,按照与所述重命名相同的方式,将所述接收到的包的名称,由所述第一Hadoop***能识别的包名转换为所述第二Hadoop***能识别的包名;运行该兼容访问接口处理该转换后的包。
本实施例提供的上述方法,通过在采用第二协议的第二Hadoop***上接收到访问文件的请求;根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***,运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,将转换后的包发送给所述主节点,实现了基于不同协议的第一和第二Hadoop***之间的兼容性,能够实现在第二Hadoop***上访问第一Hadoop***的数据,提高了Hadoop***访问的易用性,丰富了Hadoop***的功能。
实施例2
参见图2,本实施例提供了一种实现Hadoop兼容性的方法,包括:
201:在采用PB协议的第二Hadoop***上接收到访问文件的请求;
本实施例中,第二Hadoop***就是指Hadoop2.0***,采用PB协议进行通信。接收到访问文件的请求,可以是在YARN框架下使用Hadoop2.0***DFS的FileSystem接口发起文件操作。
202:读取第二Hadoop***的配置文件,确定hdfs类型的文件由该兼容访问接口处理;
203:在该配置文件中查找节点列表,获得该文件所在主节点的版本信息;
具体地,本步骤可以包括:
在该配置文件中查找节点列表;
如果该节点列表中包括该主节点,则获知该主节点属于第一Hadoop***;
如果该节点列表中不包括该主节点,则获知该主节点属于第二Hadoop***。
204:根据该版本信息确定该主节点属于采用RPC协议的第一Hadoop***;
205:运行兼容访问接口调用第二Hadoop***中与所述请求对应的第二方法,且将该第二方法中的对象转换为第一Hadoop***中与所述请求对应的第一方法中的对象;
其中,第一Hadoop***就是指Hadoop1.0***,采用RPC协议进行通信。
206:将所述第二方法所属的包的名称,由第二Hadoop***能识别的包名
转换为第一Hadoop***能识别的包名;
207:将转换后的包发送给该主节点。
上述方法中,通过Hadoop2.0***的配置文件获取主节点版本信息的过程,
可以采用下面的例子来进行说明。例如,Hadoop2.0***的配置文件如下:
其中,参数fs.hdfs.impl表示文件类型为hdfs类型,且对于hdfs类型的文件***,都由org.apache.hadoopcdh3.hdfs.CdhDistributedFileSystem来完成操作。参数dfs.namenode.version1.list为节点列表,该节点列表中包括了属于Hadoop1.0***的各个主节点。
本实施例中,所述兼容访问接口可以具体为:Cdh3DistributedFileSystem接口。对于Hadoop1.0***中的主节点,可以采用Cdh3DistributedFileSystem接口调用各种与文件有关的方法来实现与文件有关的操作,对于Hadoop2.0***中的主节点,可以采用Cdh4DistributedFileSystem接口来调用各种与文件有关的方法实现与文件有关的操作。当根据配置文件获知当前访问文件的请求对应的主节点位于Hadoop1.0***中时,可以运行Cdh3DistributedFileSystem接口来执行相应的操作。
例如,用户在Hadoop2.0***中输入信息hdfs://nn1:54321/请求访问文件。其中,待访问的文件为hdfs类型的文件,该文件所在的主节点(NameNode)为nn1,且端口是54321。读取上述配置文件可以获知节点列表中包括nn1节点,因此,可以确定nn1为Hadoop1.0***中的节点,从而可以运行上述兼容访问接口Cdh3DistributedFileSystem来执行访问文件的操作。
本实施例提供的上述方法,通过在采用第二协议的第二Hadoop***上接收到访问文件的请求;根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***,运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,将转换后的包发送给所述主节点,实现了基于不同协议的第一和第二Hadoop***之间的兼容性,能够实现在第二Hadoop***上访问第一Hadoop***的数据,提高了Hadoop***访问的易用性,丰富了Hadoop***的功能。
实施例3
参见图3,本实施例提供了一种实现Hadoop兼容性的方法,包括:
301:对采用PB协议的第二Hadoop***的包进行重命名,以使重命名后的包名与第一Hadoop***中的包名不重复;
本实施例中,第二Hadoop***就是指Hadoop2.0***,采用PB协议进行通信;第一Hadoop***就是指Hadoop1.0***,采用RPC协议进行通信。
由于Hadoop1.0***与Hadoop2.0***中包名是相同的,都是org.apache.hadoop,为了实现在Hadoop2.0***上重用Hadoop1.0的客户端,因此,将Hadoop2.0***的包进行重命名,且重命名后与Hadoop1.0***中的包名不重复,从而能够区分出是Hadoop2.0***的包名还是Hadoop1.0***的包名。
本实施例对第二Hadoop***的包重命名后的包名不做具体限定,只要与第一Hadoop***的包名不重复即可。例如,可以重命名为org.apache.hadoopcdh3,org.apache.hadoop1,org.apache.hadoopa,org.apache.hadoop.h3等等,本实施例对此不做具体限定。
302:在第二Hadoop***上接收到访问文件的请求;
本实施例中,接收到访问文件的请求,可以是在YARN框架下使用Hadoop2.0***DFS的FileSystem接口发起文件操作。
303:根据该请求确定该文件所在主节点的版本信息,根据该版本信息确定该主节点属于采用RPC协议的第一Hadoop***;
具体地,可以通过读取第二Hadoop***的配置文件来确定该主节点是否属于第一Hadoop***,详见实施例2中的描述,此处不赘述。
304:运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将该第二方法中的对象转换为第一Hadoop***中与所述请求对应的第一方法中的对象;
本实施例中,所述兼容访问接口用于执行与文件有关的操作,包括但不限于:创建文件、删除文件、打开文件、创建目录等等。其中,该兼容访问接口可以具体为Cdh3DistributedFileSystem接口,该接口可以包括但不限于如下与文件有关的方法:
方法名称 | 方法用途 |
append() | 追加内容到文件 |
createInternal() | 创建新文件 |
delete() | 删除文件 |
getFileBlockLocations() | 得到文件的数据块信息 |
getFileChecksum() | 得到文件的验证值 |
getFileStatus() | 得到文件的属性 |
listStatus() | 得到目录的子文件信息 |
mkdir() | 创建一个目录 |
open() | 打开一个文件 |
rename() | 重命名文件 |
setPermission() | 设置文件的权限 |
setReplication() | 设置文件备份数 |
close() | 关闭文件句柄 |
另外,上述Cdh3DistributedFileSystem接口还执行与对象有关的操作,进行Hadoop2.0***的包中的类涉及的对象与Hadoop1.0***的包中的类涉及的对象之间的转换,实现Hadoop1.0包中的类涉及的对象与Hadoop2.0包中的类涉及的对象的兼容。该接口包括但不限于如下与对象有关的类:
类名称 | 类的用途 |
Path | 文件目录信息 |
FSDataOutputStream | 文件输出流 |
BlockLocation | 数据块信息 |
FileChecksum | 文件的验证信息 |
FileStatus | 文件的属性信息 |
<u>FsPermission</u> | 文件的权限信息 |
FSDataInputStream | 文件输入流 |
兼容访问接口Cdh3DistributedFileSystem基于上述方法以及类,可以实现在Hadoop2.0***上直接兼容访问Hadoop1.0***的数据。
305:调用输出对象方法,将所述第二方法所属的包的名称,由第二Hadoop***能识别的包名,恢复为重命名之前的第一Hadoop***能识别的包名;
下面以Hadoop2.0***中的包名是org.apache.hadoopcdh3为例具体说明上述输出对象方法的执行过程。上述输出对象方法用于在将信号从Hadoop客户端传输至Hadoop服务器时对信号进行处理,可以表示为writeObject(),具体如下:
可以看出,该输出对象方法能够将包名org.apache.hadoopcdh3转换为包名org.apache.hadoop,从而能够被Hadoop1.0***识别。
本实施例中,执行包名转换后就可以使用Hadoop1.0***中的客户端Client来执行后续的操作,因此,可以称为对Hadoop1.0***客户端Client的重用。对于Hadoop1.0***中的客户端Client来说,无需进行任何变化,仍然按照Hadoop1.0***中的流程来执行,从而能够完成与Hadoop1.0***中的Server端(主节点)进行通信。
306:将转换后的包发送给该主节点;
其中,Hadoop1.0***的主节点收到所述包后,会执行相应的操作,并将结果返回。
307:当接收到该主节点发送的包时,调用输入对象方法,按照与所述重命名相同的方式,将接收到的包的名称,由第一Hadoop***能识别的包名转换为第二Hadoop***能识别的包名;
下面以Hadoop2.0***中的包名是org.apache.hadoopcdh3为例具体说明上述输入对象方法的执行过程。上述输入对象方法用于在将信号从Hadoop服务器传输至Hadoop客户端时对信号进行处理,可以表示为readObject(),具体如下:
可以看出,该输入对象方法能够将包名org.apache.hadoop转换为包名org.apache.hadoop cdh3,从而能够被Hadoop2.0***识别。
本实施例中,上述writeObject方法除了进行包名转换,还执行其本身具有的功能,如将当前传输的类序列化成二进制码进行传输等,上述readObject方法除了进行包名转换,还执行其本身具有的功能,如将当前传输的二进制码序列化成类进行传输等,此处不做过多说明。
上述输出对象方法和输入对象方法可以统称为RPC转换器,使用该RPC转换器就可以实现Hadoop1.0***和Hadoop2.0***的包名相互转换。
308:运行该兼容访问接口处理该转换后的包。
上述方法的执行过程可以参见图4。其中,在Hadoop2.0的YARN框架上发起访问文件的请求,Hadoop2.0***的FileSystem Interface接口进行处理。再由兼容访问接口进行版本信息的获取和判断,如果访问文件的主节点在Hadoop2.0***中,则执行右侧的流程,由Hadoop2.0***的Cdh4DistributedFileSystem接口进行处理。如果访问文件的主节点在Hadoop1.0***中,则执行左侧的流程,由适用于Hadoop1.0***的Cdh3DistributedFileSystem接口进行处理。处理后的结果输入至Hadoop1.0***的客户端Client,此时进行Hadoop1.0***客户端的重用。由Hadoop1.0RPC转换器对Hadoop1.0***中的包进行包名转换后,与Hadoop1.0***的服务器端进行通信。
本实施例提供的上述方法,通过在采用第二协议的第二Hadoop***上接收到访问文件的请求;根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***,运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,将转换后的包发送给所述主节点,实现了基于不同协议的第一和第二Hadoop***之间的兼容性,能够实现在第二Hadoop***上访问第一Hadoop***的数据,提高了Hadoop***访问的易用性,丰富了Hadoop***的功能。
实施例4
参见图5,本实施例提供了一种实现Hadoop兼容性的装置,包括:
接收模块501,用于在采用第二协议的第二Hadoop***上接收到访问文件的请求;
确定模块502,用于根据该请求确定该文件所在主节点的版本信息,根据该版本信息确定该主节点属于采用RPC协议的第一Hadoop***;
第一处理模块503,用于运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
第二处理模块504,用于将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名;
发送模块505,用于将转换后的包发送给该主节点。
参见图6,本实施例中,确定模块502可以包括:
读取单元502a,用于读取第二Hadoop***的配置文件,确定hdfs类型的文件由该兼容访问接口处理;
查找单元502b,用于在该配置文件中查找节点列表,获得该文件所在主节点的版本信息。
进一步地,上述查找单元可以用于:
在该配置文件中查找节点列表;如果该节点列表中可以包括该主节点,则获知该主节点属于第一Hadoop***;如果该节点列表中不可以包括该主节点,则获知该主节点属于第二Hadoop***。
本实施例中,上述装置还可以包括:
重命名模块,用于在接收模块接收所述请求之前,对第二Hadoop***的包进行重命名,以使重命名后的包名与第一Hadoop***中的包名不重复。
本实施例中,进一步地,第二处理模块504可以包括:
输出转换单元,用于调用输出对象方法,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名,恢复为重命名之前的所述第一Hadoop***能识别的包名。
本实施例中,接收模块501还可以用于:接收该主节点发送的包;第二处理模块504还可以包括:输入转换单元,用于当接收模块501接收到该主节点发送的包时,调用输入对象方法,按照与所述重命名相同的方式,将所述接收到的包的名称,由第一Hadoop***能识别的包名转换为第二Hadoop***能识别的包名;第一处理模块503还可以用于:运行该兼容访问接口处理该输入转换单元转换后的包。
本实施例中,第一协议为RPC协议,第二协议为PB协议。
本实施例提供的上述装置可以应用于第二Hadoop***中,而且,可以执行上述任一方法实施例提供的方法,详细过程详见方法实施例中的描述,此处不赘述。
本实施例提供的上述装置,通过在采用第二协议的第二Hadoop***上接收到访问文件的请求;根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***,运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,将转换后的包发送给所述主节点,实现了基于不同协议的第一和第二Hadoop***之间的兼容性,能够实现在第二Hadoop***上访问第一Hadoop***的数据,提高了Hadoop***访问的易用性,丰富了Hadoop***的功能。
实施例5
本实施例提供了一种服务器,该服务器可以用于执行上述实施例中提供的实现Hadoop兼容性的方法。参见图7,该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。
服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,和/或,一个或一个以上操作***1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,
FreeBSDTM等等。
具体在本实施例中,经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
在采用第二协议的第二Hadoop***上接收到访问文件的请求;
根据所述请求,确定文件所在主节点的版本信息;
根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***;
运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名;
将转换后的包发送给所述主节点。
其中,所述根据所述请求,确定文件所在主节点的版本信息,包括:
读取所述第二Hadoop***的配置文件,确定hdfs类型的文件由所述兼容访问接口处理;
在所述配置文件中查找节点列表,获得所述文件所在主节点的版本信息。
其中,所述在所述配置文件中查找节点列表,获得所述文件所在主节点的版本信息,包括:
在所述配置文件中查找节点列表;
如果所述节点列表中包括所述主节点,则获知所述主节点属于所述第一Hadoop***;
如果所述节点列表中不包括所述主节点,则获知所述主节点属于所述第二Hadoop***。
其中,所述在采用第二协议的第二Hadoop***上接收到访问文件的请求之前,还包括:
对所述第二Hadoop***的包进行重命名,以使重命名后的包名与所述第一Hadoop***中的包名不重复。
其中,所述将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,包括:
调用输出对象方法,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名,恢复为重命名之前的所述第一Hadoop***能识别的包名。
其中,所述程序还包含用于进行以下操作的指令:
当接收到所述主节点发送的包时,调用输入对象方法,按照与所述重命名相同的方式,将所述接收到的包的名称,由所述第一Hadoop***能识别的包名转换为所述第二Hadoop***能识别的包名;
运行所述兼容访问接口处理所述转换后的包。
其中,所述第一协议为远程过程调用RPC协议,所述第二协议为协议缓冲PB协议。
本实施例提供的上述服务器,通过在采用第二协议的第二Hadoop***上接收到访问文件的请求;根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***,运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,将转换后的包发送给所述主节点,实现了基于不同协议的第一和第二Hadoop***之间的兼容性,能够实现在第二Hadoop***上访问第一Hadoop***的数据,提高了Hadoop***访问的易用性,丰富了Hadoop***的功能。
实施例6
本发明实施例提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备中时,可以使得该设备执行如下步骤的指令(instructions):
在采用第二协议的第二Hadoop***上接收到访问文件的请求;
根据所述请求,确定文件所在主节点的版本信息;
根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***;
运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名;
将转换后的包发送给所述主节点。
其中,所述根据所述请求,确定文件所在主节点的版本信息,包括:
读取所述第二Hadoop***的配置文件,确定hdfs类型的文件由所述兼容访问接口处理;
在所述配置文件中查找节点列表,获得所述文件所在主节点的版本信息。
其中,所述在所述配置文件中查找节点列表,获得所述文件所在主节点的版本信息,包括:
在所述配置文件中查找节点列表;
如果所述节点列表中包括所述主节点,则获知所述主节点属于所述第一Hadoop***;
如果所述节点列表中不包括所述主节点,则获知所述主节点属于所述第二Hadoop***。
其中,所述在采用第二协议的第二Hadoop***上接收到访问文件的请求之前,还包括:
对所述第二Hadoop***的包进行重命名,以使重命名后的包名与所述第一Hadoop***中的包名不重复。
其中,所述将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,包括:
调用输出对象方法,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名,恢复为重命名之前的所述第一Hadoop***能识别的包名。
其中,所述设备还可以执行如下步骤的指令:
当接收到所述主节点发送的包时,调用输入对象方法,按照与所述重命名相同的方式,将所述接收到的包的名称,由所述第一Hadoop***能识别的包名转换为所述第二Hadoop***能识别的包名;
运行所述兼容访问接口处理所述转换后的包。
其中,所述第一协议为远程过程调用RPC协议,所述第二协议为协议缓冲PB协议。
本实施例提供的上述非易失性可读存储介质,通过在采用第二协议的第二Hadoop***上接收到访问文件的请求;根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用第一协议的第一Hadoop***,运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名转换为所述第一Hadoop***能识别的包名,将转换后的包发送给所述主节点,实现了基于不同协议的第一和第二Hadoop***之间的兼容性,能够实现在第二Hadoop***上访问第一Hadoop***的数据,提高了Hadoop***访问的易用性,丰富了Hadoop***的功能。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种非易失性可读存储介质中,所述非易失性可读存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种实现Hadoop兼容性的方法,其特征在于,所述方法包括:
对第二Hadoop***的包进行重命名,以使重命名后的包名与第一Hadoop***中的包名不重复;
在采用协议缓冲PB协议的所述第二Hadoop***上接收到访问文件的请求;
根据所述请求,确定文件所在主节点的版本信息;
根据所述版本信息确定所述主节点属于采用远程过程调用RPC协议的所述第一Hadoop***;
运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
调用输出对象方法,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名,恢复为重命名之前的所述第一Hadoop***能识别的包名;
将转换后的包发送给所述主节点。
2.根据权利要求1所述的方法,其特征在于,所述根据所述请求,确定文件所在主节点的版本信息,包括:
读取所述第二Hadoop***的配置文件,确定hdfs类型的文件由所述兼容访问接口处理;
在所述配置文件中查找节点列表,获得所述文件所在主节点的版本信息。
3.根据权利要求2所述的方法,其特征在于,所述在所述配置文件中查找节点列表,获得所述文件所在主节点的版本信息,包括:
在所述配置文件中查找节点列表;
如果所述节点列表中包括所述主节点,则获知所述主节点属于所述第一Hadoop***;
如果所述节点列表中不包括所述主节点,则获知所述主节点属于所述第二Hadoop***。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到所述主节点发送的包时,调用输入对象方法,按照与所述重命名相同的方式,将所述接收到的包的名称,由所述第一Hadoop***能识别的包名转换为所述第二Hadoop***能识别的包名;
运行所述兼容访问接口处理所述转换后的包。
5.一种实现Hadoop兼容性的装置,其特征在于,所述装置包括:
重命名模块,用于对第二Hadoop***的包进行重命名,以使重命名后的包名与第一Hadoop***中的包名不重复;
接收模块,用于在采用协议缓冲PB协议的所述第二Hadoop***上接收到访问文件的请求;
确定模块,用于根据所述请求,确定文件所在主节点的版本信息,根据所述版本信息确定所述主节点属于采用远程过程调用RPC协议的所述第一Hadoop***;
第一处理模块,用于运行兼容访问接口调用所述第二Hadoop***中与所述请求对应的第二方法,且将所述第二方法中的对象转换为所述第一Hadoop***中与所述请求对应的第一方法中的对象;
第二处理模块,用于调用输出对象方法,将所述第二方法所属的包的名称,由所述第二Hadoop***能识别的包名,恢复为重命名之前的所述第一Hadoop***能识别的包名;
发送模块,用于将转换后的包发送给所述主节点。
6.根据权利要求5所述的装置,其特征在于,所述确定模块包括:
读取单元,用于读取所述第二Hadoop***的配置文件,确定hdfs类型的文件由所述兼容访问接口处理;
查找单元,用于在所述配置文件中查找节点列表,获得所述文件所在主节点的版本信息。
7.根据权利要求6所述的装置,其特征在于,所述查找单元用于:
在所述配置文件中查找节点列表;
如果所述节点列表中包括所述主节点,则获知所述主节点属于所述第一Hadoop***;
如果所述节点列表中不包括所述主节点,则获知所述主节点属于所述第二Hadoop***。
8.根据权利要求5所述的装置,其特征在于,
所述接收模块还用于:接收所述主节点发送的包;
所述第二处理模块包括:
输入转换单元,用于当所述接收模块接收到所述主节点发送的包时,调用输入对象方法,按照与所述重命名相同的方式,将所述接收到的包的名称,由所述第一Hadoop***能识别的包名转换为所述第二Hadoop***能识别的包名;
所述第一处理模块还用于:运行所述兼容访问接口处理所述输入转换单元转换后的包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310745774.2A CN104753874B (zh) | 2013-12-25 | 2013-12-25 | 实现Hadoop兼容性的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310745774.2A CN104753874B (zh) | 2013-12-25 | 2013-12-25 | 实现Hadoop兼容性的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104753874A CN104753874A (zh) | 2015-07-01 |
CN104753874B true CN104753874B (zh) | 2019-07-30 |
Family
ID=53592992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310745774.2A Active CN104753874B (zh) | 2013-12-25 | 2013-12-25 | 实现Hadoop兼容性的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104753874B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134498A (zh) * | 2018-02-09 | 2019-08-16 | 中移(苏州)软件技术有限公司 | 一种应用兼容性评估方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1310906A (zh) * | 1999-02-04 | 2001-08-29 | 西门子公司 | 用于互相转接不兼容网络的协议数据单元的装置 |
CN1553669A (zh) * | 2003-05-29 | 2004-12-08 | 华为技术有限公司 | 使应用适配可兼容两种媒体网关控制协议的方法 |
CN1578307A (zh) * | 2003-07-28 | 2005-02-09 | 华为技术有限公司 | 电信设备服务端与客户端进行通信的方法 |
CN101008894A (zh) * | 2007-01-26 | 2007-08-01 | 华为技术有限公司 | 实现***新旧版本兼容的方法及装置 |
CN101082927A (zh) * | 2007-07-02 | 2007-12-05 | 浙江大学 | 一种基于ContextFS上下文文件***的文件服务方法 |
CN101119227A (zh) * | 2006-08-02 | 2008-02-06 | 华为技术有限公司 | 后向兼容网管***的网管方法及被管*** |
CN103326889A (zh) * | 2013-07-18 | 2013-09-25 | 迈普通信技术股份有限公司 | 一种新旧版本间通信兼容的方法及装置 |
CN103401846A (zh) * | 2013-07-15 | 2013-11-20 | 杭州华为数字技术有限公司 | 数据处理方法、协议转换设备和互联网络 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8756595B2 (en) * | 2011-07-28 | 2014-06-17 | Yahoo! Inc. | Method and system for distributed application stack deployment |
-
2013
- 2013-12-25 CN CN201310745774.2A patent/CN104753874B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1310906A (zh) * | 1999-02-04 | 2001-08-29 | 西门子公司 | 用于互相转接不兼容网络的协议数据单元的装置 |
CN1553669A (zh) * | 2003-05-29 | 2004-12-08 | 华为技术有限公司 | 使应用适配可兼容两种媒体网关控制协议的方法 |
CN1578307A (zh) * | 2003-07-28 | 2005-02-09 | 华为技术有限公司 | 电信设备服务端与客户端进行通信的方法 |
CN101119227A (zh) * | 2006-08-02 | 2008-02-06 | 华为技术有限公司 | 后向兼容网管***的网管方法及被管*** |
CN101008894A (zh) * | 2007-01-26 | 2007-08-01 | 华为技术有限公司 | 实现***新旧版本兼容的方法及装置 |
CN101082927A (zh) * | 2007-07-02 | 2007-12-05 | 浙江大学 | 一种基于ContextFS上下文文件***的文件服务方法 |
CN103401846A (zh) * | 2013-07-15 | 2013-11-20 | 杭州华为数字技术有限公司 | 数据处理方法、协议转换设备和互联网络 |
CN103326889A (zh) * | 2013-07-18 | 2013-09-25 | 迈普通信技术股份有限公司 | 一种新旧版本间通信兼容的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104753874A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10609035B2 (en) | Access guards for multi-tenant logging | |
US10936988B2 (en) | Cognitive process enactment | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
US10630752B2 (en) | Identity service management in limited connectivity environments | |
CN110489417A (zh) | 一种数据处理方法及相关设备 | |
US11488029B2 (en) | Cognitive process code generation | |
CN111258627B (zh) | 一种接口文档生成方法和装置 | |
CN106104514A (zh) | 对利用文件存储***实施的对象存储库中的对象的加速访问 | |
CN110781505B (zh) | ***构建方法及装置、检索方法及装置、介质和设备 | |
CN104937897B (zh) | 用于消除对网络数据包的冗余安全分析的***和方法 | |
CN108228770A (zh) | 一种应用文件来源查询的方法及装置 | |
WO2016169237A1 (zh) | 数据处理方法及装置 | |
US20180081894A1 (en) | Method and apparatus for clearing data in cloud storage system | |
CN112597218A (zh) | 一种数据处理方法、装置以及数据湖架构 | |
WO2022048422A1 (zh) | 数据处理的方法、装置、设备及存储介质 | |
CN106570153A (zh) | 一种海量url的数据提取方法及*** | |
US8055665B2 (en) | Sorted search in a distributed directory environment using a proxy server | |
CN106570151A (zh) | 一种海量文件的数据收集处理方法及*** | |
RU2622629C2 (ru) | Способ поиска пути по дереву | |
CN104753874B (zh) | 实现Hadoop兼容性的方法和装置 | |
US11243882B2 (en) | In-array linked list identifier pool scheme | |
CN106570152B (zh) | 一种手机号码的海量提取方法及*** | |
US10572486B2 (en) | Data communication in a distributed data grid | |
CN104572945B (zh) | 一种基于云存储空间的文件搜索方法和装置 | |
US10521114B2 (en) | Adding or removing a storage provider in unified storage manager |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |