CN102073741A - 一种实现文件读取和/或写入的方法以及数据服务器 - Google Patents
一种实现文件读取和/或写入的方法以及数据服务器 Download PDFInfo
- Publication number
- CN102073741A CN102073741A CN 201110032758 CN201110032758A CN102073741A CN 102073741 A CN102073741 A CN 102073741A CN 201110032758 CN201110032758 CN 201110032758 CN 201110032758 A CN201110032758 A CN 201110032758A CN 102073741 A CN102073741 A CN 102073741A
- Authority
- CN
- China
- Prior art keywords
- file
- information
- client
- hdfs
- data
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种实现文件读取和/或写入的方法,包括:第一HDFS客户端接收客户终端发送的文件读取信息和/或文件写入信息,第一HDFS客户端为预设的与客户终端默认对应的HDFS客户端;所述第一HDFS客户端根据所述文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息;所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入。本发明实施例还公开了一种数据服务器。采用本发明,可更加快捷简单地实现基于HDFS的文件的读取和写入,完成大数据量的存储;并且能方便地运行在各个普通的计算机上,大大地提高了系统的兼容性。
Description
技术领域
本发明涉及电子通信领域,尤其涉及一种实现文件读取和/或写入的方法以及一种数据服务器。
背景技术
Hadoop实现了一个分布式文件系统HDFS(Hadoop Distributed File System)。HDFS有着高容错性的特点,并且设计成可以部署在低廉的硬件上,而且HDFS提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。
如图1示出的现有技术中基于HDFS实现文件读写的系统结构示意图,该系统包括客户终端、名称服务器(NameNode)以及多个数据服务器(DataNode),该客户终端需要与NameNode和所有的DataNode相连接,即,需要与NameNode以及所有的DataNode进行交互,并且客户终端必需调用HDFS的专有函数才能完成文件的读取和写入,因此,用户需要掌握HDFS的专有函数才能完成文件的读取和写入,对用户的技术要求较高。另外,由于客户终端可以直接跟NameNode以及多个DataNode相连接,故存在攻击者容易非法地访问NameNode和DataNode,进行非法删除文件等操作,从而攻击破坏系统的隐患。
发明内容
本发明实施例所要解决的技术问题在于,提供一种实现文件读取和/或写入的方法以及一种数据服务器。解决了现有技术中用户需要掌握HDFS的专有函数才能完成文件的读取和写入,对用户的技术要求较高的问题,并提高了系统的安全性。
为了解决上述技术问题,本发明实施例提供了一种实现文件读取和/或写入的方法,包括:
第一HDFS客户端接收客户终端发送的文件读取信息和/或文件写入信息,所述第一HDFS客户端为预设的与所述客户终端默认对应的HDFS客户端;
所述第一HDFS客户端根据所述文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息;
所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入。
其中,当所述客户终端向所述第一HDFS客户端发送的是文件读取和/或文件写入信息时,所述所述第一HDFS客户端根据文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息的步骤包括:
所述第一HDFS客户端根据所述文件读取和/或文件写入信息向名称服务器发送文件节点查询信息;
所述名称服务器根据所述文件节点查询信息向所述第一HDFS客户端返回文件节点信息。
其中,当所述客户终端向所述第一HDFS客户端发送的是文件读取信息时,所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入的步骤包括:
所述第一HDFS客户端根据所述文件节点信息判断本端数据服务器是否存储有所述客户终端需要读取的文件数据;
当判断结果为是时,则向所述客户终端返回所述文件数据;
当判断结果为否时,则向所述客户终端返回携带有所述文件节点信息的重定向信息,所述客户终端接收到所述重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求,以读取所述第二HDFS客户端的数据服务器存储的文件数据;或者
当判断结果为否时,则根据所述文件节点信息主动向存储有所述文件数据的对端数据服务器发起读取请求,以获取所述文件数据,并向所述客户终端返回所述文件数据。
其中,所述当判断结果为否时,则向所述客户终端返回携带有所述文件节点信息的重定向信息,所述客户终端接收到所述重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求,以读取所述第二HDFS客户端的数据服务器存储的文件数据的步骤包括:
所述客户终端接收到所述重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求;
所述第二HDFS客户端根据所述文件读取请求向本端的数据服务器发送读取信息;
所述第二HDFS客户端接收到本端的数据服务器根据所述读取信息返回的文件数据后,向所述客户终端返回所述文件数据。
其中,当所述客户终端向所述第一HDFS客户端发送的是文件写入信息时,所述所述第一HDFS客户端根据文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息的步骤包括:
所述第一HDFS客户端向名称服务器发起文件写入请求;
所述名称服务器根据所述文件写入请求向所述第一HDFS客户端返回文件节点信息;
所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入的步骤包括:所述第一HDFS客户端将所述文件数据写入与所述文件节点信息对应的数据服务器。
其中,所述文件节点信息包括至少两个数据服务器信息;
所述第一HDFS客户端将所述文件数据写入与所述文件节点信息对应的数据服务器的步骤包括:所述第一HDFS客户端将所述文件数据写入与所述文件节点信息对应的至少两个数据服务器中。
相应地,本发明实施例还提供了一种数据服务器,包括HDFS客户端,所述HDFS客户端包括:
接收单元,用于接收客户终端发起的文件读取和/或文件写入请求;
查询信息发送单元,用于根据所述接收单元接收的文件读取和/或文件写入请求向名称服务器发送文件节点查询信息;
文件信息收发单元,用于根据所述名称服务器返回的文件节点信息向所述客户终端返回文件节点信息,以使所述客户终端读取或写入文件数据。
其中,所述数据服务器还包括用于存储文件数据的文件存储单元;所述文件信息收发单元还包括:
判断单元,用于根据所述文件节点信息判断所述文件存储单元是否存储有所述客户终端需要读取的文件数据和/或有足够的存储空间存放客户终端需要写入的文件数据;
第一返回单元,用于当所述判断单元的判断结果为是时,则向所述客户终端返回所述文件数据和/或存放客户终端需要写入的文件数据;
第二返回单元,用于当所述判断单元的判断结果为否时,则向所述客户终端返回携带有所述文件节点信息的重定向信息;所述客户终端接收到所述重定向信息后,根据所述文件节点信息向对应的HDFS客户端发起文件读取请求,以读取所述对应的HDFS客户端的数据服务器存储的文件数据。
其中,所述HDFS客户端还包括读取单元,用于根据所述接收单元接收的客户终端发起的文件读取请求向所述文件存储单元发送读取信息;
所述文件存储单元,用于根据所述读取信息向所述第一返回单元返回文件数据;
所述第一返回单元,用于向所述客户终端返回所述文件数据。
其中,所述接收单元还用于接收来自所述客户终端发送的文件数据;
所述HDFS客户端还包括写入请求发起单元和文件写入单元,其中
写入请求发起单元,用于当所述接收单元接收到文件数据时,向名称服务器发起文件写入请求;所述名称服务器根据所述文件写入请求向所述HDFS客户端返回文件节点信息;
文件写入单元,用于根据所述名称服务器返回的文件节点信息,将所述文件数据写入与所述文件节点信息对应的数据服务器。
实施本发明实施例,具有如下有益效果:
通过预设与客户终端默认对应的HDFS客户端,客户终端只需与该HDFS客户端进行交互即可完成文件的读取和写入,并且客户终端是基于FTP和/或TCP与HDFS客户端进行通信,即通过简单的、基本的访问调用指令就可完成文件的读取和写入,可以更加快捷简单地实现基于HDFS的文件的读取和写入,完成大数据量的存储;并且本发明的技术方案可以方便地运行在现有的普通的计算机上,NameNode和DataNode可以采用普通的个人计算机PC,无需昂贵的专用服务器,无需使用任何磁盘阵列,每一台PC级服务器只需配备普通的集成磁盘电子接口(IDE,Integrated Device Electronics)硬盘来存储文件即可,大大降低了成本;通过设置HDFS客户端,用户可以对非法操作进行拦截,有效避免了非法攻击,提高了系统的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中基于HDFS实现文件读写的系统结构示意图;
图2是本发明实施例的实现文件读取和/或写入的方法流程示意图;
图3是本发明实施例的实现文件写入的方法流程示意图;
图4是本发明实现文件读取的第一实施例的方法流程示意图;
图5是本发明实现文件读取的第二实施例的方法流程示意图;
图6是本发明实施例的文件读写系统的结构示意图;
图7是本发明第一数据服务器的第一实施例的结构示意图;
图8是本发明第一数据服务器的第二实施例的结构示意图;
图9是本发明第一数据服务器的第三实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图2示出的本发明实施例的实现文件读取和/或写入的方法流程示意图,包括:
步骤S201:第一HDFS客户端接收客户终端发送的文件读取信息和/或文件写入信息;
具体地,所述第一HDFS客户端为预设的与所述客户终端默认对应的HDFS客户端,当用户需要进行文件的写入操作时,可以使用客户终端与该第一HDFS客户端进行通信,向该第一HDFS客户端发送文件写入信息;或者当用户需要进行文件的读取操作时,可以使用客户终端与该第一HDFS客户端进行通信,向该第一HDFS客户端发送文件读取信息;或者当用户需要同时进行文件的写入和读取操作时,可以使用客户终端与该第一HDFS客户端进行通信,向该第一HDFS客户端发送文件写入信息和文件读取信息;该第一HDFS客户端接收到客户终端发送的文件读取信息和/或文件写入信息;需要说明的是,该第一HDFS客户端位于DataNode中,每个DataNode都对应有一个HDFS客户端,客户终端不需与每个DataNode直接进行交互,只需与默认对应的一个HDFS客户端交互即可。
步骤S202:所述第一HDFS客户端根据所述文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息;
具体地,名称服务器(NameNode)主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的元数据(Meta-data)存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等;该第一HDFS客户端根据所述文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息。
步骤S203:所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入。
NameNode和DataNode都安装有HDFS,NameNode通过HDFS管理DataNode;一个基于HDFS的文件读写系统有一个NameNode,若干DataNode,NameNode与DataNode之间是主从式链接(即,NameNode和每个DataNode链接);NameNode和DataNode都可以看作是独立的计算机;每个DataNode上都部署有一个HDFS客户端。
下面分别对本发明实施例的实现文件读取和实现文件写入两个方法流程进行说明:
如图3示出的本发明实施例的实现文件写入的方法流程示意图,包括:
步骤S301:第一HDFS客户端接收客户终端发送的文件写入信息;
具体地,当用户需要进行文件的写入操作时,使用客户端与该第一HDFS客户端进行通信,向该第一HDFS客户端发送文件写入信息,该文件写入信息可以直接为文件数据,即用户通过客户终端直接将需要写入的文件数据发送给第一HDFS客户端。
步骤S302:所述第一HDFS客户端向名称服务器发起文件写入请求;
具体地,该第一HDFS客户端接收到客户终端发送的文件数据后,向NmeNode发起文件写入请求。
步骤S303:所述名称服务器根据所述文件写入请求向所述第一HDFS客户端返回文件节点信息;
具体地,NameNode接收到第一HDFS客户端发起的文件写入请求后,查找可以存储该文件数据的文件节点信息(即DataNode信息),并向该第一HDFS客户端返回该文件节点信息。
步骤S304:所述第一HDFS客户端将所述文件数据写入与所述文件节点信息对应的数据服务器。
具体地,该第一HDFS客户端将该文件数据写入与该文件节点信息对应的DataNode中。
进一步地,为了保证文件数据的可靠性和安全性,NameNode向第一HDFS客户端返回的文件节点信息包括至少两个DataNode信息,以使第一HDFS客户端将文件数据存储在至少两个DataNode中,以保证某个DataNode出现故障,或某个DataNode上的数据被误删时,用户也可以读取到需要的文件,那么步骤S203中,NameNode向第一HDFS客户端返回的文件节点信息包括至少两个DataNode信息;步骤S204可以具体为:第一HDFS客户端根据上述文件节点信息,调用预设的系统函数将所述文件数据写入与所述文件节点信息对应的至少两个DataNode中。
需要说明的是,本发明实施例中的客户终端可以基于文件传输协议FTP和/或传输控制协议TCP与HDFS客户端进行通信。即,用户使用客户终端进行文件的写入或读取时,无需调用HDFS的专有函数,通过简单的、基本的访问调用指令就可完成文件的写入或读取,HDFS客户端接收到该访问调用指令后,将自动调用HDFS的专有函数进行文件的写入或读取,从而解决了现有技术中用户需要掌握HDFS的专有函数才能完成文件的读取和写入,对用户的技术要求较高的问题,可以更加快捷简单地实现基于HDFS的文件的读取和写入,完成大数据量的存储。
相应地,下面结合图4示出的本发明实现文件读取的第一实施例的方法流程示意图,详细说明本发明实现文件读取的方法,包括:
步骤S401:第一HDFS客户端接收客户终端发送的文件读取信息;
具体地,所述第一HDFS客户端为预设的与所述客户终端默认对应的HDFS客户端,用户需要进行文件的读取操作时,使用客户终端与该第一HDFS客户端进行通信,向该第一HDFS客户端发起文件读取信息,该文件读取信息可以为文件读取请求;需要说明的是,该第一HDFS客户端位于数据服务器(DataNode)中,每个DataNode都对应有一个HDFS客户端,客户终端不需与每个DataNode进行交互,只需与默认对应的一个HDFS客户端交互即可。
步骤S402:所述第一HDFS客户端根据所述文件读取请求向名称服务器发送文件节点查询信息;
具体地,该第一HDFS客户端接收到所述文件读取请求后,向NameNode发送文件节点查询信息,以查询存储有用户需要的文件数据的DataNode信息。
步骤S403:所述名称服务器根据所述文件节点查询信息向所述第一HDFS客户端返回文件节点信息;
具体地,NameNode接收到该文件节点查询信息后,查找存储有用户需要的文件数据的DataNode信息,并向该第一HDFS客户端返回该DataNode信息。
步骤S404:所述第一HDFS客户端根据所述文件节点信息向所述客户终端返回文件信息,以使所述客户终端读取到文件数据。
进一步地,详细说明第一HDFS客户端如何根据所述文件节点信息向所述客户终端返回文件信息,以使所述客户终端读取到文件数据;特别是当本端数据服务器没有存储所述客户终端需要读取的文件数据时,如何使上述客户终端读取到文件数据。如图5示出的本发明实现文件读取的第二实施例的方法流程示意图,包括:
步骤S501:第一HDFS客户端接收客户终端发送的文件读取信息;
步骤S502:所述第一HDFS客户端根据所述文件读取请求向名称服务器发送文件节点查询信息;
步骤S503:所述名称服务器根据所述文件节点查询信息向所述第一HDFS客户端返回文件节点信息;
具体地,步骤S501至步骤S503如上一实施例中步骤S401至步骤S403,这里不再赘述。
步骤S504:所述第一HDFS客户端根据所述文件节点信息判断本端数据服务器是否存储有所述客户终端需要读取的文件数据;
具体地,当判断结果为是时,则执行步骤S505;当判断结果为否时,表明NameNode返回的文件节点信息并非本端的DataNode,本端DataNode可能由于故障或者误删除等原因没有存储所述客户终端需要读取的文件数据,而其他的DataNode存储有所述客户终端需要读取的文件数据,则执行步骤S506。需要说明的是,若基于HDFS的文件读写系统含有多个(大于两个)DataNode时,DataNode在正常情况下也可能没有用户需要的文件;若基于HDFS的文件读写系统只含有两个DataNode时,正常情况下每个DataNode都有用户所需的文件。
步骤S505:所述第一HDFS客户端向所述客户终端返回所述文件数据;
步骤S506:所述第一HDFS客户端向所述客户终端返回携带有所述文件节点信息的重定向信息;
具体地,所述第一HDFS客户端向所述客户终端返回的携带有所述文件节点信息的重定向信息,表明指示该客户终端需要重新进行读取请求;该文件节点信息含有当前哪个DataNode存储有用户需要的文件数据的信息,该客户终端根据重定向信息向存储有用户需要的文件数据的DataNode对应的HDFS客户端发起读取请求,以获取文件数据。
步骤S507:客户终端接收到所述重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求,以读取所述第二HDFS客户端的数据服务器存储的文件数据。
进一步地,步骤S507可以包括如下步骤:所述客户终端接收到重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求;所述第二HDFS客户端根据所述文件读取请求向本端的数据服务器发送读取信息;所述第二HDFS客户端接收到本端的数据服务器根据所述读取信息返回的文件数据后,向所述客户终端返回所述文件数据。
需要说明的是,当步骤S504的判断结果为否时,该第一HDFS客户端可以不执行步骤S506,而执行如下步骤:该第一HDFS客户端根据该文件节点信息主动向存储有用户需要的文件数据的其它DataNode发起读取请求,以获取其它DataNode中文件数据,然后再向客户终端返回该文件数据;但是该步骤表明文件数据将先从一个DataNode传送到另一个DataNode,然后再从该DataNode传送给客户终端,因此文件的读取速度将受到影响。进一步地,当步骤S504的判断结果为否时,该第一HDFS客户端可以按照默认设置默认选择执行步骤S506或主动向存储有用户需要的文件数据的其它DataNode发起读取请求,还可以提供用户进行选择,并根据用户输入的选择信息执行步骤S506或主动向存储有用户需要的文件数据的其它DataNode发起读取请求。
还需要说明的是,本发明实施例中的客户终端可以基于FTP和/或TCP与HDFS客户端进行通信。即,用户使用客户终端进行文件的写入或读取时,无需调用HDFS的专有函数,通过简单的、基本的访问调用指令就可完成文件的写入或读取,HDFS客户端接收到该访问调用指令后,将自动调用HDFS的专有函数进行文件的写入或读取,从而可以更加快捷简单地实现基于HDFS的文件的读取和写入,完成大数据量的存储。本发明实施例中,用户可以在HDFS客户端设置防火墙等拦截过滤技术,从而对非法操作进行拦截,有效地避免非法攻击。
实施上述实施例,通过预设与客户终端默认对应的HDFS客户端,客户终端只需与该HDFS客户端进行交互即可完成文件的读取和写入,并且客户终端是基于FTP和/或TCP与HDFS客户端进行通信,即通过简单的、基本的访问调用指令就可完成文件的读取和写入,可以更加快捷简单地实现基于HDFS的文件的读取和写入,完成大数据量的存储;并且本发明的技术方案可以方便地运行在各个普通的计算机上;NameNode和DataNode可以采用普通的个人计算机PC,无需昂贵的专用服务器,无需使用任何磁盘阵列,每一台PC级服务器配备普通的IDE硬盘来存储文件即可,大大降低了成本;通过设置HDFS客户端,用户可以对非法操作进行拦截,有效避免了非法攻击,提高了系统的安全性。
上面详细说明了本发明实施例的实现文件写入和读取的方法,下面对应地,详细说明本发明实施例的文件读写系统的结构。
如图6示出的本发明实施例的文件读写系统的结构示意图,文件读写系统包括客户终端1、名称服务器2以及至少两个数据服务器,图6中以包括两个数据服务器,即第一数据服务器3和第二数据服务器4为例进行说明,第一数据服务器3包括第一HDFS客户端31以及第一文件存储单元32,其中第一文件存储单元32用于存储文件数据;第一HDFS客户端31包括第一接收单元311、第一查询信息发送单元312以及第一文件信息收发单元313;第二数据服务器4与第二数据服务器3具有相同的结构,第二数据服务器4包括第二HDFS客户端41以及第二文件存储单元42,其中第二文件存储单元42用于存储文件数据;第二HDFS客户端41包括第二接收单元411、第二查询信息发送单元412以及第二文件信息收发单元413;
下面以第二数据服务器3中的第一HDFS客户端31为预设的与客户终端1默认对应的HDFS客户端,说明本发明实施例中数据服务器的结构:
第一接收单元311用于接收客户终端1发起的文件读取和/或文件写入请求;
具体地,用户需要进行文件的读取操作时,使用客户终端1与该第一HDFS客户端31进行通信,向该第一HDFS客户端31发起文件读取请求,第一接收单元311接收到客户终端1发起的文件读取请求;需要说明的是,HDFS客户端位于数据服务器中,每个数据服务器都对应有一个HDFS客户端,客户终端1不需与每个数据服务器进行交互,只需与默认对应的一个HDFS客户端交互即可。
第一查询信息发送单元312用于根据第一接收单元311接收的文件读取和/或文件写入请求向名称服务器2发送文件节点查询信息;
具体地,该第一HDFS客户端31接收到所述文件读取请求后,第一查询信息发送单元312向名称服务器2发送文件节点查询信息,以查询存储有用户需要的文件数据的数据服务器信息。
第一文件信息收发单元313用于根据名称服务器2返回的文件节点信息向客户终端1返回文件节点信息,以使客户终端1读取或写入文件数据。
具体地,名称服务器2接收到该文件节点查询信息后,查找存储有用户需要的文件数据的数据服务器信息,并向该第一HDFS客户端31返回该DataNode信息,第一文件信息收发单元313根据名称服务器2返回的文件节点信息向客户终端1返回文件信息,以使客户终端1读取到文件数据。
进一步地,如图7示出的本发明第一数据服务器的第一实施例的结构示意图, 第一HDFS客户端31中的第一接收单元311用于接收客户终端1发起的文件读取请求;第一查询信息发送单元312用于根据第一接收单元311接收的文件读取请求向名称服务器2发送文件节点查询信息;第一文件信息收发单元313包括判断单元3131、第一返回单元3132以及第二返回单元3133,其中
判断单元3131用于根据所述文件节点信息判断第一文件存储单元32是否存储有客户终端1需要读取的文件数据和/或有足够的存储空间存放客户终端需要写入的文件数据;
第一返回单元3132用于当判断单元3131的判断结果为是时,则向客户终端1返回所述文件数据和/或存放客户终端需要写入的文件数据;
第二返回单元3133用于当判断单元3131的判断结果为否时,则向客户终端1返回携带有所述文件节点信息的重定向信息;客户终端1接收到所述重定向信息后,根据所述文件节点信息向对应的HDFS客户端发起文件读取请求,以读取所述对应的HDFS客户端的数据服务器存储的文件数据。
具体地,当判断单元3131的判断结果为否时,表明名称服务器2返回的文件节点信息并非本端的数据服务器3中,本端数据服务器3可能由于故障或者误删除等原因没有存储客户终端1需要读取的文件数据,而其他的数据服务器3存储有客户终端1需要读取的文件数据。第一HDFS客户端31向客户终端1返回的携带有所述文件节点信息的重定向信息,表明指示该客户终端1需要重新进行读取请求,向存储有用户需要的文件数据的数据服务器对应的HDFS客户端发起读取请求,以获取文件数据。
进一步地,如图8示出的本发明第一数据服务器的第二实施例的结构示意图,第一HDFS客户端31包括接收单元311、第一查询信息发送单元312以及第一文件信息收发单元313外,还包括第一读取单元314,用于根据第一接收单元311接收的客户终端1发起的文件读取请求向第一文件存储单元32发送读取信息;具体地,第一接收单元311接收到不是与本端第一HDFS客户端31默认对应的客户终端1发送的文件读取请求后,第一读取单元314直接向第一文件存储单元32发送读取信息,第一文件存储单元32根据所述读取信息向第一返回单元3132返回文件数据,第一返回单元3132向客户终端1返回所述文件数据。
再进一步地,如图9示出的本发明第一数据服务器的第三实施例的结构示意图,第一HDFS客户端31包括第一接收单元311、第一查询信息发送单元312、第一文件信息收发单元313以及第一读取单元314外,还包括第一写入请求发起单元315和第一文件写入单元316,其中
第一写入请求发起单元315用于当第一接收单元311接收到文件数据时,向名称服务器2发起文件写入请求;名称服务器2根据所述文件写入请求向第一HDFS客户端31返回文件节点信息;需要说明的是,第一写入请求发起单元315与第一查询信息发送单元312可以为同一硬件物理单元。
第一文件写入单元316用于根据名称服务器2返回的文件节点信息,将所述文件数据写入与所述文件节点信息对应的数据服务器3。
具体地,当用户需要进行文件的写入操作时,使用客户终端1与第一HDFS客户端31进行通信,该第一HDFS客户端31为预设的与客户终端1默认对应的HDFS客户端,向该第一HDFS客户端31发送文件数据;第一HDFS客户端31的第一接收单元311接收到来自客户终端1发送的文件数据,那么第一写入请求发起单元315向名称服务器2发起文件写入请求;名称服务器2接收到第一HDFS客户端31发起的文件写入请求后,查找可以存储该文件数据的文件节点信息(即DataNode信息),并向该第一HDFS客户端31返回该文件节点信息,然后第一文件写入单元316根据名称服务器2返回的文件节点信息,将所述文件数据写入与所述文件节点信息对应的数据服务器3。需要说明的是,为了保证文件数据的可靠性和安全性,名称服务器2向第一HDFS客户端31返回的文件节点信息包括至少两个数据服务器3信息,以使第一HDFS客户端31将文件数据存储在至少两个数据服务器3中,以保证某个数据服务器3出现故障,或某个数据服务器3上的数据被误删时,用户也可以读取到需要的文件。
还需要说明的是,本发明实施例中的客户终端1可以基于FTP和/或TCP与第一HDFS客户端31进行通信。即,用户使用客户终端1进行文件的写入或读取时,无需调用HDFS的专有函数,通过简单的、基本的访问调用指令就可完成文件的写入或读取,第一HDFS客户端31接收到该访问调用指令后,将自动调用HDFS的专有函数进行文件的写入或读取,从而解决了现有技术中用户需要掌握HDFS的专有函数才能完成文件的读取和写入,对用户的技术要求较高的问题,可以更加快捷简单地实现基于HDFS的文件的读取和写入,完成大数据量的存储。
综上所述,通过预设与客户终端默认对应的HDFS客户端,客户终端只需与该HDFS客户端进行交互即可完成文件的读取和写入,并且客户终端是基于FTP和/或TCP与HDFS客户端进行通信,即通过简单的、基本的访问调用指令就可完成文件的读取和写入,可以更加快捷简单地实现基于HDFS的文件的读取和写入,完成大数据量的存储;并且本发明的技术方案可以方便地运行在各个普通的计算机上;NameNode和DataNode可以采用普通的个人计算机PC,无需昂贵的专用服务器,无需使用任何磁盘阵列,每一台PC级服务器配备普通的IDE硬盘来存储文件即可,大大降低了成本;通过设置HDFS客户端,用户可以对非法操作进行拦截,有效避免了非法攻击,提高了系统的安全性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种实现文件读取和/或写入的方法,其特征在于,包括:
第一HDFS客户端接收客户终端发送的文件读取信息和/或文件写入信息,所述第一HDFS客户端为预设的与所述客户终端默认对应的HDFS客户端;
所述第一HDFS客户端根据所述文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息;
所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入。
2.如权利要求1所述的方法,其特征在于,当所述客户终端向所述第一HDFS客户端发送的是文件读取和/或文件写入信息时,所述所述第一HDFS客户端根据文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息的步骤包括:
所述第一HDFS客户端根据所述文件读取和/或文件写入信息向名称服务器发送文件节点查询信息;
所述名称服务器根据所述文件节点查询信息向所述第一HDFS客户端返回文件节点信息。
3.如权利要求2所述的方法,其特征在于,当所述客户终端向所述第一HDFS客户端发送的是文件读取信息时,所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入的步骤包括:
所述第一HDFS客户端根据所述文件节点信息判断本端数据服务器是否存储有所述客户终端需要读取的文件数据;
当判断结果为是时,则向所述客户终端返回所述文件数据;
当判断结果为否时,则向所述客户终端返回携带有所述文件节点信息的重定向信息,所述客户终端接收到所述重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求,以读取所述第二HDFS客户端的数据服务器存储的文件数据;或者
当判断结果为否时,则根据所述文件节点信息主动向存储有所述文件数据的对端数据服务器发起读取请求,以获取所述文件数据,并向所述客户终端返回所述文件数据。
4.如权利要求3所述的方法,其特征在于,所述当判断结果为否时,则向所述客户终端返回携带有所述文件节点信息的重定向信息,所述客户终端接收到所述重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求,以读取所述第二HDFS客户端的数据服务器存储的文件数据的步骤包括:
所述客户终端接收到所述重定向信息后,根据所述文件节点信息向第二HDFS客户端发起文件读取请求;
所述第二HDFS客户端根据所述文件读取请求向本端的数据服务器发送读取信息;
所述第二HDFS客户端接收到本端的数据服务器根据所述读取信息返回的文件数据后,向所述客户终端返回所述文件数据。
5.如权利要求2所述的方法,其特征在于,当所述客户终端向所述第一HDFS客户端发送的是文件写入信息时,所述所述第一HDFS客户端根据文件读取信息和/或文件写入信息与名称服务器进行交互,获取所述名称服务器发送的文件节点信息的步骤包括:
所述第一HDFS客户端向名称服务器发起文件写入请求;
所述名称服务器根据所述文件写入请求向所述第一HDFS客户端返回文件节点信息;
所述第一HDFS客户端根据所述文件节点信息对应的数据服务器完成文件读取和/或文件写入的步骤包括:所述第一HDFS客户端将所述文件数据写入与所述文件节点信息对应的数据服务器。
6.如权利要求5所述的方法,其特征在于,所述文件节点信息包括至少两个数据服务器信息;
所述第一HDFS客户端将所述文件数据写入与所述文件节点信息对应的数据服务器的步骤包括:所述第一HDFS客户端将所述文件数据写入与所述文件节点信息对应的至少两个数据服务器中。
7.一种数据服务器,其特征在于,包括HDFS客户端,所述HDFS客户端包括:
接收单元,用于接收客户终端发起的文件读取和/或文件写入请求;
查询信息发送单元,用于根据所述接收单元接收的文件读取和/或文件写入请求向名称服务器发送文件节点查询信息;
文件信息收发单元,用于根据所述名称服务器返回的文件节点信息向所述客户终端返回文件节点信息,以使所述客户终端读取或写入文件数据。
8.如权利要求7所述的数据服务器,其特征在于,所述数据服务器还包括用于存储文件数据的文件存储单元;所述文件信息收发单元具体包括:
判断单元,用于根据所述文件节点信息判断所述文件存储单元是否存储有所述客户终端需要读取的文件数据和/或有足够的存储空间存放客户终端需要写入的文件数据;
第一返回单元,用于当所述判断单元的判断结果为是时,则向所述客户终端返回所述文件数据和/或存放客户终端需要写入的文件数据;
第二返回单元,用于当所述判断单元的判断结果为否时,则向所述客户终端返回携带有所述文件节点信息的重定向信息;所述客户终端接收到所述重定向信息后,根据所述文件节点信息向对应的HDFS客户端发起文件读取请求,以读取所述对应的HDFS客户端的数据服务器存储的文件数据。
9.如权利要求8所述的数据服务器,其特征在于,所述HDFS客户端还包括读取单元,用于根据所述接收单元接收的客户终端发起的文件读取请求向所述文件存储单元发送读取信息;
所述文件存储单元,用于根据所述读取信息向所述第一返回单元返回文件数据;
所述第一返回单元,用于向所述客户终端返回所述文件数据。
10.如权利要求7-9任一项所述的数据服务器,其特征在于,所述接收单元还用于接收来自所述客户终端发送的文件数据;
所述HDFS客户端还包括写入请求发起单元和文件写入单元,其中
写入请求发起单元,用于当所述接收单元接收到文件数据时,向名称服务器发起文件写入请求;所述名称服务器根据所述文件写入请求向所述HDFS客户端返回文件节点信息;
文件写入单元,用于根据所述名称服务器返回的文件节点信息,将所述文件数据写入与所述文件节点信息对应的数据服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110032758 CN102073741B (zh) | 2011-01-30 | 2011-01-30 | 一种实现文件读取和/或写入的方法以及数据服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110032758 CN102073741B (zh) | 2011-01-30 | 2011-01-30 | 一种实现文件读取和/或写入的方法以及数据服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102073741A true CN102073741A (zh) | 2011-05-25 |
CN102073741B CN102073741B (zh) | 2013-08-28 |
Family
ID=44032280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110032758 Expired - Fee Related CN102073741B (zh) | 2011-01-30 | 2011-01-30 | 一种实现文件读取和/或写入的方法以及数据服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102073741B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521361A (zh) * | 2011-12-15 | 2012-06-27 | 北京世纪高通科技有限公司 | 一种基于海量SequenceFile数据的分布式存储方法 |
CN102571959A (zh) * | 2012-01-11 | 2012-07-11 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN102750391A (zh) * | 2012-07-06 | 2012-10-24 | 深圳市远行科技有限公司 | 一种基于Hadoop分布式文件预览方法及其系统 |
CN102982105A (zh) * | 2012-11-07 | 2013-03-20 | 江苏乐买到网络科技有限公司 | 一种dfs中的文件读写方法 |
CN103248656A (zh) * | 2012-02-10 | 2013-08-14 | 联想(北京)有限公司 | 一种实现数据读写的方法以及分布式文件系统、客户端 |
CN103294701A (zh) * | 2012-02-24 | 2013-09-11 | 联想(北京)有限公司 | 一种分布式文件系统以及数据处理的方法 |
CN103353901A (zh) * | 2013-08-01 | 2013-10-16 | 百度在线网络技术(北京)有限公司 | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 |
CN103473365A (zh) * | 2013-09-25 | 2013-12-25 | 北京奇虎科技有限公司 | 一种基于hdfs的文件存储方法、装置及分布式文件系统 |
CN105022779A (zh) * | 2015-05-07 | 2015-11-04 | 云南电网有限责任公司电力科学研究院 | 一种利用Filesystem API实现HDFS文件存取方法 |
CN107800802A (zh) * | 2017-11-10 | 2018-03-13 | 郑州云海信息技术有限公司 | 一种Rack整机柜写入及读取UUID的方法 |
CN108831531A (zh) * | 2018-06-07 | 2018-11-16 | 滨州学院 | 一种基于云计算的自适应医学图像远程处理方法及应用系统 |
CN113312324A (zh) * | 2021-07-29 | 2021-08-27 | 深圳市永达电子信息股份有限公司 | 基于重定向的文件操作同步方法、设备及存储介质 |
CN114490525A (zh) * | 2022-02-22 | 2022-05-13 | 北京科杰科技有限公司 | 基于hadoop远程超大非结构化文本文件解析出入库系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100088335A1 (en) * | 2008-10-07 | 2010-04-08 | Yasuyuki Mimatsu | Method and apparatus for improving file access performance of distributed storage system |
CN101888405A (zh) * | 2010-06-07 | 2010-11-17 | 北京高森明晨信息科技有限公司 | 一种云计算的文件系统和数据处理方法 |
CN101901275A (zh) * | 2010-08-23 | 2010-12-01 | 华中科技大学 | 一种分布式存储系统及其方法 |
-
2011
- 2011-01-30 CN CN 201110032758 patent/CN102073741B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100088335A1 (en) * | 2008-10-07 | 2010-04-08 | Yasuyuki Mimatsu | Method and apparatus for improving file access performance of distributed storage system |
CN101888405A (zh) * | 2010-06-07 | 2010-11-17 | 北京高森明晨信息科技有限公司 | 一种云计算的文件系统和数据处理方法 |
CN101901275A (zh) * | 2010-08-23 | 2010-12-01 | 华中科技大学 | 一种分布式存储系统及其方法 |
Non-Patent Citations (1)
Title |
---|
《电信科学》 20101231 王峰等 Hadoop分布式文件系统的模型分析 94-99 1-10 , 第12期 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521361A (zh) * | 2011-12-15 | 2012-06-27 | 北京世纪高通科技有限公司 | 一种基于海量SequenceFile数据的分布式存储方法 |
CN102571959A (zh) * | 2012-01-11 | 2012-07-11 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN103248656B (zh) * | 2012-02-10 | 2017-04-19 | 联想(北京)有限公司 | 一种实现数据读写的方法以及分布式文件系统、客户端 |
CN103248656A (zh) * | 2012-02-10 | 2013-08-14 | 联想(北京)有限公司 | 一种实现数据读写的方法以及分布式文件系统、客户端 |
CN103294701A (zh) * | 2012-02-24 | 2013-09-11 | 联想(北京)有限公司 | 一种分布式文件系统以及数据处理的方法 |
CN102750391A (zh) * | 2012-07-06 | 2012-10-24 | 深圳市远行科技有限公司 | 一种基于Hadoop分布式文件预览方法及其系统 |
CN102982105A (zh) * | 2012-11-07 | 2013-03-20 | 江苏乐买到网络科技有限公司 | 一种dfs中的文件读写方法 |
CN103353901A (zh) * | 2013-08-01 | 2013-10-16 | 百度在线网络技术(北京)有限公司 | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 |
CN103473365A (zh) * | 2013-09-25 | 2013-12-25 | 北京奇虎科技有限公司 | 一种基于hdfs的文件存储方法、装置及分布式文件系统 |
CN105022779A (zh) * | 2015-05-07 | 2015-11-04 | 云南电网有限责任公司电力科学研究院 | 一种利用Filesystem API实现HDFS文件存取方法 |
CN107800802A (zh) * | 2017-11-10 | 2018-03-13 | 郑州云海信息技术有限公司 | 一种Rack整机柜写入及读取UUID的方法 |
CN108831531A (zh) * | 2018-06-07 | 2018-11-16 | 滨州学院 | 一种基于云计算的自适应医学图像远程处理方法及应用系统 |
CN113312324A (zh) * | 2021-07-29 | 2021-08-27 | 深圳市永达电子信息股份有限公司 | 基于重定向的文件操作同步方法、设备及存储介质 |
CN114490525A (zh) * | 2022-02-22 | 2022-05-13 | 北京科杰科技有限公司 | 基于hadoop远程超大非结构化文本文件解析出入库系统及方法 |
CN114490525B (zh) * | 2022-02-22 | 2022-08-02 | 北京科杰科技有限公司 | 基于hadoop远程超大非结构化文本文件解析出入库系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102073741B (zh) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102073741B (zh) | 一种实现文件读取和/或写入的方法以及数据服务器 | |
US11296940B2 (en) | Centralized configuration data in a distributed file system | |
CN103593147B (zh) | 一种数据读取的方法及装置 | |
CN104731516B (zh) | 一种存取文件的方法、装置及分布式存储系统 | |
CN104699423B (zh) | Linux系统中绑定盘符的方法和装置 | |
CN105187523B (zh) | 一种目录访问方法及装置 | |
CN107026876B (zh) | 一种文件数据访问系统及方法 | |
CN103986776B (zh) | 一种路由器及基于路由器的下载方法 | |
KR20100107479A (ko) | 직접적인 사용자 액세스를 갖는 저장 장치 | |
CN103473272A (zh) | 数据处理方法、装置及系统 | |
EP2869203A1 (en) | Computer system, and arrangement of data control method | |
US20170289243A1 (en) | Domain name resolution method and electronic device | |
CN102148870A (zh) | 一种云存储系统及其实现方法 | |
CN109582246A (zh) | 基于矿机的数据访问方法、装置、系统及可读存储介质 | |
US20180267727A1 (en) | Access method and device for random access memories, control chip and storage medium | |
CN107580032B (zh) | 数据处理方法、装置及设备 | |
CN106203154A (zh) | 一种文件存储方法及电子设备 | |
CN103500108B (zh) | 系统内存访问方法、节点控制器和多处理器系统 | |
CN106096441A (zh) | 数据存储方法及数据存储装置 | |
CN111400334A (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN109981569A (zh) | 网络系统访问方法、装置、计算机设备及可读存储介质 | |
CN106534268A (zh) | 一种数据共享方法及装置 | |
CN104077374B (zh) | 一种实现ip盘文件存储的方法及装置 | |
CN102780780B (zh) | 云计算模式下的数据处理方法、设备和系统 | |
JP7297249B2 (ja) | 計算機システム及び情報の共有方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130828 Termination date: 20220130 |