CN115221139A - 文件读取方法、装置及节点设备 - Google Patents
文件读取方法、装置及节点设备 Download PDFInfo
- Publication number
- CN115221139A CN115221139A CN202210806197.2A CN202210806197A CN115221139A CN 115221139 A CN115221139 A CN 115221139A CN 202210806197 A CN202210806197 A CN 202210806197A CN 115221139 A CN115221139 A CN 115221139A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- node
- file
- port
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Abstract
本申请公开了一种文件读取方法、装置及节点设备,属于数据存储领域。该文件读取方法包括:获取目标系统文件的存储信息,该存储信息包括存储上述目标系统文件的N个数据节点的节点信息,N为正整数;向目标数据节点的第一端口发送第一读取请求,该目标数据节点为N个数据节点中的至少一个;接收目标数据节点通过上述第一端口反馈的目标系统文件的第一数据。
Description
技术领域
本申请属于数据存储领域,具体涉及一种文件读取方法、装置及节点设备。
背景技术
目前,分布式文件系统是一种允许文件来透过网络在多台主机上分享的文件系统,即用户可以通过分布式文件系统,透过网络,以特定的通信协议和服务器沟通,如此,可让多主机上的多用户通过服务器分享文件和分享存储空间。其中,上述分布式文件系统包括:谷歌文件系统(Google File System,GFS)、哈杜普分布式文件系统(HadoopDistributed File System,HDFS)、Lustre文件系统、Ceph文件系统、Grid文件系统、mogile文件系统、淘宝文件系统(Taobao File System,TFS)、快速分布式文件系统(FastDistributed File System,FastDFS);不同的分布式文件系统适用于不同的领域。
然而,由于分布式文件系统的跨计算机的特性,其需要依赖于网络的传输,因此,势必会比普通的本地文件系统更加复杂,从而导致在读取数据时,读取效率较低。
例如,以HDFS为例,HDFS集群是由一个管理节点(NameNode)和一定数目的数据节点(DateNode)组成的。当客户端从该HDFS系统读取某一文件时,则需要控制客户端先访问NameNode来查询该文件的存储位置列表,然后,根据该存储位置列表先找出离客户端最近的DateNode,并连接该DateNode,最后,DateNode以包为单位对该DateNode中存储的该文件的数据进行校验,再将校验完成后的数据发送给客户端。对于HDFS来说,当所要读取的文件存储在多个DateNode中时,需要按照DateNode离客户端由近到远的顺序依次进行读取,并且,由于每次读取文件时都需要以包为单位进行校验,从而导致校验过程比较耗时,降低了分布式文件系统的读取性能。
发明内容
本申请实施例的目的是提供一种文件读取方法、装置及节点设备,能够解决分布式文件系统的读取性能较低的问题。
第一方面,本申请实施例提供了一种文件读取方法,该方法包括:获取目标系统文件的存储信息,该存储信息包括存储上述目标系统文件的N个数据节点的节点信息,N为正整数;向目标数据节点的第一端口发送第一读取请求,该目标数据节点为上述N个数据节点中的至少一个;上述第一端口为上述目标数据节点针对上述第一读取请求为上述客户端开放的端口;接收目标数据节点通过上述第一端口反馈的目标系统文件的第一数据。
第二方面,本申请实施例提供了一种文件读取装置,该装置包括:获取模块、发送模块和接收模块。其中,获取模块,用于获取目标系统文件的存储信息,该存储信息包括存储上述目标系统文件的N个数据节点的节点信息,N为正整数。发送模块,用于向目标数据节点的第一端口发送第一读取请求,该目标数据节点为上述N个数据节点中的至少一个;接收模块,用于接收目标数据节点通过上述第一端口反馈的目标系统文件的第一数据。
第三方面,本申请实施例提供了一种文件读取方法,该方法包括:通过第一端口接收客户端发送的第一读取请求,上述第一读取请求用于请求读取目标数据节点中存储的目标系统文件的数据;向上述客户端反馈目标系统文件的第一数据。
第四方面,本申请实施例提供了一种节点设备,该节点设备包括:接收模块和反馈模块。其中,接收模块,用于通过第一端口接收客户端发送的第一读取请求;上述第一读取请求用于请求读取目标数据节点中存储的目标系统文件的数据;反馈模块,用于向上述客户端反馈目标系统文件的第一数据。
第五方面,本申请实施例提供了一种客户端,该客户端包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第六方面,本申请实施例提供了一种数据节点,该数据节点包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第三方面所述的方法的步骤。
第七方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤,或者实现如第三方面所述的方法的步骤。
第八方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法的步骤,或者实现如第三方面所述的方法的步骤。
第九方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法的步骤,或者实现如第三方面所述的方法的步骤。
在本申请实施例中,当用户想要读取数据节点中所存储的目标系统文件时,客户端可以获取该目标系统文件的存储信息(包括存储目标系统文件的N个数据节点的节点信息),并向N个数据节点中的至少一个目标数据节点的第一端口发送第一读取请求,最后,接收目标数据节点通过该第一端口反馈的该目标系统文件的第一数据。如此,通过设置专用的第一端口,使得客户端在向目标数据节点的第一端口发送读取请求后,便可使目标数据节点可以使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
附图说明
图1是本申请实施例提供的一种分布式文件系统的结构示意图;
图2是本申请实施例提供的一种文件读取方法的流程示意图之一;
图3是本申请实施例提供的一种文件读取方法的流程示意图之二;
图4是本申请实施例提供的一种文件读取装置的结构示意图;
图5是本申请实施例提供的一种节点设备的结构示意图;
图6是本申请实施例提供的一种通信设备的结构示意图;
图7是本申请实施例提供的一种客户端的硬件结构示意图;
图8是本申请实施例提供的一种数据节点的硬件示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的文件读取方法、装置及节点设备进行详细地说明。
本申请实施例提供的文件读取方法应用于分布式文件系统。其中,分布式文件系统是一种允许文件透过网络在多台主机上分享的文件系统,其可让多台主机上的多个用户分享文件和存储空间。在这样的文件系统中,客户端并非直接访问底层的资料存储区块,而是透过网络,以特定的通信协议和服务器沟通。其中,常见的分布式文件系统有GFS、HDFS、Lustre、Ceph、GridFS、mogileFS、TFS、FastDFS等。
如图1所示,该分布式文件系统通常包含一个中心服务器11、多个数据节点12和多个客户端13。其中,中心服务器11是用于负责文件和目录的创建、删除和重命名等,同时管理着数据节点12和文件块的映射关系;数据节点12是用于负责数据的存储和读取;客户端13可以对中心服务器11进行访问操作,对数据节点12进行读取或写入操作。
在相关技术中,分布式文件系统由于其跨计算机的特性,所以依赖于网络进行传输,导致其势必会比普通的本地文件系统更加复杂。因此,如何快速并且准确的读取到需要的数据,这就是一个很大的挑战。
举例说明,在向分布式文件系统中存储文件的相关技术中,以HDFS为例,作为分布式文件系统中的佼佼者,HDFS采用管理者(master)/服务者(slave)架构,其是由一个NameNode和一定数目的DataNode组成。其中,NameNode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问;DataNode是数据节点,负责管理它所在节点上的存储。具体来说,NameNode可以执行与文件系统中的名字空间有关的操作,比如打开、关闭、重命名文件或目录,其也负责确定数据块到具体DataNode的映射关系;而DataNode负责处理客户端对文件系统的读写请求。由于HDFS公开了文件系统的名字空间,使得用户能够以文件的形式在该文件系统上存储数据。从内部来看,用户在存储文件时,该文件其实被分成一个或多个数据块,然后,这些数据块存储在一组DataNode上。
当用户想要在HDFS中读取某一文件时,客户端可以先访问NameNode,来查询存储信息,以获取该文件的数据块存储位置列表;然后客户端按照该存储位置列表先挑选一个离客户端最近的DataNode,并与该DataNode的原生接口建立连接;最后该DataNode通过该原生接口发送其存储的客户端所要读取的文件的数据,并在发送之前以包为单位对该数据进行校验,而进行校验的数据包的默认大小为64KB,因此,导致该校验过程比较耗时。
在本申请实施例提供的文件读取方法、装置及节点设备中,当用户想要读取数据节点中所存储的目标系统文件时,客户端可以获取该目标系统文件的存储信息(包括存储目标系统文件的N个数据节点的节点信息),并向N个数据节点中的至少一个目标数据节点的第一端口发送第一读取请求,最后,接收目标数据节点通过该第一端口反馈的该目标系统文件的第一数据。如此,通过设置专用的第一端口,使得客户端在向目标数据节点的第一端口发送读取请求后,便可使目标数据节点可以使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
本申请实施例提供一种文件读取方法,本实施例提供的文件读取方法的执行主体可以为文件读取装置,该文件读取装置可以为客户端,也可以为该客户端中的控制模块或处理模块等。以执行主体为客户端为例,如图2所示,该文件读取方法可以包括如下步骤201至步骤203:
步骤201:客户端获取目标系统文件的存储信息。
在本申请实施例中,上述存储信息包括:存储该目标系统文件的N个数据节点的节点信息,N为正整数。示例性地,该数据节点的节点信息包括但不限于:数据节点的名称、数据节点的位置、数据节点的排列顺序。
在本申请实施例中,上述存储信息还可以包括每个数据节点中用于存储目标系统文件的数据的数据块信息,其中,该数据块信息包括但不限于:数据块的名称、数据块大小、数据块的数量和数据块中的数据偏移量。
在本申请实施例中,上述目标系统文件可能存储在一个数据节点中,也可能存储在多个数据节点中。
可选地,在本申请实施例中,客户端可以从中心服务器获取目标系统文件的存储信息。进一步的,客户端可以通过调用第二端口(即连接分布式文件系统的原生端口)从中心服务器获取目标系统文件的存储信息。
可选地,在本申请实施例中,上述步骤201中“客户端获取目标系统文件的存储信息”可以包括步骤201a和步骤201b:
步骤201a:客户端向中心服务器发送第二读取请求。
在本申请实施例中,上述第二读取请求用于请求读取目标系统文件的存储信息。
在本申请实施例中,客户端可以通过向中心服务器发送读取目标系统文件的存储信息的第二读取请求,以请求中心服务器反馈目标系统文件的存储信息。
步骤201b:客户端接收中心服务器发送的目标系统文件的存储信息。
在本申请实施例中,该目标系统文件可以被划分为多个数据块(Block),然后将这些数据块(Block)存放在一个或多个数据节点中。因此,当中心服务器接收到客户端发送的第二读取请求后,便可将存储有目标系统文件的数据块(Block)的数据节点的节点信息反馈给客户端。
如此,客户端通过从中心服务器获取目标系统文件对应的存储信息,便可准确的确定出存储有目标系统文件的数据的数据节点,进而便可精准的从相应的数据节点中读取数据,提高了数据的读取准确度。
步骤202:客户端向目标数据节点的第一端口发送第一读取请求。
在本申请实施例中,上述目标数据节点为N个数据节点中的至少一个。换句话说,客户端所要读取的文件可能存储在一个数据节点中,也可能存储在多个数据节点中。
在本申请实施例中,上述第一读取请求用于请求读取目标系统文件的数据。
需要说明的是,上述第一端口是目标数据节点针对第一读取请求为客户端开放的端口。也即上述第一端口为专用于本次文件读取的端口,且该第一端口为用于传输数据的虚拟网络端口。此外,该第一端口为一个套接字端口,该套接字端口可以实现数据传输的并发服务。
步骤203:客户端接收目标数据节点通过第一端口反馈的目标系统文件的第一数据。
其中,上述第一数据是目标数据节点响应第一读取请求后通过第一端口所反馈的。
在本申请实施例中,客户端可以在向目标数据节点发送第一读取请求之后,接收目标数据节点反馈的目标系统文件的第一数据。具体的,可以接收目标数据节点通过第一端口反馈的目标系统文件的第一数据。
在本申请实施例提供的文件读取方法中,当用户想要读取数据节点中所存储的目标系统文件时,客户端可以获取该目标系统文件的存储信息(包括存储目标系统文件的N个数据节点的节点信息),并向N个数据节点中的至少一个目标数据节点的第一端口发送第一读取请求,最后,接收目标数据节点通过该第一端口反馈的该目标系统文件的第一数据。如此,通过设置专用的第一端口,使得客户端在向目标数据节点的第一端口发送读取请求后,便可使目标数据节点可以使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
可选地,上述第一读取请求包括:第一数据块的名称,第一数据块中需要读取的第一长度。其中,上述第一数据块为:目标数据节点中用于存储目标系统文件的数据的数据块。需要说明的是,上述第一长度为第一数据块中目标系统文件的数据的实际存储长度。
在一种可能的示例中,客户端在获取到目标系统文件的存储信息后,可以根据存储信息中包括的数据块的数量,得出目标系统文件是否需要跨数据块读取;并且,还可以根据存储信息中包括的数据块中的数据偏移量,计算出每个数据块中目标系统文件的数据的长度,进而计算出每个数据块所要读取的的长度(即第一长度)。
需要说明的是,上述数据偏移量是指,客户端所要读取的文件的数据在数据块中存储的实际起始位置与该数据块的起始位置之间的差值。
可选地,在本申请实施例中,在第一读取请求包括第一数据块中需要读取的第一长度时,在上述步骤203之后,本申请实施例提供的文件读取方法还可以包括如下步骤301:
步骤301:客户端在第一数据的数据长度与第一长度不同,或者,目标数据节点发生异常的情况下,向第一数据节点发送第三读取请求。
其中,上述第一数据节点为:N个数据节点中除目标数据节点以外的其他数据节点。
在本申请实施例中,上述第三读取请求用于请求读取目标系统文件的数据。
需要说明的是,在将目标系统文件写入分布式文件系统时,会对相同的数据进行多个备份,存储在不同的数据节点中,以防止当一个数据节点发生异常时,无法读取该数据。
在本申请实施例中,当客户端接收到目标数据节点反馈的目标系统文件的第一数据后,可以将第一数据的长度与上述第一读取请求中的第一长度进行比较,如果发现长度不同,或者,客户端接收到目标数据节点的异常,则可以向存储该第一数据的其他数据节点发送第三读取请求。换句话说,可以换一个数据节点进行文件读取。
如此,客户端在发现接收到的数据长度不对或者目标数据节点异常时,可以从存储该数据的其他数据节点中读取到正确的数据,保证了数据读取的准确性。
可选地,在本申请实施例中,在上述目标数据节点包括M个第二数据节点的情况下,上述步骤202中“客户端向目标数据节点的第一端口发送第一读取请求”可以包括步骤202a:
步骤202a:客户端并行向每个第二数据节点的第一端口发送第一读取请求。
其中,M为小于或等于N的正整数。
进一步可选地,结合上述步骤202a,上述步骤203中“客户端接收目标数据节点通过第一端口反馈的目标系统文件的第一数据”可以包括步骤203a:
步骤203a:客户端接收每个第二数据节点分别响应第一读取请求通过第一端口所反馈的目标系统文件的M个第一数据。
如此,客户端通过并行向多个数据节点发送读取请求,并且同时接收多个数据节点发送的数据,大大提高了分布式文件系统的读取性能,进而提高了后续的数据处理效率。
可选地,在本申请实施例中,在上述步骤203a之后,本申请实施例提供的文件读取方法还可以包括如下步骤302:
步骤302:客户端将M个第一数据进行数据拼接,得到目标系统文件的目标数据。
在本申请实施例中,在将目标系统文件写入分布式文件系统时,通常会将该目标系统文件的数据划分为M个第一数据,并将这M个第一数据分别存储在M个第二数据节点中。如此,当客户端读取目标系统文件时,可以同时接收该M个第二数据节点分别反馈的M个第一数据,然后将该M个第一数据进行拼接,以得到目标系统文件的原始目标数据。
如此,通过将接收到的多个数据进行拼接,以得到目标系统文件的原始数据,保证了所读取的目标系统文件的完整性。
本申请实施例提供一种文件读取方法,该文件读取方法的执行主体为数据节点,以该数据节点为目标数据节点为例,如图3所示,该文件读取方法可以包括如下步骤401和步骤402:
步骤401:目标数据节点通过第一端口接收客户端发送的第一读取请求。
在本申请实施例中,上述第一读取请求用于请求读取目标数据节点中存储的目标系统文件的数据。
需要说明的是,上述第一端口为目标数据节点针对第一读取请求为客户端开放的端口;也即上述第一端口为专用于本次文件读取的端口,且该第一端口为用于传输数据的虚拟网络端口。此外,该第一端口为一个套接字端口,该套接字端口可以实现数据传输的并发服务。
可选地,上述第一读取请求包括:第一数据块的名称,第一数据块中需要读取的第一长度。其中,上述第一数据块为:上述目标数据节点中用于存储目标系统文件的数据的数据块。需要说明的是,上述第一长度为第一数据块中目标系统文件的数据的实际存储长度。
步骤402:目标数据节点通过第一端口向客户端反馈目标系统文件的第一数据。
在本申请实施例中,目标数据节点可以在接收到客户端发送的第一读取请求之后,向客户端反馈目标系统文件的第一数据。具体的,可以通过第一端口向客户端反馈的目标系统文件的第一数据。
可选地,在本申请实施例中,在上述步骤401之前,本申请实施例提供的文件读取方法还可以包括如下步骤501:
步骤501:目标数据节点启动该目标数据节点中的目标服务,通过目标服务为客户端建立第一端口。
在本申请实施例中,分布式文件系统中的每个目标数据节点均可以在自己的节点上启动一个服务程序,该服务程序会定期扫描自己所在目标数据节点的存储目录,并将该目标数据节点中的数据块名称和数据块的本地文件存储路径的映射关系保存在自己的内存中。同时,每个目标数据节点上的服务程序都可以对外开放一个端口号,以用于后续进行接收读取请求和反馈数据,而为了避免与已使用的端口号重复,可以开放一个大一点的端口号。
在本申请实施例中,目标数据节点在收到客户端发送的第一读取请求后,可以解析该第一读取请求中包括的,第一数据块的名称和第一数据块中需要读取的第一长度。然后,从目标数据节点的内存中查找上述第一数据块的本地存储路径,如果查询失败,则该目标数据节点上的服务程序会重新扫描一次该目标数据节点的存储目录,以查询到第一数据块的正确的本地存储路径。
可选地,在本申请实施例中,在第一读取请求包括第一数据块中需要读取的第一长度的情况下,在上述步骤402之前,本申请实施例提供的文件读取方法还可以包括如下步骤502:
步骤502:目标数据节点从第一数据块中读取第一长度的第一数据。
在本申请实施例中,目标数据节点在接收到第一读取请求后,由于第一数据块中可能包含多个系统文件的数据,因此,需要先根据第一读取请求中包括的第一数据块中需要读取的第一长度,从第一数据块中读取该第一长度的目标系统文件的第一数据,然后,再将读取到的第一数据反馈给客户端。
示例性地,目标数据节点在反馈目标系统文件的第一数据时,可以使用本地文件流的方式从文件中读取指定长度的数据,并将该数据通过套接字的形式返回给客户端。
需要说明的是,上述本地文件流是指对目标数据节点本地存储的目标系统文件的数据直接进行读取的数据流方式。
在本申请实施例提供的文件读取方法中,目标数据节点在通过第一端口接收到客户端发送的第一读取请求后,可以通过该第一端口向客户端反馈目标系统文件的第一数据。如此,通过设置专用的第一端口,使得目标数据节点在通过第一端口接收到客户端发送的第一读取请求后,便可使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
以下将对本申请实施例提供的文件读取方法进行示例性说明:
示例性地,以HDFS为例,本申请提供的文件读取方法可以包括如下步骤S1至步骤S6:
步骤S1:在开始进行数据读取流程后,HDFS可以在其包括的每个DateNode上启动一个服务程序,该服务程序会定期扫描该HDFS存储目录下的数据块,并将该数据块的名称和该数据块的本地存储路径的映射关系保存在内存中,同时对外开放一个套接字连接端口。
步骤S2:客户端调用HDFS的原生端口,以获取客户端所要读取的文件所在的DateNode和具体的数据块的名称,并计算出所要读取的每个数据块的读取长度。
步骤S3:客户端直接连接其所要读取的文件的数据所在的DateNode上启动的服务程序,并向该服务程序发送包括所要读取的数据块的名称和读取长度的读取请求。并且,当所要读取的文件的数据在多个数据块中时,可以并行连接多个DateNode上启动的服务程序进行读取。
步骤S4:当DateNode上启动的服务程序接收到客户端发送的读取请求之后,将会解析该读取请求中包括的所要读取的数据块的名称和读取长度。然后从之前扫描后保存在内存中的映射关系中查找与该数据块的名称对应的本地存储路径。若查找失败,则该服务程序会重新启动一次扫描过程。
步骤S5:在查找到该数据块对应的本地存储路径后,DateNode会根据读取请求中包括的数据块的读取长度,使用本地文件流的方式从本地存储的文件中读取上述长度的数据。在读取成功后,将该数据通过套接字的方式返回给客户端。
步骤S6:在客户端收到DateNode返回的数据后,可以比较返回数据的长度和读取请求中包括的所要读取的数据块的读取长度是否相同,若发现长度不同,或者接收到DateNode的异常,则可以连接另一个DateNode上启动的服务程序读取数据(因为,该HDFS上的数据有三个完全相同的备份存储在不同的DateNode上)。此外,如果客户端是并行读取多个DateNode上的数据,则需要在多个DateNode返回多个数据后,将该多个数据拼接起来,以得到最终所要读取的完整的数据。最后,结束数据读取流程。
如此,在读取数据时,未采用原生的HDFS读取端口,而是客户端直接连接DataNode上的服务程序进行读取,省去了原生接口校验的过程,而且还可以并行从多个DataNode中读取数据,大大提高了HDFS文件的读取性能,进而提高了后续的数据并行分析与处理效率。进一步地,采用该读取方案,相比于现有的方案,该方案的兼容性强,适用于Master/Slave架构的分布式文件系统;安全可靠,有容错处理机制,如果一个DataNode中数据读取失败,则可以去备份数据的DataNode上进行数据读取。
本申请实施例提供的文件读取方法,执行主体可以为文件读取装置。本申请实施例中以文件读取装置执行文件读取方法为例,说明本申请实施例提供的文件读取装置。
本申请实施例提供一种文件读取装置,如图4所示,该文件读取装置600包括:获取模块601、发送模块602和接收模块603,其中:上述获取模块601,用于获取目标系统文件的存储信息,存储信息包括存储目标系统文件的N个数据节点的节点信息,N为正整数;上述发送模块602,用于向目标数据节点的第一端口发送第一读取请求,目标数据节点为N个数据节点中的至少一个;上述接收模块603,用于接收目标数据节点通过第一端口反馈的目标系统文件的第一数据。
可选地,在本申请实施例中,上述发送模块602,还用于向中心服务器发送第二读取请求;第二读取请求用于请求读取目标系统文件对应的存储信息;上述接收模块603,还用于接收中心服务器发送的目标系统文件的存储信息。
可选地,在本申请实施例中,存储信息还包括:每个所述目标数据节点中用于存储目标系统文件的数据的数据块信息;数据块信息包括数据块的名称和数据块大小;第一读取请求包括:第一数据块的名称,第一数据块中需要读取的第一长度;第一数据块为:目标数据节点中用于存储目标系统文件的数据的数据块。
可选地,在本申请实施例中,上述发送模块602,还用于在接收模块603接收到目标数据节点通过第一端口反馈的目标系统文件的第一数据之后,在第一数据的数据长度与第一长度不同,或者,目标数据节点发生异常的情况下,向第一数据节点发送第三读取请求;其中,第一数据节点为:N个数据节点中除目标数据节点以外的其他数据节点,第三读取请求用于请求读取目标系统文件的数据。
可选地,在本申请实施例中,目标数据节点包括M个第二数据节点;M为小于或等于N的正整数;上述发送模块602,具体用于并行向每个第二数据节点的第一端口发送第一读取请求;上述接收模块603,具体用于接收每个第二数据节点分别响应发送模块602发送的第一读取请求通过第一端口所反馈的目标系统文件的M个第一数据。
可选地,在本申请实施例中,上述文件读取装置还包括:处理模块,其中,上述处理模块,用于在接收模块603接收到每个第二数据节点分别响应第一读取请求通过第一端口所反馈的目标系统文件的M个第一数据之后,将M个第一数据进行数据拼接,得到目标系统文件的目标数据。
本申请实施例提供的文件读取装置中,当用户想要读取数据节点中所存储的目标系统文件时,该文件读取装置可以获取该目标系统文件的存储信息(包括存储目标系统文件的N个数据节点的节点信息),并向N个数据节点中的至少一个目标数据节点的第一端口发送第一读取请求,最后,接收目标数据节点通过该第一端口反馈的该目标系统文件的第一数据。如此,通过设置专用的第一端口,使得客户端在向目标数据节点的第一端口发送读取请求后,便可使目标数据节点可以使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
本申请实施例提供一种节点设备,如图5所示,该节点设备700包括:接收模块701和反馈模块702,其中,上述接收模块701,用于通过第一端口接收客户端发送的第一读取请求;该第一读取请求用于请求读取目标数据节点中存储的目标系统文件的数据;上述反馈模块702,用于通过第一端口向客户端反馈目标系统文件的第一数据。
可选地,在本申请实施例中,第一读取请求包括:第一数据块的名称,第一数据块中需要读取的第一长度;第一数据块为:目标数据节点中用于存储目标系统文件的数据的数据块;上述节点设备700还包括:读取模块,其中,上述读取模块,用于在反馈模块702向客户端反馈目标系统文件的第一数据之前,从第一数据块中读取第一长度的所述第一数据。
可选地,在本申请实施例中,上述节点设备700还包括:处理模块,其中,上述处理模块,用于在接收模块701通过第一端口接收客户端发送第一读取请求之前,启动目标数据节点中的目标服务,通过目标服务为客户端建立第一端口。
在本申请实施例提供的文件读取装置中,该文件读取装置在通过第一端口接收到客户端发送的第一读取请求后,可以通过该第一端口向客户端反馈目标系统文件的第一数据。如此,通过设置专用的第一端口,使得目标数据节点通过第一端口接收到客户端发送的第一读取请求后,便可使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
本申请实施例中的文件读取装置可以是客户端,也可以是客户端中的部件,例如集成电路或芯片。该客户端可以是终端,也可以为除终端之外的其他设备。示例性的,客户端可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(MobileInternet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的文件读取装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为iOS操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的文件读取装置能够实现图2和图3的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图6所示,本申请实施例还提供一种通信设备800,包括处理器801和存储器802,存储器802上存储有可在所述处理器801上运行的程序或指令,例如,该通信设备为客户端时,该程序或指令被处理器801执行时实现上述客户端侧文件读取方法实施例的各个步骤,且能达到相同的技术效果。该通信设备为数据节点时,该程序或指令被处理器801执行时实现上述数据节点侧文件读取方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的客户端包括上述所述的移动客户端和非移动客户端。
图7为实现本申请实施例的一种客户端的硬件结构示意图。
该客户端100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、以及处理器110等部件。
本领域技术人员可以理解,客户端100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图7中示出的客户端结构并不构成对客户端的限定,客户端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,上述处理器110,用于获取目标系统文件的存储信息,存储信息包括存储目标系统文件的N个数据节点的节点信息,N为正整数;上述射频单元101,用于向目标数据节点的第一端口发送第一读取请求,目标数据节点为N个数据节点中的至少一个;上述输入单元104,用于接收目标数据节点通过第一端口反馈的目标系统文件的第一数据。
可选地,在本申请实施例中,上述射频单元101,还用于向中心服务器发送第二读取请求;第二读取请求用于请求读取目标系统文件对应的存储信息;上述输入单元104,还用于接收中心服务器发送的目标系统文件对应的存储信息。
可选地,在本申请实施例中,存储信息还包括:每个所述数据节点中用于存储目标系统文件的数据的数据块信息;数据块信息包括数据块的名称和数据块大小;第一读取请求包括:第一数据块的名称,第一数据块中需要读取的第一长度;第一数据块为:目标数据节点中用于存储目标系统文件的数据的数据块。
可选地,在本申请实施例中,上述射频单元101,还用于在输入单元104接收到目标数据节点通过第一端口反馈的目标系统文件的第一数据之后,在第一数据的数据长度与第一长度不同,或者,目标数据节点发生异常的情况下,向第一数据节点发送第三读取请求;其中,第一数据节点为:N个数据节点中除目标数据节点以外的其他数据节点,第三读取请求用于请求读取目标系统文件的数据。
可选地,在本申请实施例中,目标数据节点包括M个第二数据节点;M为小于或等于N的正整数;上述射频单元101,具体用于并行向每个第二数据节点的第一端口发送第一读取请求;上述输入单元104,具体用于接收每个第二数据节点分别响应射频单元101发送的第一读取请求通过第一端口所反馈的目标系统文件的M个第一数据。
可选地,在本申请实施例中,上述处理器110,还用于在输入单元104接收到每个第二数据节点分别响应第一读取请求通过第一端口所反馈的目标系统文件的M个第一数据之后,将M个第一数据进行数据拼接,得到目标系统文件的目标数据。
本申请实施例提供的客户端中,当用户想要读取数据节点中所存储的目标系统文件时,客户端可以获取该目标系统文件的存储信息(包括存储目标系统文件的N个数据节点的节点信息),并向N个数据节点中的至少一个目标数据节点的第一端口发送第一读取请求,最后,接收目标数据节点通过该第一端口反馈的该目标系统文件的第一数据如此,通过设置专用的第一端口,使得客户端在向目标数据节点的第一端口发送读取请求后,便可使目标数据节点可以使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
应理解的是,本申请实施例中,输入单元104可以包括图形处理器(GraphicsProcessing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元106可包括显示面板1061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板1061。用户输入单元107包括触控面板1071以及其他输入设备1072中的至少一种。触控面板1071,也称为触摸屏。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器109可以包括易失性存储器或非易失性存储器,或者,存储器109可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器109包括但不限于这些和任意其它适合类型的存储器。
处理器110可包括一个或多个处理单元;可选的,处理器110集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
本申请实施例还提供了一种数据节点。如图8所示,该数据节点900包括:处理器901、网络接口902和存储器903。其中,网络接口902例如为通用公共无线接口(commonpublic radio interface,CPRI)。
具体地,本发明实施例的数据节点900还包括:存储在存储器903上并可在处理器901上运行的指令或程序,处理器901调用存储器903中的指令或程序执行图5所示各模块执行的方法,并达到相同的技术效果,为避免重复,故不在此赘述。
其中:上述网络接口902,用于通过第一端口接收客户端发送的第一读取请求;该第一读取请求用于请求读取目标数据节点中存储的目标系统文件的数据;上述网络接口902,还用于通过第一端口向客户端反馈目标系统文件的第一数据。
可选地,在本申请实施例中,第一读取请求包括:第一数据块的名称,第一数据块中需要读取的第一长度;第一数据块为:目标数据节点中用于存储目标系统文件的数据的数据块;上述处理器901,用于在网络接口902向客户端反馈目标系统文件的第一数据之前,从第一数据块中读取第一长度的所述第一数据。
可选地,在本申请实施例中,上述处理器901,还用于在网络接口902通过第一端口接收客户端发送第一读取请求之前,启动目标数据节点中的目标服务,通过目标服务为客户端建立第一端口。
在本申请实施例提供的数据节点中,目标数据节点在通过第一端口接收到客户端发送的第一读取请求后,可以通过该第一端口向客户端反馈目标系统文件的第一数据。如此,通过设置专用的第一端口,使得目标数据节点在通过第一端口接收到客户端发送的第一读取请求后,便可使用本地文件流的方式直接向客户端反馈数据,无需对该目标系统文件的第一数据进行校验,从而提高了数据的读取效率。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述文件读取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的客户端中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述文件读取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述文件读取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种文件读取方法,其特征在于,所述方法包括:
获取目标系统文件的存储信息,所述存储信息包括存储所述目标系统文件的N个数据节点的节点信息,N为正整数;
向目标数据节点的第一端口发送第一读取请求,所述目标数据节点为所述N个数据节点中的至少一个;
接收所述目标数据节点通过所述第一端口反馈的所述目标系统文件的第一数据。
2.根据权利要求1所述的方法,其特征在于,所述存储信息还包括:每个所述数据节点中用于存储所述目标系统文件的数据的数据块信息;
所述数据块信息包括所述数据块的名称和数据块大小;
所述第一读取请求包括:第一数据块的名称,所述第一数据块中需要读取的第一长度;所述第一数据块为:所述目标数据节点中用于存储所述目标系统文件的数据的数据块。
3.根据权利要求2所述的方法,其特征在于,所述接收所述目标数据节点通过所述第一端口反馈的所述目标系统文件的第一数据之后,所述方法还包括:
在所述第一数据的数据长度与所述第一长度不同,或者,所述目标数据节点发生异常的情况下,向第一数据节点发送第三读取请求;
其中,所述第一数据节点为:所述N个数据节点中除所述目标数据节点以外的其他数据节点,所述第三读取请求用于请求读取所述目标系统文件的数据。
4.一种文件读取方法,其特征在于,所述方法包括:
通过第一端口接收客户端发送的第一读取请求;所述第一读取请求用于请求读取所述目标数据节点中存储的目标系统文件的数据;
通过所述第一端口向所述客户端反馈所述目标系统文件的第一数据。
5.根据权利要求4所述的方法,其特征在于,所述通过第一端口接收客户端发送第一读取请求之前,所述方法还包括:
启动所述目标数据节点中的目标服务,通过所述目标服务为所述客户端建立所述第一端口。
6.一种文件读取装置,其特征在于,所述装置包括:获取模块、发送模块和接收模块;
所述获取模块,用于获取目标系统文件的存储信息,所述存储信息包括存储所述目标系统文件的N个数据节点的节点信息,N为正整数;
所述发送模块,用于向目标数据节点的第一端口发送第一读取请求,所述目标数据节点为所述N个数据节点中的至少一个;
所述接收模块,用于接收所述目标数据节点通过所述第一端口反馈的所述目标系统文件的第一数据。
7.根据权利要求6所述的装置,其特征在于,所述存储信息还包括:每个所述数据节点中用于存储所述目标系统文件的数据的数据块信息;
所述数据块信息包括所述数据块的名称和数据块大小;
所述第一读取请求包括:第一数据块的名称,所述第一数据块中需要读取的第一长度;所述第一数据块为:所述目标数据节点中用于存储所述目标系统文件的数据的数据块。
8.根据权利要求7所述的装置,其特征在于,
所述发送模块,还用于在所述接收模块接收到所述目标数据节点通过所述第一端口反馈的所述目标系统文件的第一数据之后,在所述第一数据的数据长度与所述第一长度不同,或者,所述目标数据节点发生异常的情况下,向第一数据节点发送第三读取请求;
其中,所述第一数据节点为:所述N个数据节点中除所述目标数据节点以外的其他数据节点,所述第三读取请求用于请求读取所述目标系统文件的数据。
9.一种节点设备,其特征在于,所述节点设备包括:接收模块和反馈模块;
所述接收模块,用于通过第一端口接收客户端发送的第一读取请求;所述第一读取请求用于请求读取所述目标数据节点中存储的目标系统文件的数据;
所述反馈模块,用于通过第一端口向所述客户端反馈所述目标系统文件的第一数据。
10.根据权利要求9所述的节点设备,其特征在于,所述装置还包括:处理模块;
所述处理模块,用于在所述接收模块通过第一端口接收客户端发送第一读取请求之前,启动所述目标数据节点中的目标服务,通过所述目标服务为所述客户端建立所述第一端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210806197.2A CN115221139A (zh) | 2022-07-08 | 2022-07-08 | 文件读取方法、装置及节点设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210806197.2A CN115221139A (zh) | 2022-07-08 | 2022-07-08 | 文件读取方法、装置及节点设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115221139A true CN115221139A (zh) | 2022-10-21 |
Family
ID=83609229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210806197.2A Pending CN115221139A (zh) | 2022-07-08 | 2022-07-08 | 文件读取方法、装置及节点设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221139A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941786A (zh) * | 2022-11-23 | 2023-04-07 | 金篆信科有限责任公司 | 数据库中的数据包传输方法、装置、设备及介质 |
-
2022
- 2022-07-08 CN CN202210806197.2A patent/CN115221139A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941786A (zh) * | 2022-11-23 | 2023-04-07 | 金篆信科有限责任公司 | 数据库中的数据包传输方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190266134A1 (en) | Data migration method, apparatus, and storage medium | |
JP2021512379A (ja) | ブロックチェーンベースのスマートコントラクト呼び出し方法および装置、および電子デバイス | |
CN100555279C (zh) | 不用快照的项同步系统和方法 | |
US20160110377A1 (en) | Method for synchronizing file | |
CN111666129B (zh) | 容器镜像处理方法、电子设备、存储介质及系统 | |
US9146937B2 (en) | Client-based data replication | |
CN100473070C (zh) | 一种具有存储功能的usb设备在网络计算机上的映射方法 | |
US9401957B2 (en) | System and method for synchronization between servers | |
US20140304384A1 (en) | Uploading large content items | |
CN105827683A (zh) | 一种数据同步的方法、服务器及电子设备 | |
CN112035420B (zh) | 数据共享方法、共享设备和系统 | |
CN110197075A (zh) | 资源访问方法、装置、计算设备以及存储介质 | |
EP2990947A1 (en) | Method and apparatus for backing up data and electronic device | |
US20170277622A1 (en) | Web Page Automated Testing Method and Apparatus | |
CN115221139A (zh) | 文件读取方法、装置及节点设备 | |
US20090234872A1 (en) | Synchronization of disconnected/offline data processing/entry | |
CN112243017A (zh) | 一种文件上传的方法和装置 | |
CN108491457A (zh) | 一种用于同步公共云资源的方法及设备 | |
CN114928620B (zh) | 用户信息同步方法、装置、设备、存储介质和程序产品 | |
US20130304868A1 (en) | System and method for communicating and managing data | |
CN108549695B (zh) | 数据交互方法、装置、终端设备及存储介质 | |
CN109445988A (zh) | 异构容灾方法、装置、系统、服务器和容灾平台 | |
CN114422537B (zh) | 多云存储系统、多云数据读写方法及电子设备 | |
CN114285839B (zh) | 一种文件传输方法、装置、计算机存储介质和电子设备 | |
CN111400266A (zh) | 数据处理方法和系统、操作事件的诊断处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |