CN103248656A - 一种实现数据读写的方法以及分布式文件系统、客户端 - Google Patents
一种实现数据读写的方法以及分布式文件系统、客户端 Download PDFInfo
- Publication number
- CN103248656A CN103248656A CN2012100304258A CN201210030425A CN103248656A CN 103248656 A CN103248656 A CN 103248656A CN 2012100304258 A CN2012100304258 A CN 2012100304258A CN 201210030425 A CN201210030425 A CN 201210030425A CN 103248656 A CN103248656 A CN 103248656A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- control node
- request
- control
- 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
本发明公开一种实现数据读写的方法以及分布式文件系统、客户端。所述方法具体应用在分布式文件系统的客户端中,该分布式文件系统包括至少两个控制节点,与至少两个控制节点分别连接的至少一个数据节点,所述客户端分别与至少两个控制节点及至少一个数据节点分别连接,其中,在至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,所述方法包括:判断发出的第一请求为写数据请求还是读数据请求,该写数据请求为写入第一数据的请求,该读数据请求为读取第二数据的请求;如果是写数据请求,将第一数据写入写目标数据节点;如果是读数据请求,从读目标数据节点读取第二数据。
Description
技术领域
本发明涉及分布式系统领域,尤其涉及一种实现数据读写的方法以及分布式文件系统、客户端。
背景技术
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。在HDFS架构中必要角色有三个,Namenode(控制节点)、Datanode(数据节点)和Client(客户端),其中Namenode为集群单点,在整体架构中,Namenode既充当Client的Server,也充当Datanode的Server,其架构简图如图1所示。当HDFS集群增加到一定规模,如Datanode的数量达到1000以上,Client数量达到1000以上,而每个Client 100+RW/s(Read&Write per second,每秒读写请求次数),这时Namenode上承载的长连接数即为2000,且Namenode RWS数量达到100万左右。
发明人在发明过程中,发现现有的HDFS架构中要完成一次完整的文件读写过程会被Client分解成M次Client与Namenode之间的RPC连接和N次Client与Datanode之间的TCP连接,当其中任何一个环节阻塞时,会影响后续环节。
HDFS原生RPC架构为1 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访问模型,提出了(1+N)多Namenode模式,其中1个Namenode作为MasterNamenode,一般情况下只负责所有写入类操作,另外N个Namenode作为SlaveNamenode,只负责所有读取操作。
而Master Namenode和Slave Namenode通过自由选举算法在启动HDFS时从所有的Namenode中产生。当然,本申请实施例提供的模式中,产生出一个Master Namenode,其余的都作为Slave Namenode。
N个Slave Namenode之间具备负载均衡算法,保证每个Slave Namenode的请求负载数在一段时间内完全一样。
如图2所示,引入了Zookeeper(一致性节点)组成的分布式集群,该Zookeeper运行在Namenode之上,在本申请实施例中将Namenode与Zookeeper的比例设置为一一对应关系,当然不一定是一一对应关系,这里使用了一一对应的关系,是为了更好最大化的使用资源,这个关系是不固定的。可以根据实际情况来设置该比例。理论上来讲,Zookeeper集群数量越大,性能相对越好,但是这个性能的提升相对于多使用的服务器硬件来说,是微不足道的,也就是性价比其实很低。Namenode与Zookeeper的比例设置为一一对应关系是个比较好的一个性价比模式。
Master Namenode备份Metadata到所有的Slave Namenode,该数据同步过程是异步的。其中,该数据同步包含发送接受和处理两个步骤,其中发送接受是同步过程,数据处理是异步过程,即保证数据可以发送到所有的SlaveNamenode,而不用等待所有的Slave Namenode处理完成。
Client和Datanode与Namenode之间建立长连接Session,用于事件回调和通知。
下面对客户端向数据节点Datanode写入数据的过程进行详细的描述,假设如图2所示的三个Namenode,其中一个为主Namenode,其他两个为从Namenode,三个Datanode,以及两个客户端,具体写入数据的过程如下:
步骤s1,Client从本地缓存中获取到Master Namenoded的地址信息,如果本地缓存为空,则经过负载均衡分析向负载最低的Zookeeper节点获取Master节点信息;
步骤s2,Client向Master Namenode发送写数据请求,建立RPC连接,如果已建立则略过。接收所述Master Namenode发送的基于所述写数据请求从所述3个Datanode中确定的写目标数据节点的地址信息;同时,为了保证SlaveNamenode数据的同步,Master Namenode将确定的写目标数据节点的地址信息同步到所有的Slave Namenode,运用单独的多点同步机制保证数据被正确的发送到Slave Namenode。
步骤s3,基于所述写目标数据节点的地址信息,Client将数据写入所述写目标数据节点。
下面对客户端向数据节点Datanode读取数据的过程进行详细的描述,同样假设如图2所示的三个Namenode,其中一个为Master Namenode,其他两个为Slave Namenode,三个Datanode,以及两个客户端,具体读取数据的过程如下:
步骤H1,Client获取所述2个Slave Namenode中的一个Slave Namenode的地址信息;首先,Client从本地缓存获取2个Slave Namenode的地址信息,如果本地缓存为空,则经过负载均衡分析向负载最低的Zookeeper节点获取2个Slave Namenode的地址信息;然后,Client经过负载均衡算法,选择其中一个Slave Namenode节点访问。如果该Slave Namenode无法连通,则选择另外一个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小时内注册过,则MasterNamenode开启批量同步任务,将该时间段内的所有数据一次性同步到该新增Namenode;
4、如果该新增Namenode完全没有注册过,则Master Namenode开启镜像同步任务,将所有镜像数据同步到该新增Namenode;
5、该新增Namenode加载镜像数据成功或者加载批量数据包成功,则向Zookeeper集群上报状态;
6、Zookeeper认证该新增Namenode合法,则将该新增Namenode加载到Slave Namenode内部列表中,并将该Slave Namenode列表数据全部下发到所有的Client;
7、Client接收到新的Slave Namenode列表信息,建立与该新增SlaveNamenode的连接,到此新增一个Namenode完毕。
反之如果系统读请求降低,动态移除一台Slave Namenode即可。具体移除过程如下:
1)关闭一台Slave Namenode;
2)Zookeeper集群检测到Session(会话)连接断开,产生Node Disconnect(节点断开)事件,并将所述Node Disconnect下发到所有的Client和Namenode;
3)Client将该Slave Namenode地址从本地缓存移除,与该SlaveNamenode的所有连接事务都断开。
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来进行的,是分开的,且读写算法都是在客户端进行,无热点,即没有被长期大量访问的节点,避免导致节点很热进而出现问题。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种实现数据读写的方法,应用在分布式文件系统的第一客户端中,所述分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,所述第一客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,其特征在于,所述方法包括:
接收第一请求;
判断所述第一请求为写数据请求还是读数据请求,获得判断结果,其中,所述写数据请求为写入第一数据的请求,所述读数据请求为读取第二数据的请求;
当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,其中,所述写目标数据节点是所述第一控制节点基于所述写数据请求从所述至少一个数据节点中确定的数据节点,且在所述第一客户端从所述第一控制节点接收写目标数据节点的信息的同时,所述第一控制节点将所述写目标数据节点的信息发送至所述至少一个第二控制节点;
当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,其中,所述读目标数据节点是所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节点;
其中,所述第一数据与所述第二数据为相同或不相同的数据,所述写目标数据节点与所述读目标数据节点为相同或不相同的数据节点。
2.如权利要求1所述的方法,其特征在于,所述当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,具体包括:
获取所述第一控制节点的地址信息;
向所述第一控制节点发送写数据请求,接收所述第一控制节点发送的基于所述写数据请求从所述至少一个数据节点中确定的写目标数据节点的地址信息;
基于所述写目标数据节点的地址信息,将所述第一数据写入所述写目标数据节点。
3.如权利要求1所述的方法,其特征在于,所述当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,具体包括:
获取所述至少一个第二控制节点中的一个第二控制节点的地址信息;
向所述地址信息对应的第二控制节点发送读数据请求,接收所述地址信息对应的第二控制节点发送的基于所述读数据请求从所述至少一个数据节点中确定的读目标数据节点的地址信息;
基于所述读目标数据节点的地址信息,从所述读目标数据节点获取所述第二数据。
4.如权利要求1~3任一权利要求所述的方法,所述分布式系统还包括协调服务模块,其特征在于,所述方法还包括:
当检测到有新增第二控制节点,建立与所述增加第二控制节点的连接;
其中,所述新增第二控制节点具体为新增控制节点通过所述协调服务模块认证的非第一控制节点的节点。
5.如权利要求4所述的方法,其特征在于,所述新增控制节点通过所述协调服务模块认证,具体包括:
所述新增控制节点向所述第一控制节点发送注册消息;
所述第一控制节点查询注册消息,确认所述新增控制节点是否已注册,如果已注册,则向所述新增控制节点发送批量数据包;
如果没有注册,则向所述新增控制节点发送镜像数据;
所述新增控制节点加载所述批量数据包或者加载镜像数据成功,向所述协调服务模块发送状态信息;
所述协调服务模块将所述新增节点认证为所述第二控制节点。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
当接收到所述协调服务模块发送的第二控制节点断开消息,将与所述断开消息对应的第二控制节点断开连接,并将所述断开消息对应的第二控制节点从本地缓存中移除。
7.一种分布式文件系统,其特征在于,所述系统包括:
至少两个控制节点;
与所述至少两个控制节点分别连接的至少一个数据节点;
其中,所述至少两个控制节点及所述至少一个数据节点分别连接第一客户端,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点。
8.一种客户端,在分布式文件系统中进行读写数据,所述分布式文件系统包括至少两个控制节点,与所述至少两个控制节点分别连接的至少一个数据节点,所述客户端分别与所述至少两个控制节点及所述至少一个数据节点分别连接,其中,所述至少两个控制节点中至少包括第一控制节点及至少一个第二控制节点,其特征在于,所述客户端包括:
接收模块,用于接收第一请求;
判断模块,用于判断所述第一请求为写数据请求还是读数据请求,获得判断结果,其中,所述写数据请求为写入第一数据的请求,所述读数据请求为读取第二数据的请求;
数据写入模块,用于当所述判断结果表明,所述第一请求为写数据请求时,从所述第一控制节点接收写目标数据节点的信息,并将所述第一数据写入所述写目标数据节点,其中,所述写目标数据节点是所述第一控制节点基于所述写数据请求从所述至少一个数据节点中确定的数据节点,且在所述第一客户端从所述第一控制节点接收写目标数据节点的信息的同时,所述第一控制节点将所述写目标数据节点的信息发送至所述至少一个第二控制节点;
数据读取模块,用于当所述判断结果表明,所述第一请求为读数据请求时,从所述至少一个第二控制节点中一个第二控制节点接收读目标数据节点的信息,并从所述读目标数据节点读取所述第二数据,其中,所述读目标数据节点是所述至少一个第二控制节点中一个第二控制节点基于所述读数据请求从所述至少一个数据节点中确定的数据节点;
其中,所述第一数据与所述第二数据为相同或不相同的数据,所述写目标数据节点与所述读目标数据节点为相同或不相同的数据节点。
9.如权利要求8所述的客户端,其特征在于,所述数据写入模块,具体包括:
获取单元一,用于获取所述第一控制节点的地址信息;
写数据请求发送单元,用于向所述第一控制节点发送写数据请求,接收所述第一控制节点发送的基于所述写数据请求从所述至少一个数据节点中确定的写目标数据节点的地址信息;
写入单元,用于基于所述写目标数据节点的地址信息,将所述第一数据写入所述写目标数据节点。
10.如权利要求8所述的客户端,其特征在于,所述数据读取模块,具体包括:
获取单元二,用于获取所述至少一个第二控制节点中的一个第二控制节点的地址信息;
读数据请求发送单元,用于向所述地址信息对应的第二控制节点发送读数据请求,接收所述地址信息对应的第二控制节点发送的基于所述读数据请求从所述至少一个数据节点中确定的读目标数据节点的地址信息;
读取单元,用于基于所述读目标数据节点的地址信息,从所述读目标数据节点获取所述第二数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210030425.8A CN103248656B (zh) | 2012-02-10 | 2012-02-10 | 一种实现数据读写的方法以及分布式文件系统、客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210030425.8A CN103248656B (zh) | 2012-02-10 | 2012-02-10 | 一种实现数据读写的方法以及分布式文件系统、客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103248656A true CN103248656A (zh) | 2013-08-14 |
CN103248656B CN103248656B (zh) | 2017-04-19 |
Family
ID=48927878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210030425.8A Active CN103248656B (zh) | 2012-02-10 | 2012-02-10 | 一种实现数据读写的方法以及分布式文件系统、客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103248656B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018068661A1 (zh) * | 2016-10-11 | 2018-04-19 | 阿里巴巴集团控股有限公司 | 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置 |
CN107944010A (zh) * | 2017-12-08 | 2018-04-20 | 新浪网技术(中国)有限公司 | 一种分布式文件系统中读写文件的方法和装置 |
CN109416618A (zh) * | 2016-04-26 | 2019-03-01 | 安博科技有限公司 | 由信息弹弓提供动力的数据信标脉冲发生器 |
CN109491929A (zh) * | 2018-11-15 | 2019-03-19 | 广东小天才科技有限公司 | 一种缓存数据读写方法及系统 |
CN109691065A (zh) * | 2018-08-23 | 2019-04-26 | 袁振南 | 分布式存储系统及其数据读写方法、存储终端及存储介质 |
CN109726250A (zh) * | 2018-12-27 | 2019-05-07 | 星环信息科技(上海)有限公司 | 数据存储系统、元数据库同步及数据跨域计算方法 |
WO2022126863A1 (zh) * | 2020-12-16 | 2022-06-23 | 跬云(上海)信息科技有限公司 | 一种基于读写分离及自动伸缩的云编排系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073741A (zh) * | 2011-01-30 | 2011-05-25 | 宇龙计算机通信科技(深圳)有限公司 | 一种实现文件读取和/或写入的方法以及数据服务器 |
CN102129434A (zh) * | 2010-01-13 | 2011-07-20 | 腾讯科技(北京)有限公司 | 读写分离数据库的方法及系统 |
CN102262680A (zh) * | 2011-08-18 | 2011-11-30 | 北京新媒传信科技有限公司 | 一种基于海量数据存取需求的分布式数据库代理系统 |
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
-
2012
- 2012-02-10 CN CN201210030425.8A patent/CN103248656B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129434A (zh) * | 2010-01-13 | 2011-07-20 | 腾讯科技(北京)有限公司 | 读写分离数据库的方法及系统 |
CN102073741A (zh) * | 2011-01-30 | 2011-05-25 | 宇龙计算机通信科技(深圳)有限公司 | 一种实现文件读取和/或写入的方法以及数据服务器 |
CN102262680A (zh) * | 2011-08-18 | 2011-11-30 | 北京新媒传信科技有限公司 | 一种基于海量数据存取需求的分布式数据库代理系统 |
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
Non-Patent Citations (2)
Title |
---|
李宽: "基于HDFS的分布式Namenode节点模型的研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 * |
李宽: "基于HDFS的分布式Namenode节点模型的研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 15 December 2011 (2011-12-15) * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416618A (zh) * | 2016-04-26 | 2019-03-01 | 安博科技有限公司 | 由信息弹弓提供动力的数据信标脉冲发生器 |
CN109416618B (zh) * | 2016-04-26 | 2022-02-25 | 安博科技有限公司 | 由信息弹弓提供动力的数据信标脉冲发生器 |
WO2018068661A1 (zh) * | 2016-10-11 | 2018-04-19 | 阿里巴巴集团控股有限公司 | 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置 |
US11271814B2 (en) | 2016-10-11 | 2022-03-08 | Alibaba Group Holding Limited | Online capacity-expanding and online capacity-reducing methods and apparatuses for distributed consensus system |
CN107944010A (zh) * | 2017-12-08 | 2018-04-20 | 新浪网技术(中国)有限公司 | 一种分布式文件系统中读写文件的方法和装置 |
CN109691065A (zh) * | 2018-08-23 | 2019-04-26 | 袁振南 | 分布式存储系统及其数据读写方法、存储终端及存储介质 |
CN109491929A (zh) * | 2018-11-15 | 2019-03-19 | 广东小天才科技有限公司 | 一种缓存数据读写方法及系统 |
CN109726250A (zh) * | 2018-12-27 | 2019-05-07 | 星环信息科技(上海)有限公司 | 数据存储系统、元数据库同步及数据跨域计算方法 |
CN109726250B (zh) * | 2018-12-27 | 2020-01-17 | 星环信息科技(上海)有限公司 | 数据存储系统、元数据库同步及数据跨域计算方法 |
WO2022126863A1 (zh) * | 2020-12-16 | 2022-06-23 | 跬云(上海)信息科技有限公司 | 一种基于读写分离及自动伸缩的云编排系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103248656B (zh) | 2017-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103248656A (zh) | 一种实现数据读写的方法以及分布式文件系统、客户端 | |
US11632424B2 (en) | Fault handling method and device for gateway server | |
CN111935315B (zh) | 区块同步方法及装置 | |
RU2613040C2 (ru) | Smb2-масштабирование | |
CN109547512A (zh) | 一种基于NoSQL的分布式Session管理的方法及装置 | |
CN111368002A (zh) | 一种数据处理方法、系统、计算机设备和存储介质 | |
CN102968442A (zh) | 网络地图瓦片服务聚合的方法和系统 | |
CN103051551A (zh) | 一种分布式系统及其自动维护方法 | |
CN108322358B (zh) | 异地多活的分布式消息发送、处理、消费方法及装置 | |
CN109151028A (zh) | 一种分布式存储系统容灾方法及装置 | |
CN109462640B (zh) | 一种元数据同步方法、数据端、交互系统及介质 | |
US7392252B2 (en) | System, apparatus, and method for processing information, and computer program, and recording medium | |
CN103716281A (zh) | 控制方法、电子设备和服务器 | |
CN106161644A (zh) | 数据处理的分布式系统及其数据处理方法 | |
CN103731465A (zh) | 分布式系统及其事务处理方法 | |
CN104639615B (zh) | 一种控制器集群中数据处理方法和装置 | |
CN1964429A (zh) | 一种分布式机顶盒升级管理方法、管理系统和管理设备 | |
US20130232208A1 (en) | Method and device for updating messages | |
CN102831038B (zh) | Enum-dns的容灾方法及enum-dns | |
CN111756780B (zh) | 一种同步连接信息的方法和负载均衡系统 | |
CN103546528A (zh) | 分布式消息推送方法及系统 | |
JP2007200086A (ja) | データ複製システムおよびデータ複製方法 | |
CN113259408B (zh) | 数据传输方法和系统 | |
CN105141687B (zh) | 一种生产消息的方法 | |
CN112613919A (zh) | 一种信息处理方法和相关装置 |
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 |