一种实现数据读写的方法以及分布式文件系统、客户端的制作方法

文档序号:7889238
专利名称:一种实现数据读写的方法以及分布式文件系统、客户端的制作方法
技术领域
本发明涉及分布式系统领域,尤其涉及一种实现数据读写的方法以及分布式文件系统、客户端。
背景技术
Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。在 HDFS架构中必要角色有三个,Namenode (控制节点)、Datanode (数据节点)和Client (客户端),其中Namenode为集群单点,在整体架构中,Namenode既充当Client的Server,也充当Datanode的Server,其架构简图如图1所示。当HDFS集群增加到一定规模,如Datanode的数量达到1000以上,Client数量达到1000以上,而每个Client 100+Rff/s (Read&ffriteper second,每秒读写请求次数),这时Namenode上承载的长连接数即为2000,且NamenodeRWS数量达到100万左右。发明人在发明过程中,发现现有的HDFS架构中要完成一次完整的文件读写过程会被Client分解成M次Client与Namenode之间的RPC连接和N次Client与Datanode之间的TCP连接,当其中任何一个环节阻塞时,会影响后续环节。HDFS原生RPC架构为I Selector+N handler模式,当Namenode连接数大于N时,其他请求处于缓冲队列等待读取。因此,运用现有的分布式文件系统,由于以上限制,在大规模集群访问时,会存在严重的排队延迟现象,造成读写请求延时过高。同时,因Namenode节点只有一个,无法有效应对Client和Datanode数量的线性增长,存在集群扩容方面的瓶颈。

发明内容
本申请实施例提供一种实现数据读写的方法以及分布式文件系统、客户端,用于解决现有的分布式文件系统在大规模集群访问时,会存在严重的排队延迟现象,造成读写请求延时过高的问题,实现读写分离。本申请实施例一提供一种实现数据读写的方法,应用在分布式文件系统的第一客户端中,所述分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,所述第一客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,所述方法包括:判断发出的第一请求为写数据请求还是读数据请求,所述写数据请求为写入第一数据的请求,所述读数据请求为读取第二数据的请求;如果是写数据请求,将所述第一数据写入写目标数据节点,其中,所述写目标数据节点具体为所述第一控制节点基于所述写数据请求从所述至少一个数据节点中确定的数据节点;所述第一控制节点为能将所述写目标数据节点的信息发送至所述至少一个第二控制节点的节点;如果是读数据请求,从读目标数据节点读取所述第二数据,其中,所述读目标数据节点为所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节点;其中,所述第一数据与所述第二数据为相同或不相同的数据,所述写目标数据节点与所述读目标数据节点为相同或不相同的数据节点。进一步的,如上所述的方法,所述如果是写数据请求,将所述第一数据写入写目标数据节点,具体包括:获取所述第一控制节点的地址信息;向所述第一控制节点发送写数据请求,接收所述第一控制节点发送的基于所述写数据请求从所述至少一个数据节点中确定的写目标数据节点的地址信息;基于所述写目标数据节点的地址信息,将所述第一数据写入所述写目标数据节点。进一步的,如上所述的方法,所述如果是读数据请求,从读目标数据节点读取所述第二数据,具体包括:获取所述至少一个第二控制节点中的一个第二控制节点的地址信息;向所述地址信息对应的第二控制节点发送读数据请求,接收所述地址信息对应的第二控制节点发送的基于所述读数据请求从所述至少一个数据节点中确定的读目标数据节点的地址信息;基于所述读目标数据节点的地址信息,从所述读目标数据节点获取所述第二数据。其中,所述分布式系统还包括协调服务模块,所述方法还包括:当检测到有新增第二控制节点,建立与所述增加第二控制节点的连接;其中,所述新增第二控制节点具体为新增控制节点通过所述协调服务模块认证的非第一控制节点的节点。所述新增控制节点通过所述协调服务模块认证,具体包括:所述新增控制节点向所述第一控制节点发送注册消息;所述第一控制节点查询注册消息,确认所述新增控制节点是否已注册,如果已注册,则向所述新增控制节点发送批量数据包;如果没有注册,则向所述新增控制节点发送镜像数据;所述新增控制节点加载所述批量数据包或者加载镜像数据成功,向所述协调服务模块发送状态信息;

所述协调服务模块将所述新增节点认证为所述第二控制节点。进一步的,如上所述的方法,所述方法还包括:当接收到所述协调服务模块发送的第二控制节点断开消息,将与所述断开消息对应的第二控制节点断开连接,并将所述断开消息对应的第二控制节点从本地缓存中移除。本申请实施例还提供一种分布式文件系统,所述系统包括:至少两个控制节点;与所述至少两个控制节点分别连接的至少一个数据节点;
其中,所述至少两个控制节点及所述至少一个数据节点分别连接第一客户端,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点。本申请实施例还提供一种客户端,在分布式文件系统中读写数据,所述分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,所述客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,所述客户端包括:接收模块,用于接收第一请求;判断模块,用于判断所述第一请求为写数据请求还是读数据请求,获得判断结果,其中,所述写数据请求为写入第一数据的请求,所述读数据请求为读取第二数据的请求;数据写入模块,用于当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,其中,所述写目标数据节点是所述第一控制节点基于所述写数据请求从所述至少一个数据节点中确定的数据节点,且在所述第一客户端从所述第一控制节点接收写目标数据节点的信息的同时,所述第一控制节点将所述写目标数据节点的信息发送至所述至少一个第二控制节点;数据读取模块,用于当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制 节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,其中,所述读目标数据节点是所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节点;进一步的,所述数据写入模块,具体包括:获取单元一,用于获取所述第一控制节点的地址信息;写数据请求发送单元,用于向所述第一控制节点发送写数据请求,接收所述第一控制节点发送的基于所述写数据请求从所述至少一个数据节点中确定的写目标数据节点的地址信息;写入单元,用于基于所述写目标数据节点的地址信息,将所述第一数据写入所述写目标数据节点。进一步的,所述数据读取模块,具体包括:获取单元二,用于获取所述至少一个第二控制节点中的一个第二控制节点的地址
信息;读数据请求发送单元,用于向所述地址信息对应的第二控制节点发送读数据请求,接收所述地址信息对应的第二控制节点发送的基于所述读数据请求从所述至少一个数据节点中确定的读目标数据节点的地址信息;读取单元,用于基于所述读目标数据节点的地址信息,从所述读目标数据节点获取所述第二数据。本申请通过上述一个或多个实施例提供的技术方案,具有以下有益技术效果或者优点之一:1.本申请实施例通过提供(1+N)多Namenode模式的分布式文件系统,读请求被N台Namenode共同分担后,单个Namenode的读压力负载极大下降,集群整体读速度会有极大提闻。
2.Namenode的扩展性加强,如系统读请求较高时,动态增加一台新的Namenode即可;反之如系统读请求降低,动态移除一台Slave Namenode即可。3.所有Namenode启动方式完全一样,无其他额外开销。4.读数据和写数据的过程是通过不同的Namenode来进行的,是分开的,且读写算法都是在客户端进行,无热点,即没有被长期大量访问的节点,避免导致节点很热进而出现问题。


图1为本申请实施例1中实现数据读写的方法流程图;图2为本申请实施例提供的HDFS架构中三个重要角色之间的数据交互图;图3为本申请实施例提供的客户端结构图。
具体实施例方式本申请实施例提供一种实现数据读写的方法以及分布式文件系统、客户端,用于解决现有的分布式文件系统在大规模集群访问时,会存在严重的排队延迟现象,造成读写请求延时过高的问题,实现读写分离。为了更清楚的理解上述技术方案以及有益效果,下面结合附图和具体实施方式
对上述方案进行详细的阐述。实施例1如图1所示,为实现数据读写的方法流程图,本申请实施例提供一种实现数据读写的方法,应用在分布式文件·系统的第一客户端中,该分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,第一客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,所述方法包括:步骤101,判断发出的第一请求为写数据请求还是读数据请求,该写数据请求为写入第一数据的请求,该读数据请求为读取第二数据的请求;步骤102,如果是写数据请求,将第一数据写入写目标数据节点,其中,该写目标数据节点具体为第一控制节点基于写数据请求从所述至少一个数据节点中确定的数据节点;第一控制节点为能将写目标数据节点的信息发送至所述至少一个第二控制节点的节点;步骤103,如果是读数据请求,从读目标数据节点读取第二数据,其中,该读目标数据节点为所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节点;其中,所述第一数据与所述第二数据为相同或不相同的数据,所述写目标数据节点与所述读目标数据节点为相同或不相同的数据节点。如图2所示,为本申请实施例提供的HDFS架构中三个重要角色之间的数据交互图。为了实现读写分离,本申请实施例针对HDFS原生的write-one-read-many访问模型,提出了(I+N)多Namenode模式,其中I个Namenode作为Master Namenode, 一般情况下只负责所有写入类操作,另外N个Namenode作为Slave Namenode,只负责所有读取操作。
而Master Namenode和Slave Namenode通过自由选举算法在启动HDFS时从所有的Namenode中产生。当然,本申请实施例提供的模式中,产生出一个Master Namenode,其余的都作为Slave Namenode0N个Slave Namenode之间具备负载均衡算法,保证每个Slave Namenode的请求负载数在一段时间内完全一样。如图2所示,引入了 Zookeeper ( —致性节点)组成的分布式集群,该Zookeeper
运行在Namenode之上,在本申请实施例中将Namenode与Zookeeper的比例设置为--对
应关系,当然不一定是一一对应关系,这里使用了一一对应的关系,是为了更好最大化的使用资源,这个关系是不固定的。可以根据实际情况来设置该比例。理论上来讲,Zookeeper集群数量越大,性能相对越好,但是这个性能的提升相对于多使用的服务器硬件来说,是微
不足道的,也就是性价比其实很低。Namenode与Zookeeper的比例设置为--对应关系是
个比较好的一个性价比模式。Master Namenode备份Metadata到所有的Slave Namenode,该数据同步过程是异步的。其中,该数据同步包含发送接受和处理两个步骤,其中发送接受是同步过程,数据处理是异步过程,即保证数据可以发送到所有的Slave Namenode,而不用等待所有的SlaveNamenode处理完成。Client和Datanode与Namenode之间建立长连接Session,用于事件回调和通知。下面对客户端向数据节点Datanode写入数据的过程进行详细的描述,假设如图2所不的三个Namenode,其中一个为主Namenode,其他两个为从Namenode,三个Datanode,以及两个客户端,具体写入数据的过程如下:`
步骤si, Client从本地缓存中获取到Master Namenoded的地址信息,如果本地缓存为空,则经过负载均衡分析向负载最低的Zookeeper节点获取Master节点信息;步骤s2, Client向Master Namenode发送写数据请求,建立RPC连接,如果已建立则略过。接收所述Master Namenode发送的基于所述写数据请求从所述3个Datanode中确定的写目标数据节点的地址信息;同时,为了保证Slave Namenode数据的同步,MasterNamenode将确定的写目标数据节点的地址信息同步到所有的Slave Namenode,运用单独的多点同步机制保证数据被正确的发送到Slave Namenode。步骤s3,基于所述写目标数据节点的地址信息,Client将数据写入所述写目标数据节点。下面对客户端向数据节点Datanode读取数据的过程进行详细的描述,同样假设如图2所不的三个Namenode,其中一个为Master Namenode,其他两个为Slave Namenode,三个Datanode,以及两个客户端,具体读取数据的过程如下:步骤HI, Client 获取所述 2 个 Slave Namenode 中的一个 Slave Namenode 的地址信息;首先,Client从本地缓存获取2个Slave Namenode的地址信息,如果本地缓存为空,则经过负载均衡分析向负载最低的Zookeeper节点获取2个Slave Namenode的地址信息;然后,Client经过负载均衡算法,选择其中一个Slave Namenode节点访问。如果该SlaveNamenode无法连通,则选择另外一个Slave Namenode访问。将该Slave Namenode列入Bad队列。步骤H2,向所述地址信息对应的Slave Namenode发送读数据请求,接收所述地址信息对应的Slave Namenode发送的基于所述读数据请求从所述3个数据节点Datanode中确定的读目标数据节点的地址信息;步骤H3,基于所述读目标数据节点的地址信息,从所述读目标数据节点获取数据。实施例2运用本申请实施例提供的如图2所示的HDFS架构,对于冲破现有的HDFS架构中线性扩展瓶颈起到了有益的技术效果,实现动态扩容,有效应对Client和Datanode数量的线性增长。如系统读请求较高,则需要动态增加一台新的Namenode ;具体扩展过程如下:1、当系统新增一个Namenode,在启动过程中,会通过分布式选举算法推选自己为Master Namenode ;2、该选举过程会失败,因为系统中已经存在Master Namenode,因此,该新增Namenode 向 Master Namenode 发起注册信息。3、Master Namenode查询该注册信息,确认该新增Namenode是否已经注册过,如果注册过且在指定时间内,比如在24小时内注册过,则Master Namenode开启批量同步任务,将该时间段内的所有数据一次性同步到该新增Namenode ;4、如果该新增Namenode完全没有注册过,则Master Namenode开启镜像同步任务,将所有镜像数据同步到该新增Namenode ;5、该新增Namenode加载镜像数据成功或者加载批量数据包成功,则向Zookeeper集群上报状态;

6、Zookeeper认证该新增Namenode合法,则将该新增Namenode加载到SlaveNamenode内部列表中,并将该Slave Namenode列表数据全部下发到所有的Client ;7、Client接收到新的Slave Namenode列表信息,建立与该新增Slave Namenode的连接,到此新增一个Namenode完毕。反之如果系统读请求降低,动态移除一台Slave Namenode即可。具体移除过程如下:I)关闭一台 Slave Namenode ;2) Zookeeper集群检测到Session (会话)连接断开,产生Node Disconnect (节点断开)事件,并将所述Node Disconnect下发到所有的Client和Namenode ;3)Client将该Slave Namenode地址从本地缓存移除,与该Slave Namenode的所有连接事务都断开。4)同时,Master Namenode 也断开与该 Slave Namenode 的同步连接。实施例3如图3所示,本申请实施例还提供一种客户端,在分布式文件系统中读写数据,所述分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,所述客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,所述客户端包括:接收模块301,用于接收第一请求;判断模块302,用于判断所述第一请求为写数据请求还是读数据请求,获得判断结果,其中,所述写数据请求为写入第一数据的请求,所述读数据请求为读取第二数据的请求;数据写入模块303,用于当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,其中,所述写目标数据节点是所述第一控制节点基于所述写数据请求从所述至少一个数据节点中确定的数据节点,且在所述第一客户端从所述第一控制节点接收写目标数据节点的信息的同时,所述第一控制节点将所述写目标数据节点的信息发送至所述至少一个第二控制节点;数据读取模块304,用于当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,其中,所述读目标数据节点是所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节
占.
其 中,所述第一数据与所述第二数据为相同或不相同的数据,所述写目标数据节点与所述读目标数据节点为相同或不相同的数据节点。其中,所述数据写入模块303,具体包括:获取单元一,用于获取所述第一控制节点的地址信息;写数据请求发送单元,用于向所述第一控制节点发送写数据请求,接收所述第一控制节点发送的基于所述写数据请求从所述至少一个数据节点中确定的写目标数据节点的地址信息;写入单元,用于基于所述写目标数据节点的地址信息,将所述第一数据写入所述写目标数据节点。所述数据读取模块304,具体包括:获取单元二,用于获取所述至少一个第二控制节点中的一个第二控制节点的地址
信息;读数据请求发送单元,用于向所述地址信息对应的第二控制节点发送读数据请求,接收所述地址信息对应的第二控制节点发送的基于所述读数据请求从所述至少一个数据节点中确定的读目标数据节点的地址信息;读取单元,用于基于所述读目标数据节点的地址信息,从所述读目标数据节点获取所述第二数据。本申请通过上述一个或多个实施例提供的技术方案,具有以下有益技术效果或者优点之一:1.本申请实施例通过提供(1+N)多Namenode模式的分布式文件系统,读请求被N台Namenode共同分担后,单个Namenode的读压力负载极大下降,集群整体读速度会有极大提闻。2.Namenode的扩展性加强,如系统读请求较高时,动态增加一台新的Namenode即可;反之如系统读请求降低,动态移除一台Slave Namenode即可。3.所有Namenode启动方式完全一样,无其他额外开销。4.读数据和写数据的过程是通过不同的Namenode来进行的,是分开的,且读写算法都是在客户端进行,无热点,即没有被长期大量访问的节点,避免导致节点很热进而出现问题。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这 些改动和变型在内。
权利要求
1.一种实现数据读写的方法,应用在分布式文件系统的第一客户端中,所述分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,所述第一客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,其特征在于,所述方法包括: 接收第一请求; 判断所述第一请求为写数据请求还是读数据请求,获得判断结果,其中,所述写数据请求为写入第一数据的请求,所述读数据请求为读取第二数据的请求; 当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,其中,所述写目标数据节点是所述第一控制节点基于所述写数据请求从所述至少一个数据节点中确定的数据节点,且在所述第一客户端从所述第一控制节点接收写目标数据节点的信息的同时,所述第一控制节点将所述写目标数据节点的信息发送至所述至少一个第二控制节点; 当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,其中,所述读目标数据节点是所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节点; 其中,所述第一数据与所述第二数据为相同或不相同的数据,所述写目标数据节点与所述读目标数据节点为相同或不相同的数据节点。
2.如权利要求1所述的方法,其特征在于,所述当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,具体包括: 获取所述第一控制节点·的地址信息; 向所述第一控制节点发送写数据请求,接收所述第一控制节点发送的基于所述写数据请求从所述至少一个数据节点中确定的写目标数据节点的地址信息; 基于所述写目标数据节点的地址信息,将所述第一数据写入所述写目标数据节点。
3.如权利要求1所述的方法,其特征在于,所述当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,具体包括: 获取所述至少一个第二控制节点中的一个第二控制节点的地址信息; 向所述地址信息对应的第二控制节点发送读数据请求,接收所述地址信息对应的第二控制节点发送的基于所述读数据请求从所述至少一个数据节点中确定的读目标数据节点的地址信息; 基于所述读目标数据节点的地址信息,从所述读目标数据节点获取所述第二数据。
4.如权利要求1 3任一权利要求所述的方法,所述分布式系统还包括协调服务模块,其特征在于,所述方法还包括: 当检测到有新增第二控制节点,建立与所述增加第二控制节点的连接; 其中,所述新增第二控制节点具体为新增控制节点通过所述协调服务模块认证的非第一控制节点的节点。
5.如权利要求4所述的方法,其特征在于,所述新增控制节点通过所述协调服务模块认证,具体包括: 所述新增控制节点向所述第一控制节点发送注册消息; 所述第一控制节点查询注册消息,确认所述新增控制节点是否已注册,如果已注册,则向所述新增控制节点发送批量数据包; 如果没有注册,则向所述新增控制节点发送镜像数据; 所述新增控制节点加载所述批量数据包或者加载镜像数据成功,向所述协调服务模块发送状态信息; 所述协调服务模块将所述新增节点认证为所述第二控制节点。
6.如权利要求4所述的方法,其特征在于,所述方法还包括: 当接收到所述协调服务模块发送的第二控制节点断开消息,将与所述断开消息对应的第二控制节点断开连接,并将所述断开消息对应的第二控制节点从本地缓存中移除。
7.—种分布式文件系统,其特征在于,所述系统包括: 至少两个控制节点; 与所述至少两个控制节点分别连接的至少一个数据节点; 其中,所述至少两个控制节点及所述至少一个数据节点分别连接第一客户端,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点。
8.一种客户端, 在分布式文件系统中进行读写数据,所述分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,所述客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,其特征在于,所述客户端包括: 接收模块,用于接收第一请求; 判断模块,用于判断所述第一请求为写数据请求还是读数据请求,获得判断结果,其中,所述写数据请求为写入第一数据的请求,所述读数据请求为读取第二数据的请求; 数据写入模块,用于当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,其中,所述写目标数据节点是所述第一控制节点基于所述写数据请求从所述至少一个数据节点中确定的数据节点,且在所述第一客户端从所述第一控制节点接收写目标数据节点的信息的同时,所述第一控制节点将所述写目标数据节点的信息发送至所述至少一个第二控制节占.数据读取模块,用于当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,其中,所述读目标数据节点是所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节点; 其中,所述第一数据与所述第二数据为相同或不相同的数据,所述写目标数据节点与所述读目标数据节点为相同或不相同的数据节点。
9.如权利要求8所述的客户端,其特征在于,所述数据写入模块,具体包括: 获取单元一,用于获取所述第一控制节点的地址信息; 写数据请求发送单元,用于向所述第一控制节点发送写数据请求,接收所述第一控制节点发送的基于所述写数据请求从所述至少一个数据节点中确定的写目标数据节点的地 址信息; 写入单元,用于基于所述写目标数据节点的地址信息,将所述第一数据写入所述写目标数据节点。
10.如权利要求8所述的客户端,其特征在于,所述数据读取模块,具体包括: 获取单元二,用于获取所述至少一个第二控制节点中的一个第二控制节点的地址信息; 读数据请求发送单元,用于向所述地址信息对应的第二控制节点发送读数据请求,接收所述地址信息对应的第二控制节点发送的基于所述读数据请求从所述至少一个数据节点中确定的读目标数据节点的地址信息; 读取单元,用于基于所述读目标数据节点的地址信息,从所述读目标数据节点获取所述第二数据。
全文摘要
本发明公开一种实现数据读写的方法以及分布式文件系统、客户端。所述方法具体应用在分布式文件系统的客户端中,该分布式文件系统包括至少两个控制节点,与至少两个控制节点分别连接的至少一个数据节点,所述客户端分别与至少两个控制节点及至少一个数据节点分别连接,其中,在至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,所述方法包括判断发出的第一请求为写数据请求还是读数据请求,该写数据请求为写入第一数据的请求,该读数据请求为读取第二数据的请求;如果是写数据请求,将第一数据写入写目标数据节点;如果是读数据请求,从读目标数据节点读取第二数据。
文档编号H04L29/08GK103248656SQ20121003042
公开日2013年8月14日 申请日期2012年2月10日 优先权日2012年2月10日
发明者张云龙 申请人:联想(北京)有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1