CN105205160A - 一种数据写入方法及装置 - Google Patents
一种数据写入方法及装置 Download PDFInfo
- Publication number
- CN105205160A CN105205160A CN201510632451.1A CN201510632451A CN105205160A CN 105205160 A CN105205160 A CN 105205160A CN 201510632451 A CN201510632451 A CN 201510632451A CN 105205160 A CN105205160 A CN 105205160A
- Authority
- CN
- China
- Prior art keywords
- resources
- list
- storage resources
- available
- unavailable
- 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
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/13—File access structures, e.g. distributed indices
-
- 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/1737—Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据写入方法及装置,所述方法包括:数据节点DataNode获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表;其中,当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中;当所述DataNode接收到客户端发送的数据写入请求时,从所述可用存储资源列表中选择用于数据写入的目标存储资源,并对所述目标存储资源进行数据写入。应用本发明实施例可以提高数据写入成功率和效率,并提高存储资源利用率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据写入方法及装置。
背景技术
HDFS(HadoopDistributedFileSystem,Hadoop分布式文件系统)是一个主/从(Master/Slave)体系结构,一个HDFS集群由一个NameNode和多个DataNode组成。NameNode为元数据节点,管理文件系统的元数据,DataNode为数据节点,存储实际的文件数据。
HDFS集群的DataNode需配置多个存储资源,在DataNode初始化时加载全部资源列表到内存中,DataNode在写入数据时按如下规则选择存储资源:
1)、轮询配置文件中的全部存储资源;
2)、将配置文件中的全部存储资源按剩余容量排序,选择剩余容量最大的存储资源。
选中存储资源后,DataNode调用标准的文件读写接口将对应的数据块写到该存储资源上。
然而实践发现,在上述数据写入方案中,若被选中的存储资源在数据写入前已故障,DataNode仍然会向其下发一次写业务触发容错处理过程,影响写性能,导致数据写入成功率和效率较低;此外,当DataNode确定存储资源故障后,即使后续该存储资源恢复正常,DataNode仍不会使用该存储资源,造成存储资源浪费,存储资源利用率低。
发明内容
本发明提供一种数据写入方法及装置,以解决现有技术中数据写入成功率和效率较低、存储资源利用率低的问题。
根据本发明实施例的第一方面,提供一种数据写入方法,包括:
DataNode获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表;其中,当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中;
当所述DataNode接收到客户端发送的数据写入请求时,从所述可用存储资源列表中选择用于数据写入的目标存储资源,并对所述目标存储资源进行数据写入。
根据本发明实施例的第二方面,提供一种数据写入装置,应用于数据节点DataNode,包括:
状态管理单元,用于获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表;其中,当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中;
数据写入单元,用于当接收到客户端发送的数据写入请求时,从所述可用存储资源列表中选择用于数据写入的目标存储资源,并对所述目标存储资源进行数据写入。
应用本发明实施例,DataNode节点通过获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表,当DataNode接收到客户端发送的数据写入请求时,从可用存储资源列表中选择用于数据写入的目标存储资源,并对目标存储资源进行数据写入,一方面,避免了DataNode选中不可用的存储资源进行数据写入,提高了数据写入的成功率和效率;另一方面,通过将可用状态从不可用变为可用的本地存储资源加入到可用资源列表中,与现有技术中存储资源故障后不再使用的实现方式相比,减少了存储资源的浪费,提高了存储资源的利用率。
附图说明
图1是本发明实施例提供的一种数据写入的网络架构示意图;
图2是本发明实施例提供的一种数据写入方法的流程示意图;
图3是本发明实施例提供的另一种数据写入方法的流程示意图;
图4是本发明实施例提供的一种数据写入装置的结构示意图;
图5是本发明实施例提供的另一种数据写入装置的结构示意图;
图6是本发明实施例提供的另一种数据写入装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面先对本发明实施例适用的网络架构进行描述。
请参见图1,图1为本发明实施例提供的一种数据写入的网络架构示意图。如图1所示,该网络架构示意图可以包括NameNode、DataNode以及客户端(Client),其中,当客户端需要进行数据写入时,可以向NameNode发起数据写入请求,由NameNode确定数据写入的DataNode,进而,客户端可以向该DataNode发送数据写入请求,由DataNode从可用资源列表中选择用于数据写入的目标存储资源,并对该目标存储资源进行数据写入。当数据写入成功之后,客户端可以向NameNode返回写入成功响应,由NameNode保存数据写入相关的元数据信息。
基于图1所示的网络架构,本发明实施例提供了一种数据写入方法。请参见图2,图2为本发明实施例提供的一种数据写入方法的流程示意图,如图2所示,该数据写入方法可以包括以下步骤:
步骤201、DataNode获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中。
本发明实施例中,为了避免DataNode在选择进行数据写入的存储资源时,所选择的存储资源为不可用(如故障或离线等)的存储资源,DataNode可以根据本地存储资源的可用状态维护可用资源列表和不可用资源列表,从而,当DataNode需要进行数据写入时,可以从可用资源列表中选择存储资源进行数据写入,提高了数据写入成功率和效率。
本发明实施例中,存储资源的可用状态可以包括可用或可不用,其中,当存储资源故障或离线或资源挂载目录不可访问时,则认为该存储资源不可用;当存储资源未发生故障、未离线以及资源挂载目录可访问时,则认为该存储资源可用;当本地存储资源的可用状态由不可用变为可用时,将其加入到可用资源列表中,从而,可以减少存储资源浪费,提高存储资源利用率。
作为一种可选的实施方式,上述步骤201中,DataNode获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表,可以包括以下步骤:
11)、DataNode定时检测可用资源列表和可不用资源列表中各存储资源的可用状态;
12)、当可用资源列表中存在可用状态为不可用的存储资源时,DataNode将该存储资源从可用资源列表中删除,并加入到不可用资源列表中;
13)、当可不用资源列表中存在可用状态为可用的存储资源时,DataNode将该存储资源从不可用资源列表中删除,并加入到可用资源列表中。
值得说明的是,上述步骤12)和步骤13)之间并不存在时序关系,即可以先执行步骤12),后执行步骤13);也可以先执行步骤13),后执行步骤12),本发明实施例不再赘述。
在该实施方式中,DataNode一方面可以在本地创建可用资源列表和不可用资源列表,其中,当可用资源列表和不可用资源列表初始化创建时,DataNode所有本地存储资源均包括在可用资源列表中,不可用资源列表为空。另一方面,DataNode可以专门启动一个线程,用于定时检测本地存储资源的可用状态,即定时检测(例如每隔预设时间检测一次,或在固定的预设时间检测,可以根据具体场景确定)可用资源列表和不可用资源列表中各存储资源的可用状态,并根据各存储资源的可用状态对可用资源列表和不可用资源列表进行维护。
其中,当可用资源列表中存在可用状态为不可用的存储资源时,即存储资源由于故障或离线等原因不可用时,DataNode可以将该存储资源从可用资源列表中删除,并加入到不可用资源列表中;相对应地,当不可用资源列表中存在可用状态为可用的存储资源时,即之前可用状态为不可用的存储资源恢复为可用时,DataNode可以将该存储资源从不可用资源列表中删除,并加入到可用资源列表中。
可见,在本发明实施例中,对于不可用的存储资源,当其可用状态重新恢复为可用时,DataNode可以重新将该存储资源加入到可用资源状态列表中,以在后续流程中用于数据写入,与现有技术中存储资源故障后,即使存储资源恢复正常,DataNode仍不会使用该存储资源的实现方式相比,减少了存储资源浪费,提高了存储资源利用率。
作为一种可选的实施方式,在上述步骤13)中,当不可用资源列表中存在可用状态为可用的存储资源时,上述DataNode将该存储资源从不可用资源列表中删除,并加入到可用资源列表中之前,还可以包括以下步骤:
步骤131)、DataNode判断该存储资源的可用容量是否小于预设容量阈值;
步骤132)、若否,确定执行将该存储资源从不可用资源列表中删除,并加入到可用资源列表中的步骤。
在该实施方式中,考虑到当存储资源的可用容量过低时,该存储资源将无法保证数据完整写入。例如,以数据块大小为64M为例,则当存储资源的可用容量低于64M时,该存储资源将无法写入一个完整的数据块,从而可能导致数据写入错误。因而,为了保证数据写入的完整性,对于不可用资源列表中的存储资源,当DataNode确定某存储资源可用时,在将该存储资源加入到可用资源列表中之前,还可以进一步判断该存储资源的可用容量是否小于预设容量阈值(可以根据具体场景预先设定,如70M、80M等);若是,则DataNode可以将该存储资源作为不可用存储资源,仍将其保留在不可用资源列表中;若否,则DataNode可以将该存储资源作为可用存储资源,将其从不可用资源列表中删除,并加入到可用资源列表中。
作为一种可选的实施方式,在本发明实施例中,上述步骤11)之后,还可以包括:
当可用资源列表中存在可用状态为可用,且可用容量小于预设容量阈值的存储资源时,DataNode将该存储资源从可用资源列表中删除,并加入到不可用资源列表中。
在该实施方式中,对于可用资源列表中的存储资源,当DataNode确定某存储资源可用时,DataNode可以进一步判断该存储资源的可用容量是否小于预设容量阈值;若是,则DataNode可以将该存储资源作为不可用存储资源,将其从可用资源列表中删除,并加入到不可用资源列表中;若否,则DataNode可以将该存储资源作为可用存储资源,仍将其保留在可用资源列表中。
步骤202、当DataNode接收到客户端发送的数据写入请求时,从可用存储资源列表中选择用于数据写入的目标存储资源,并对目标存储资源进行数据写入。
本发明实施例中,当DataNode接收到客户端发送的数据写入请求时,DataNode可以从自身维护的可用存储资源列表中选择用于数据写入的目标存储资源,并对该目标存储资源进行数据写入,从而,可以避免DataNode选中不可用的存储资源进行数据写入,提高了数据写入成功率和效率。
本发明实施例中,DataNode从可用资源列表中选择用于数据写入的目标存储资源时,可以根据可用资源列表中包括的各存储资源的可用容量从大到小的顺序,选择可用容量最大的存储资源;也可以通过其它选择策略进行选择,如从可用资源列表中包括的各存储资源中随机选择等,本发明实施例对此不做限定。
值得说明的是,在本发明实施例中,目标存储资源并不特指某一固定的存储资源,而是可以指代DataNode选中的用于进行数据写入的任一存储资源。
可见,在图2所示的方法流程中,DataNode节点通过获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表,当DataNode接收到客户端发送的数据写入请求时,从可用存储资源列表中选择用于数据写入的目标存储资源,并对目标存储资源进行数据写入,一方面,避免了DataNode选中不可用的存储资源进行数据写入,提高了数据写入的成功率和效率;另一方面,通过将可用状态从不可用变为可用的本地存储资源加入到可用资源列表中,与现有技术中存储资源故障后不再使用的实现方式相比,减少了存储资源的浪费,提高了存储资源的利用率。
基于图1所示的网络架构,本发明实施例还提供了另一种数据写入方法。请参见图3,为本发明实施例提供的另一种数据写入方法的流程示意图,如图3所示,该数据写入方法可以包括:
步骤301、DataNode获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中。
步骤302、当DataNode接收到客户端发送的数据写入请求时,从可用存储资源列表中选择用于数据写入的目标存储资源,并对目标存储资源进行数据写入。
本发明实施例中,步骤301~步骤302的具体实现可以参见上述步骤201~步骤202,本发明实施例在此不再赘述。
步骤303、若发生写入失败,DataNode将目标存储资源从可用资源列表中删除,加入到不可用资源列表,并向客户端返回写入失败响应,以使客户端向NameNode发送写入失败请求,由NameNode重新为客户端分配数据写入的DataNode。
步骤304、当删除目标存储资源后的可用资源列表不为空时,DataNode向NameNode发送节点状态正常上报消息,以使NameNode接收到客户端发送的写入失败请求时,确定该DataNode节点可用。
本发明实施例中,DataNode确定用于写入数据的目标存储资源之后,可以对该目标存储资源进行数据写入。若DataNode对目标存储资源进行数据写入时发生写入失败,如目标存储资源在数据写入过程中发生故障,DataNode可以向客户端返回写入失败响应,以使客户端向NameNode发送写入失败请求,由NameNode重新为客户端分配数据写入的DataNode,进而,客户端可以将数据重新写入到新分配的DataNode中。
与此同时,DataNode还可以启动一个新的线程,用于监控数据读写进程发送过来的资源故障状态,从而,当DataNode对目标存储资源写入失败时,可以将该目标存储资源从可用资源列表中删除,并加入到不可用资源列表中。DataNode将目标存储资源从可用资源列表中删除之后,还可以进一步判断可用资源列表是否为空,若不为空,DataNode可以向NameNode发送节点正常上报消息,以使NameNode接收到客户端发送的写入失败请求时,确定该DataNode可用,而不会将该DataNode标记为不可用,进而,NameNode会继续向该DataNode下发写业务。
需要注意的是,在本发明实施例中,当NameNode接收到客户端发送的写入失败请求,且接收到DataNode发送的节点状态正常上报消息时,NameNode为客户端重新分配的DataNode可以为该之前为该客户端分配的DataNode,也可以是其它可用的DataNode,本发明实施例对此不做限定。
本发明实施例中,若DataNode从可用资源列表中删除目标存储资源后,可用资源列表为空,即DataNode中不存在可用存储资源,此时,DataNode可以退出HDFS集群,停止提供HDFS服务,其具体实现本发明实施例在此不再赘述。
可见,在图3所描述的方法流程中,当DataNode在进行数据写入时发生存储资源故障时,若可用资源列表中还存在其它可用存储资源,则DataNode会向NameNode发送节点状态正常上报消息,以通知NameNode该DataNode状态仍正常可用,避免了DataNode因本地部分资源故障而停止提供HDFS服务,提高了DataNode的可用性,从而提高了HDFS集群的可用性和可靠性。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体应用场景对本发明实施例提供的技术方案进行描述。
在该实施例中,以DataNode配置文件中一个存储目录对应一个存储资源(例如一块磁盘),且存储资源不包括DataNode的系统盘为例进行说明。
在该实施例中,可以新增一个数据结构,用于存储DataNode中存储资源的可用状态信息,该数据结构包括如下成员:
{storage_id;----------存储资源ID(标识)
mount_dir;-----------资源挂载点
heath_state}-----------资源可用状态,0表示可用,1表示不可用
HDFS集群每次启动时,都会初始化两个上述数据结构的全局链表:stoarge_global_list(全局资源列表,也可以称为可用资源列表)和stoarge_fault_list(故障资源列表,也可以称为不可用资源列表);其中,stoarge_global_list用于存储整个DataNode上可用存储资源的信息,stoarge_fault_list则用于存储整个DataNode上不可用存储资源的信息,其初始状态为空(NULL),任一时刻DataNode的存储资源只能位于其中一个链表。
在该实施例中,可以在DataNode中新增一个资源状态管理模块(StorageStateManager,简称为SSM),其中:
1)、该SSM模块中可以启动一个线程(例如线程1)用于接收DataNode上数据读写进程发送的资源故障状态,并更新可用资源列表和不可用资源列表中存储资源的可用状态;
2)、该SSM模块可以启动另一线程(例如线程2)用于定时检测DataNode本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表。
举例来说,假设初始化不可用资源列表为空,即初始状态时,DataNode本地存储资源均包括在可用资源列表中。SSM模块可以启动线程2,设置定时器时间间隔(例如3分钟),并启动定时器;当定时器超时时,线程2可以检测可用资源列表和不可用资源列表中各存储资源的可用状态,并根据该可用状态维护可用资源列表和不可用资源列表,并重置定时器,重新等待定时器超时。其中,当DataNode中的可用资源列表为空时,DataNode可以退出HDFS集群,停止提供HDFS服务。
在该实施例中,对于可用资源列表,SSM模块可以遍历该可用资源列表中的各存储资源,对于每个存储资源处理如下:
1)、调用存储系统提供的接口查看该存储资源对应的磁盘的实时状态为正常、故障或离线;
2)、若为正常,调用Is命令(一种Linux(一种操作系统)控制台命令)查看存储资源挂载目录能够正常访问。
其中,若存储资源对应的磁盘的实时状态为故障或离线,或者,存储资源挂载目录不能正常访问,则认为存储资源不可用。
若存储资源对应的磁盘的实时状态为正常,且存储资源挂载目录能正常访问,则可以进一步判断存储资源可用容量是否小于70M,若是,则认为该存储资源不可用,否则,认为该存储资源可用。
当SSM模块确定可用资源列表中某存储资源不可用时,可以将其从可用资源列表中删除,并加入到不可用资源列表中。
在该实施例中,对于不可用资源列表,SSM模块可以遍历该不可用资源列表中的各存储资源,对于每个存储资源处理如下:
1)、调用存储系统提供的接口查看该存储资源对应的磁盘的实时状态为正常、故障或离线;
2)、若为正常,调用Is命令查看存储资源挂载目录能够正常访问。
其中,若存储资源对应的磁盘的实时状态为故障或离线,或者,存储资源挂载目录不能正常访问,则认为存储资源不可用。
若存储资源对应的磁盘的实时状态为正常,且存储资源挂载目录能正常访问,则可以进一步判断存储资源可用容量是否小于70M,若是,则认为该存储资源不可用,否则,认为该存储资源可用。
当SSM模块确定不可用资源列表中某存储资源可用时,可以将其从不可用资源列表中删除,并加入到可用资源列表中。
在该实施例中,客户端通过和NameNode交互得到存储数据的DataNode后,开始向DataNode写入数据,DataNode从可用资源列表中选择一个存储资源进行写入,如果发生写入失败,则发送消息通知SSM模块进行处理,SSM模块将该存储资源从可用资源列表中删除,然后加入到不可用资源列表中。
DataNode发生写入失败后,还可以向客户端返回写入失败响应,由客户端向NameNode发送写入失败请求,以使NameNode重新为客户端分配DataNode进行数据写入;同时,DataNode还可以判断上述删除存储资源后的可用资源列表是否为空,若不为空,向NameNode发送节点状态正常上报消息,通知NameNode自身状态仍为正常,从而,NameNode接收到客户端的写入失败请求后,不会标记该DataNode不可用,继续向其下发写业务。
通过以上描述可以看出,在本发明实施例提供的技术方案中,DataNode节点通过获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表,当DataNode接收到客户端发送的数据写入请求时,从可用存储资源列表中选择用于数据写入的目标存储资源,并对目标存储资源进行数据写入,一方面,避免了DataNode选中不可用的存储资源进行数据写入,提高了数据写入的成功率和效率;另一方面,通过将可用状态从不可用变为可用的本地存储资源加入到可用资源列表中,与现有技术中存储资源故障后不再使用的实现方式相比,减少了存储资源的浪费,提高了存储资源的利用率。
请参见图4,为本发明实施例提供的一种数据写入装置的结构示意图,其中,所述装置可以应用于图1所示网络架构中的DataNode中,如图4所示,该数据写入装置可以包括:
状态管理单元410,用于获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表;其中,当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中;
数据写入单元420,用于当接收到客户端发送的数据写入请求时,从所述可用存储资源列表中选择用于数据写入的目标存储资源,并对所述目标存储资源进行数据写入。
在可选实施例中,所述状态管理单元410,还可以用于若发生写入失败,将所述目标存储资源从所述可用资源列表中删除,加入到不可用资源列表中;
相应地,请一并参见图5,为本发明实施例提供的另一种数据写入装置的结构示意图,该实施例在前述图4所示实施例的基础上,所述装置还可以包括:发送单元430;其中:
发送单元430,用于若发生写入失败,向所述客户端返回写入失败响应,以使所述客户端向元数据节点NameNode发送写入失败请求,由所述NameNode重新为所述客户端分配数据写入的DataNode;
所述发送单元430,还用于当删除所述目标存储资源的所述可用资源列表不为空时,向NameNode发送节点状态正常上报消息,以使所述NameNode接收到所述客户端发送的写入失败请求时,确定所述DataNode可用。
请一并参见图6,为本发明实施例提供的另一种数据写入装置的结构示意图,该实施例在前述图4或图5所示实施例的基础上(图6中以在图4所示实施例的基础上进行优化为例),所述装置中状态管理单元410可以包括:检测子单元411、第一管理子单元412和第二管理子单元413;其中:
检测子单元411,用于定时检测可用资源列表和不可用资源列表中各存储资源的可用状态;
第一管理子单元412,用于当所述可用资源列表中存在可用状态为不可用的存储资源时,将该存储资源从所述可用资源列表中删除,并加入到所述不可用资源列表中;
第二管理子单元413,用于当所述不可用资源列表中存在可用状态为可用的存储资源时,将该存储资源从所述不可用资源列表中删除,并加入到所述可用资源列表中。
在可选实施例中,所述第二管理子单元413,还可以用于当所述不可用资源列表中存在可用状态为可用的存储资源时,判断该存储资源的可用容量是否小于预设容量阈值;若否,确定执行将该存储资源从所述不可用资源列表中删除,并加入到所述可用资源列表中的步骤。
在可选实施例中,所述第一管理子单元412,还可以用于当所述可用资源列表中存在可用状态为可用,且可用容量小于预设容量阈值的存储资源时,将该存储资源从所述可用资源列表中删除,并加入到所述不可用资源列表中。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,DataNode节点通过获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表,当DataNode接收到客户端发送的数据写入请求时,从可用存储资源列表中选择用于数据写入的目标存储资源,并对目标存储资源进行数据写入,一方面,避免了DataNode选中不可用的存储资源进行数据写入,提高了数据写入的成功率和效率;另一方面,通过将可用状态从不可用变为可用的本地存储资源加入到可用资源列表中,与现有技术中存储资源故障后不再使用的实现方式相比,减少了存储资源的浪费,提高了存储资源的利用率。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据写入方法,其特征在于,包括:
数据节点DataNode获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表;其中,当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中;
当所述DataNode接收到客户端发送的数据写入请求时,从所述可用存储资源列表中选择用于数据写入的目标存储资源,并对所述目标存储资源进行数据写入。
2.根据权利要求1所述的方法,其特征在于,所述DataNode对所述目标存储资源进行数据写入之后,还包括:
若发生写入失败,所述DataNode将所述目标存储资源从所述可用资源列表中删除,加入到不可用资源列表中,并向所述客户端返回写入失败响应,以使所述客户端向元数据节点NameNode发送写入失败请求,由所述NameNode重新为所述客户端分配数据写入的DataNode;
当删除所述目标存储资源后的所述可用资源列表不为空时,所述DataNode向NameNode发送节点状态正常上报消息,以使所述NameNode接收到所述客户端发送的写入失败请求时,确定所述DataNode可用。
3.根据权利要求1或2所述的方法,其特征在于,所述DataNode获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表,包括:
所述DataNode定时检测可用资源列表和不可用资源列表中各存储资源的可用状态;
当所述可用资源列表中存在可用状态为不可用的存储资源时,所述DataNode将该存储资源从所述可用资源列表中删除,并加入到所述不可用资源列表中;
当所述不可用资源列表中存在可用状态为可用的存储资源时,所述DataNode将该存储资源从所述不可用资源列表中删除,并加入到所述可用资源列表中。
4.根据权利要求3所述的方法,其特征在于,当所述不可用资源列表中存在可用状态为可用的存储资源时,所述DataNode将该存储资源从所述不可用资源列表中删除,并加入到所述可用资源列表中之前,还包括:
所述DataNode判断该存储资源的可用容量是否小于预设容量阈值;
若否,确定执行所述将该存储资源从所述不可用资源列表中删除,并加入到所述可用资源列表中的步骤。
5.根据权利要求3所述的方法,其特征在于,所述DataNode定时检测所述可用资源列表和不可用资源列表中各存储资源的可用状态之后,还包括:
当所述可用资源列表中存在可用状态为可用,且可用容量小于预设容量阈值的存储资源时,所述DataNode将该存储资源从所述可用资源列表中删除,并加入到所述不可用资源列表中。
6.一种数据写入装置,应用于数据节点DataNode,其特征在于,包括:
状态管理单元,用于获取本地存储资源的可用状态,并根据本地存储资源的可用状态维护可用资源列表和不可用资源列表;其中,当本地存储资源的可用状态由不可用变为可用时,将其加入到所述可用资源列表中;
数据写入单元,用于当接收到客户端发送的数据写入请求时,从所述可用存储资源列表中选择用于数据写入的目标存储资源,并对所述目标存储资源进行数据写入。
7.根据权利要求6所述的装置,其特征在于,
所述状态管理单元,还用于若发生写入失败,将所述目标存储资源从所述可用资源列表中删除,加入到不可用资源列表中;
所述装置还包括:
发送单元,用于若发生写入失败,向所述客户端返回写入失败响应,以使所述客户端向元数据节点NameNode发送写入失败请求,由所述NameNode重新为所述客户端分配数据写入的DataNode;
所述发送单元,还用于当删除所述目标存储资源的所述可用资源列表不为空时,向NameNode发送节点状态正常上报消息,以使所述NameNode接收到所述客户端发送的写入失败请求时,确定所述DataNode可用。
8.根据权利要求6或7所述的装置,其特征在于,所述状态管理单元,包括:
检测子单元,用于定时检测可用资源列表和不可用资源列表中各存储资源的可用状态;
第一管理子单元,用于当所述可用资源列表中存在可用状态为不可用的存储资源时,将该存储资源从所述可用资源列表中删除,并加入到所述不可用资源列表中;
第二管理子单元,用于当所述不可用资源列表中存在可用状态为可用的存储资源时,将该存储资源从所述不可用资源列表中删除,并加入到所述可用资源列表中。
9.根据权利要求8所述的装置,其特征在于,
所述第二管理子单元,还用于当所述不可用资源列表中存在可用状态为可用的存储资源时,判断该存储资源的可用容量是否小于预设容量阈值;若否,确定执行将该存储资源从所述不可用资源列表中删除,并加入到所述可用资源列表中的步骤。
10.根据权利要求8所述的装置,其特征在于,
所述第一管理子单元,还用于当所述可用资源列表中存在可用状态为可用,且可用容量小于预设容量阈值的存储资源时,将该存储资源从所述可用资源列表中删除,并加入到所述不可用资源列表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510632451.1A CN105205160A (zh) | 2015-09-29 | 2015-09-29 | 一种数据写入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510632451.1A CN105205160A (zh) | 2015-09-29 | 2015-09-29 | 一种数据写入方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105205160A true CN105205160A (zh) | 2015-12-30 |
Family
ID=54952843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510632451.1A Pending CN105205160A (zh) | 2015-09-29 | 2015-09-29 | 一种数据写入方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105205160A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108241469A (zh) * | 2016-12-27 | 2018-07-03 | 北京金山云网络技术有限公司 | 一种数据存储方法、装置及系统 |
CN110008135A (zh) * | 2018-01-05 | 2019-07-12 | 北京搜狗科技发展有限公司 | 一种信息处理方法、装置及电子设备 |
CN111190549A (zh) * | 2019-12-30 | 2020-05-22 | 浪潮电子信息产业股份有限公司 | 一种共享卷可用容量获取方法、装置、设备及介质 |
CN117640642A (zh) * | 2024-01-26 | 2024-03-01 | 深圳联友科技有限公司 | 一种api网关负载均衡方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034739A (zh) * | 2012-12-29 | 2013-04-10 | 天津南大通用数据技术有限公司 | 一种分布式存储系统及其更新和查询方法 |
CN103346910A (zh) * | 2013-06-25 | 2013-10-09 | 曙光信息产业(北京)有限公司 | 服务器可用状态的管理方法和装置 |
CN104657459A (zh) * | 2015-02-09 | 2015-05-27 | 中国科学院信息工程研究所 | 一种基于文件粒度的海量数据存储方法 |
-
2015
- 2015-09-29 CN CN201510632451.1A patent/CN105205160A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034739A (zh) * | 2012-12-29 | 2013-04-10 | 天津南大通用数据技术有限公司 | 一种分布式存储系统及其更新和查询方法 |
CN103346910A (zh) * | 2013-06-25 | 2013-10-09 | 曙光信息产业(北京)有限公司 | 服务器可用状态的管理方法和装置 |
CN104657459A (zh) * | 2015-02-09 | 2015-05-27 | 中国科学院信息工程研究所 | 一种基于文件粒度的海量数据存储方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108241469A (zh) * | 2016-12-27 | 2018-07-03 | 北京金山云网络技术有限公司 | 一种数据存储方法、装置及系统 |
CN108241469B (zh) * | 2016-12-27 | 2021-04-30 | 北京金山云网络技术有限公司 | 一种数据存储方法、装置及系统 |
CN110008135A (zh) * | 2018-01-05 | 2019-07-12 | 北京搜狗科技发展有限公司 | 一种信息处理方法、装置及电子设备 |
CN110008135B (zh) * | 2018-01-05 | 2024-01-30 | 北京搜狗科技发展有限公司 | 一种信息处理方法、装置及电子设备 |
CN111190549A (zh) * | 2019-12-30 | 2020-05-22 | 浪潮电子信息产业股份有限公司 | 一种共享卷可用容量获取方法、装置、设备及介质 |
CN117640642A (zh) * | 2024-01-26 | 2024-03-01 | 深圳联友科技有限公司 | 一种api网关负载均衡方法 |
CN117640642B (zh) * | 2024-01-26 | 2024-04-09 | 深圳联友科技有限公司 | 一种api网关负载均衡方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106843749B (zh) | 写入请求处理方法、装置及设备 | |
US10884623B2 (en) | Method and apparatus for upgrading a distributed storage system | |
US8650272B2 (en) | Distributed transaction processing system having resource managers that collaborate to decide whether to commit or abort a transaction in response to failure of a transaction manager | |
US20140258499A9 (en) | Load balancing when replicating account data | |
US20180375927A1 (en) | Information processing apparatus and memory control method | |
CN105357042B (zh) | 一种高可用集群系统及其主节点和从节点 | |
CN111680015B (zh) | 文件资源处理方法、装置、设备和介质 | |
CN112596960A (zh) | 一种分布式存储服务切换方法及装置 | |
CN105205160A (zh) | 一种数据写入方法及装置 | |
US20230098190A1 (en) | Data processing method, apparatus, device and medium based on distributed storage | |
US11184435B2 (en) | Message transmission method and apparatus in cluster file system | |
US9910753B1 (en) | Switchless fabric based atomics via partial-proxy | |
CN110351313A (zh) | 数据缓存方法、装置、设备及存储介质 | |
CN111737063B (zh) | 双控脑裂的磁盘锁仲裁方法、装置、设备及介质 | |
US7315959B2 (en) | Real-time remote backup system and related method | |
CN107864209B (zh) | 数据写入的方法、装置及服务器 | |
CN110941511B (zh) | 一种快照合并方法、装置、设备及存储介质 | |
CN115686932A (zh) | 备份集文件恢复方法、装置和计算机设备 | |
US20050234919A1 (en) | Cluster system and an error recovery method thereof | |
CN117520278A (zh) | 一种分布式文件系统多客户端高精度目录配额控制方法 | |
CN111176559B (zh) | 数据写入方法及装置、双活系统 | |
CN116541461A (zh) | 应用于数据库的数据处理方法、装置、设备及存储介质 | |
CN113596195B (zh) | 公共ip地址管理方法、装置、主节点及存储介质 | |
CN103399949B (zh) | 一种数据库存储块状态控制方法和装置 | |
CN115114083B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151230 |