数据读取方法、装置、电子设备及可读存储介质转让专利

申请号 : CN201910373166.0

文献号 : CN110198346B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘俊宏万畅李建斌张世龙

申请人 : 北京三快在线科技有限公司

摘要 :

本申请实施例提供了一种数据读取方法、装置、电子设备及可读存储介质。该方法包括:为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性;确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN;将所述待备份数据存储在所选择的DN中;在通过NN接收到客户端发送的针对目标数据的读数据请求时,通过所述NN将存储有所述目标数据的全部DN的DN标识发送给所述客户端;通过所述客户端确定存储有所述目标数据的每个DN的机房标识是否与所述客户端的机房标识相同;在所述客户端确定所述全部DN包含机房标识与所述客户端的机房标识相同的目标DN的情况下,从所述目标DN中读取所述目标数据。

权利要求 :

1.一种数据读取的方法,其特征在于,所述方法包括:

为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性,该副本分布属性至少包括:机房标识和副本数量;其中,所述机房标识是表征客户端所在机房的标识;

按照所述待备份数据的副本分布属性,确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN;

将所述待备份数据存储在所选择的DN中;

在通过NN接收到客户端发送的针对目标数据的读数据请求时,通过所述NN将存储有所述目标数据的全部DN的DN标识发送给所述客户端,所述客户端与所述HDFS系统包括的多个DN中的一个DN位于同一主机中;

通过所述客户端确定存储有所述目标数据的每个DN的机房标识是否与所述客户端的机房标识相同;

在所述客户端确定所述全部DN包含机房标识与所述客户端的机房标识相同的目标DN的情况下,从所述目标DN中读取所述目标数据;

其中,所述HDFS系统与机房数据管理服务器ZDMS和区域服务器ZS分别连接;在所述待备份数据为被跨机房读取的数据的情况下,为待备份数据设置副本分布属性,包括:通过ZDMS从所述HDFS系统包括的管理节点NN中实时读取历史操作记录,所述历史操作记录包括多个数据的历史读写操作;

通过ZDMS根据读取的历史操作记录中在不同机房的客户端之间进行跨机房读数据的历史读操作,生成多个缓存规则,每个所述缓存规则至少包括:被跨机房读取的数据的存储路径、发起跨机房读数据请求的客户端所在的机房的原机房标识、被跨机房读取的数据的副本数量和有效期;

通过ZS从ZDMS中读取缓存规则,根据读取的缓存规则为被跨机房读取的数据设置副本分布属性。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

通过ZS将读取的缓存规则中的存储路径发送给所述NN;

通过所述NN根据接收到的存储路径,确定所述存储路径对应的DN标识,并将确定的DN标识返回给ZS;

通过ZS根据读取的缓存规则中的副本数量和接收到的DN标识,控制该DN标识对应的DN对被跨机房读取的数据进行备份,以将被跨机房读取的数据备份至所述ZS的机房标识所对应的机房中的其他DN。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

通过ZS从所述NN中实时读取历史操作记录;

在ZS确定读取的历史操作记录包含与所述存储路径关联的写入新数据操作的情况下,根据缓存规则为所述新数据设置副本分布属性。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:

通过NN接收所述HDFS系统包括的多个DN分别发送的状态信息;

通过NN根据接收到的状态信息,确定所述多个DN中发生故障的DN;

通过NN根据所述发生故障的DN中存储的数据的副本分布属性,控制其他DN对所述发生故障的DN中存储的数据进行备份。

5.根据权利要求1所述的方法,其特征在于,所述副本分布属性还包括:有效期;所述方法还包括:通过NN对所述HDFS系统包括的多个DN各自存储的数据进行扫描;

针对所述多个DN中的每个DN,在NN确定该DN存储的数据的存储时长大于该数据的副本分布属性中的有效期时,控制DN删除该数据。

6.根据权利要求1所述的方法,其特征在于,所述HDFS系统与YARN系统连接,所述YARN系统包括资源管理服务器以及多个节点管理服务器,所述资源管理服务器与多个节点管理服务器分别连接;所述方法还包括:在计算队列的队列名字中添加机房标识,并为所述多个节点管理服务器中的每个节点管理服务器设置机房标识;

通过所述资源管理服务器根据计算队列的队列名字中包含的机房标识,为该计算队列中的作业分配至少一个节点管理服务器提供的计算资源,所述至少一个节点管理服务器的机房标识与所述算队列的队列名字中包含的机房标识相同。

7.一种数据读取装置,其特征在于,所述装置包括:

设置模块,用于为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性,该副本分布属性至少包括:机房标识和副本数量;其中,所述机房标识是表征客户端所在机房的标识;

第一确定模块,用于按照所述待备份数据的副本分布属性,确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN;

存储模块,用于将所述待备份数据存储在所选择的DN中;

发送模块,用于在通过NN接收到客户端发送的针对目标数据的读数据请求时,通过所述NN将存储有所述目标数据的全部DN的DN标识发送给所述客户端,所述客户端与所述HDFS系统包括的多个DN中的一个DN位于同一主机中;

第二确定模块,用于通过所述客户端确定存储有所述目标数据的每个DN的机房标识是否与所述客户端的机房标识相同;

读取模块,用于在所述客户端确定所述全部DN包含机房标识与所述客户端的机房标识相同的目标DN的情况下,从所述目标DN中读取所述目标数据;

其中,所述HDFS系统与机房数据管理服务器ZDMS和区域服务器ZS分别连接;在所述待备份数据为被跨机房读取的数据的情况下,为待备份数据设置副本分布属性,包括:通过ZDMS从所述HDFS系统包括的管理节点NN中实时读取历史操作记录,所述历史操作记录包括多个数据的历史读写操作;

通过ZDMS根据读取的历史操作记录中在不同机房的客户端之间进行跨机房读数据的历史读操作,生成多个缓存规则,每个所述缓存规则至少包括:被跨机房读取的数据的存储路径、发起跨机房读数据请求的客户端所在的机房的原机房标识、被跨机房读取的数据的副本数量和有效期;

通过ZS从ZDMS中读取缓存规则,根据读取的缓存规则为被跨机房读取的数据设置副本分布属性。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6任一所述的方法中的步骤。

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行时实现如权利要求1-6任一所述的方法的步骤。

说明书 :

数据读取方法、装置、电子设备及可读存储介质

技术领域

[0001] 本申请实施例涉及数据处理技术领域,尤其涉及一种数据读取方法、装置、电子设备及可读存储介质。

背景技术

[0002] 文件分布式系统基础架构Hadoop包含了两种重要服务系统,分别是文件分布式系统HDFS(Hadoop Distributed File System)和资源管理系统YARN(Yet Another Recourse Negotiator)。其中,HDFS基于主从结构(master/slaver),包括至少一个作为master的管理节点NameNode(NN)和多个作为slaver的数据存储节点DataNode(DN)。写入HDFS中的文件会首先被分为若干个文件块block,每个文件块被备份为多份,每份存储至一个DataNode中。的HDFS在读写数据时,通常会大量占用机房间的带宽,导致读写效率较低。

发明内容

[0003] 本申请实施例提供一种数据读取方法、装置、电子设备及可读存储介质,以提高HDFS系统的数据读写效率。
[0004] 本申请实施例第一方面提供了一种数据读取方法,所述方法包括:
[0005] 为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性,该副本分布属性至少包括:机房标识和副本数量;
[0006] 按照所述待备份数据的副本分布属性,确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN;
[0007] 将所述待备份数据存储在所选择的DN中;
[0008] 在通过NN接收到客户端发送的针对目标数据的读数据请求时,通过所述NN将存储有所述目标数据的全部DN的DN标识发送给所述客户端,所述客户端与所述HDFS系统包括的多个DN中的一个DN位于同一主机中;
[0009] 通过所述客户端确定存储有所述目标数据的每个DN的机房标识是否与所述客户端的机房标识相同;
[0010] 在所述客户端确定所述全部DN包含机房标识与所述客户端的机房标识相同的目标DN的情况下,从所述目标DN中读取所述目标数据。
[0011] 可选地,所述HDFS系统与机房数据管理服务器ZDMS和区域服务器ZS分别连接;在所述待备份数据为被跨机房读取的数据的情况下,为待备份数据设置副本分布属性,包括:
[0012] 通过ZDMS从所述HDFS系统包括的管理节点NN中实时读取历史操作记录,所述历史操作记录包括多个数据的历史读写操作;
[0013] 通过ZDMS根据读取的历史操作记录中在不同机房的客户端之间进行跨机房读数据的历史读操作,生成多个缓存规则,每个所述缓存规则至少包括:被跨机房读取的数据的存储路径、发起跨机房读数据请求的客户端所在的机房的原机房标识、被跨机房读取的数据的副本数量和有效期;
[0014] 通过ZS从ZDMS中读取缓存规则,根据读取的缓存规则为被跨机房读取的数据设置副本分布属性。
[0015] 可选地,所述方法还包括:
[0016] 通过ZS将读取的缓存规则中的存储路径发送给所述NN;
[0017] 通过所述NN根据接收到的存储路径,确定所述存储路径对应的DN标识,并将确定的DN标识返回给ZS;
[0018] 通过ZS根据读取的缓存规则中的副本数量和接收到的DN标识,控制该DN标识对应的DN对被跨机房读取的数据进行备份,以将被跨机房读取的数据备份至所述ZS的机房标识所对应的机房中的其他DN。
[0019] 可选地,所述方法还包括:
[0020] 通过ZS从所述NN中实时读取历史操作记录;
[0021] 在ZS确定读取的历史操作记录包含与所述存储路径关联的写入新数据操作的情况下,根据缓存规则为所述新数据设置副本分布属性。
[0022] 可选地,所述方法还包括:
[0023] 通过NN接收所述HDFS系统包括的多个DN分别发送的状态信息;
[0024] 通过NN根据接收到的状态信息,确定所述多个DN中发生故障的DN;
[0025] 通过NN根据所述发生故障的DN中存储的数据的副本分布属性,控制其他DN对所述发生故障的DN中存储的数据进行备份。
[0026] 可选地,所述副本分布属性还包括:有效期;所述方法还包括:
[0027] 通过NN对所述HDFS系统包括的多个DN各自存储的数据进行扫描;
[0028] 针对所述多个DN中的每个DN,在NN确定该DN存储的数据的存储时长大于该数据的副本分布属性中的有效期时,控制DN删除该数据。
[0029] 可选地,所述HDFS系统与YARN系统连接,所述YARN系统包括资源管理服务器以及多个节点管理服务器,所述资源管理服务器与多个节点管理服务器分别连接;所述方法还包括:
[0030] 在计算队列的队列名字中添加机房标识,并为所述多个节点管理服务器中的每个节点管理服务器设置机房标识;
[0031] 通过所述资源管理服务器根据计算队列的队列名字中包含的机房标识,为该计算队列中的作业分配至少一个节点管理服务器提供的计算资源,所述至少一个节点管理服务器的机房标识与所述算队列的队列名字中包含的机房标识相同。
[0032] 本申请实施例第二方面提供一种数据读取装置,所述装置包括:
[0033] 设置模块,用于为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性,该副本分布属性至少包括:机房标识和副本数量;
[0034] 第一确定模块,用于按照所述待备份数据的副本分布属性,确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN;
[0035] 存储模块,用于将所述待备份数据存储在所选择的DN中;
[0036] 发送模块,用于在通过NN接收到客户端发送的针对目标数据的读数据请求时,通过所述NN将存储有所述目标数据的全部DN的DN标识发送给所述客户端,所述客户端与所述HDFS系统包括的多个DN中的一个DN位于同一主机中;
[0037] 第二确定模块,用于通过所述客户端确定存储有所述目标数据的每个DN的机房标识是否与所述客户端的机房标识相同;
[0038] 读取模块,用于在所述客户端确定所述全部DN包含机房标识与所述客户端的机房标识相同的目标DN的情况下,从所述目标DN中读取所述目标数据。
[0039] 可选地,所述HDFS系统与机房数据管理服务器ZDMS和区域服务器ZS分别连接,在所述待备份数据为被跨机房读取的数据的情况下,所述设置模块包括:
[0040] 第一读取子模块,用于通过ZDMS从所述HDFS系统包括的管理节点NN中实时读取历史操作记录,所述历史操作记录包括多个数据的历史读写操作;
[0041] 生成子模块,用于通过ZDMS根据读取的历史操作记录中在不同机房的客户端之间进行跨机房读数据的历史读操作,生成多个缓存规则,每个所述缓存规则至少包括:被跨机房读取的数据的存储路径、发起跨机房读数据请求的客户端所在的机房的原机房标识、被跨机房读取的数据的副本数量和有效期;
[0042] 第一设置子模块,用于通过ZS从ZDMS中读取缓存规则,根据读取的缓存规则为被跨机房读取的数据设置副本分布属性。
[0043] 可选地,所述第一确定模块包括:
[0044] 发送子模块,用于通过ZS将读取的缓存规则中的存储路径发送给所述NN;
[0045] 确定子模块,用于通过所述NN根据接收到的存储路径,确定所述存储路径对应的DN标识,并将确定的DN标识返回给ZS;
[0046] 所述存储模块包括:
[0047] 备份子模块,用于通过ZS根据读取的缓存规则中的副本数量和接收到的DN标识,控制该DN标识对应的DN对被跨机房读取的数据进行备份,以将被跨机房读取的数据备份至所述ZS的机房标识所对应的机房中的其他DN。
[0048] 可选地,所述设置模块还包括:
[0049] 第二读取子模块,用于通过ZS从所述NN中实时读取历史操作记录;
[0050] 第二设置子模块,用于在ZS确定读取的历史操作记录包含与所述存储路径关联的写入新数据操作的情况下,根据缓存规则为所述新数据设置副本分布属性。
[0051] 可选地,所述装置还包括:
[0052] 第一接收模块,用于通过NN接收所述HDFS系统包括的多个DN分别发送的状态信息;
[0053] 第三确定模块,用于通过NN根据接收到的状态信息,确定所述多个DN中发生故障的DN;
[0054] 第一控制模块,用于通过NN根据所述发生故障的DN中存储的数据的副本分布属性,控制其他DN对所述发生故障的DN中存储的数据进行备份。
[0055] 可选地,所述副本分布属性还包括:有效期;所述装置还包括:
[0056] 扫描模块,用于通过NN对所述HDFS系统包括的多个DN各自存储的数据进行扫描;
[0057] 第二控制模块,用于针对所述多个DN中的每个DN,在NN确定该DN存储的数据的存储时长大于该数据的副本分布属性中的有效期时,控制DN删除该数据。
[0058] 可选地,所述HDFS系统与YARN系统连接,所述YARN系统包括资源管理服务器以及多个节点管理服务器,所述资源管理服务器与多个节点管理服务器分别连接;所述装置还包括:
[0059] 添加模块,用于在计算队列的队列名字中添加机房标识,并为所述多个节点管理服务器中的每个节点管理服务器设置机房标识;
[0060] 分配模块,用于通过所述资源管理服务器根据计算队列的队列名字中包含的机房标识,为该计算队列中的作业分配至少一个节点管理服务器提供的计算资源,所述至少一个节点管理服务器的机房标识与所述算队列的队列名字中包含的机房标识相同。
[0061] 本申请实施例第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请第一方面所述的方法中的步骤。
[0062] 本申请实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请第一方面所述的方法的步骤。
[0063] 采用本申请实施例提供的数据读取方法,为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性,对于所述待备份数据被切分成的多个数据块中的每个数据块,按照所述待备份数据的副本分布属性,确定目标机房,并从该目标机房中选择数据存储节点DN,将该数据块存储在所选择的DN中。在数据读取时,通过所述客户端确定存储有所述待读取的目标数据的每个DN的机房标识是否与所述客户端的机房标识相同,从而确定出目标DN,并从所述目标DN中读取所述目标数据。
[0064] 一方面,通过为每个数据存储节点DN均被设置机房标志,并且为待备份数据设置副本分布属性,可以根据副本分布属性所包括的机房标识,选择该机房标志对应的目标机房中的数据存储节点DN来存储待备份数据的对应的每个数据块,使所述待备份数据均由目标机房中的多个数据存储节点DN存储,而不是使得待备份数据对应的多个数据块由位于多个机房中的多个数据存储节点DN存储。采用本申请实施例提供的数据读取方法,可以避免跨机房写数据的情况发生,减少机房间宽带占用,提高写数据的效率。
[0065] 另一方面,在数据读取时,由于客户端从目标DN中读取目标数据,而目标DN的机房标识与客户端的机房标识相同,即目标DN与客户端位于同一机房内,因此可以避免跨机房读数据的情况发生,减少机房间宽带占用,提高读数据的效率。

附图说明

[0066] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0067] 图1是本申请一实施例提出的数据读取方法的流程图;
[0068] 图2A是一种HDFS系统的结构框图;
[0069] 图2B是另一种HDFS系统的结构框图;
[0070] 图2C是本申请一实施例提供的一种HDFS系统的结构框图;
[0071] 图3是一种YARN系统的结构框图;
[0072] 图4是本申请一实施例提供的数据读取装置的示意图。

具体实施方式

[0073] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0074] 参考图1,图1是本申请一实施例提出的数据读取方法的流程图,该数据读取方法可以应用于文件分布式系统HDFS。
[0075] 参考图2A,图2A是一种HDFS系统的结构框图,该HDFS系统中包括:一个管理节点NN、多个数据存储节点DN以及多个客户端client。其中,客户端client可以与数据存储节点DN位于同一主机中。对于多个客户端中的一个客户端,在该客户端向所示HDFS系统写入文件时,该客户端首先将该文件切分为多个数据块block;该客户端与管理节点NN交互,从而向管理节点NN申请用于存储和备份每个数据块block的数据存储节点DN;客户端将每个数据块block存储和备份至向管理节点NN请求的多个数据存储节点DN中。
[0076] 对于多个客户端中的一个客户端,在该客户端从HDFS系统(例如:图2A所示的HDFS系统)读取文件时,客户端会向管理节点NN发起读数据请求,管理节点NN会视情况向该客户端返回待读取文件的数据块block列表,对于待读取文件的每个数据块block,管理节点NN会返回每个存储或备份有该数据块block的数据存储节点DN,客户端在接收到管理节点返回的上述信息后,会从相应的数据存储节点DN读取数据。
[0077] 参考图2B,图2B是另一种HDFS系统的结构框图,该HDFS系统具有Federation机制。该HDFS系统包括多个管理节点NN、多个数据存储节点DN、多个客户端client以及一个挂载表。其中,客户端client可以与数据存储节点DN位于同一主机中。多个管理节点NN是相互独立的,不需要与其他管理节点NN协调合作。每个数据存储节点DN被管理节点NN所管理,每个数据存储节点DN都在的管理节点NN进行注册,每个数据存储节点DN定期发送心跳信息和数据块报告给管理节点NN,并执行任何管理节点NN发来的命令。对于多个客户端中的一个客户端,该客户端向HDFS系统发送读数据请求以及HDFS系统对该读数据请求的响应过程,请针对参考图2A所示的HDFS系统的相关说明。
[0078] 基于图2A或图2B所示的两种HDFS系统,本申请一实施例提出了一种数据读取方法。如图1所示,该数据读取方法包括以下步骤:
[0079] 步骤S11:为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性,该副本分布属性至少包括:机房标识和副本数量;
[0080] 本实施例中,对于HDFS系统中的多个数据存储节点DN中的每个数据存储节点DN,根据该数据存储节点DN所在的机房,为该数据存储节点DN设置机房标识。
[0081] 示例地,HDFS系统中具有2000个数据存储节点DN,其中的120个数据存储节点DN位于机房A中,则对于该120个数据存储节点DN中的每个数据存储节点DN,为该数据存储节点DN设置机房标识,该机房标识表征该数据存储节点DN位于机房A中。具体地,例如机房标识可以是“A”。
[0082] 示例地,副本数量可以设置为默认数值,例如设置为2、3、4、5等等。应当理解的,为了提高数据安全性,降低数据丢失风险,可以将副本数量设置为较大数值。为了降低数据对存储空间的占用,提高存储空间的有效使用率,可以将副本数量设置为较小数值。
[0083] 示例地,对于为HDFS系统中各个数据存储节点DN设置机房标识这一步骤,可以在对HDFS系统进行初始化期间执行,也可以在对HDFS系统进行改造期间执行。应当理解的,并非为每个待备份数据进行备份时,都需要执行为HDFS系统中各个数据存储节点DN设置机房标识这一步骤。
[0084] 本实施例中,待备份数据可以是由客户端写入的新的数据,相应的,客户端会将该待备份数据切分为多个数据块。如下文所述,待备份数据也可以是被跨机房读取的数据,相应的,该待备份数据在前期由客户端写入HDFS系统时,已经被切分为的多个数据块。
[0085] 本实施例中,对于副本分布属性,可以是使用者在利用客户端写入数据时,手动地为待备份数据设置的;也可以是客户端根据预设规则自动设置的;还可以如下文所述,是通过区域服务器ZS(Zone Server)设置的。
[0086] 作为一种可实施方式的举例,副本分布属性是由客户端自动为待备份数据设置的,副本分布属性中包括的机房标识可以是表征该客户端所在机房的标识。相应地,在经过下文所述的步骤S13之后,由该客户端写入的待备份数据对应的每个数据块,均存储和备份至该客户端所在的机房内的数据存储节点DN中。例如,使用者利用位于机房A中的客户端向HDFS系统写入待备份数据,则该客户端为该待备份数据设置的副本分布属性中,包括的机房标识为“A”。
[0087] 步骤S12:按照所述待备份数据的副本分布属性,确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN。
[0088] 本实施例中,对于待备份数据的多个数据块中的每个数据块,按照所述待备份数据的副本分布属性,确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN。
[0089] 示例地,待备份数据X的副本分布属性设置为,其中“A”为机房标识,“2”为副本数量。待备份数据X被切分成4个数据块,分别为x1、x2、x3和x4。对于数据块x1,管理节点NN会根据机房标识“A”确定机房A为目标机房,并从机房A中选择2个数据存储节点。如果该待备份数据是由客户端写入的新的数据,则管理节点NN将选择的2个数据存储节点的编号发送给该客户端。如果该待备份数据是被跨机房读取的数据,则如下文所述,管理节点NN将选择的2个数据存储节点的编号发送给区域服务器ZS。管理节点NN采用同样方法为x2、x3和x4等数据块从机房A中选择2个数据存储节点DN,并将选择出的数据存储节点DN的编号信息发送给客户端或区域服务器ZS。
[0090] 步骤S13:将所述待备份数据存储在所选择的DN中。
[0091] 本实施例中,对于待备份数据的多个数据块中的每个数据块,将该数据块存储至所选择的DN中。
[0092] 沿用步骤S12中的示例,如果该待备份数据是由客户端写入的新的数据,当该客户端接收到由管理节点NN发送的选择出的2个数据存储节点的编号后,客户端控制数据块x1备份至选择出的2个数据存储节点,从而使数据块x1存储至机房A中。客户端采用同样方法将x2、x3和x4等数据块存储至机房A中,每个数据块均备份两份,从而使得该待备份数据在机房A中被备份了两份。
[0093] 沿用步骤S12中的示例,如果该待备份数据是被跨机房读取的数据,当区域服务器ZS接收到由管理节点NN发送的选择出的2个数据存储节点的编号后,区域服务器ZS控制数据块x1备份至选择出的2个数据存储节点,从而使数据块x1存储至机房A中。区域服务器ZS采用同样方法将x2、x3和x4等数据块存储至机房A中,每个数据块均备份两份,从而使得该待备份数据在机房A中被备份了两份。
[0094] 步骤S14:在通过NN接收到客户端发送的针对目标数据的读数据请求时,通过所述NN将存储有所述目标数据的全部DN的DN标识发送给所述客户端,所述客户端与所述HDFS系统包括的多个DN中的一个DN位于同一主机中。
[0095] 本实施例中,管理节点NN接收客户端发送的针对目标数据的读数据请求,针对该目标数据对应的全部数据块中的每个数据块,管理节点将存储有该数据块的全部数据存储节点DN的信息发送给该客户端。
[0096] 步骤S15:通过所述客户端确定存储有所述目标数据的每个DN的机房标识是否与所述客户端的机房标识相同。
[0097] 本实施例中,针对目标数据对应的全部数据块中的每个数据块,客户端确定存储有该数据块的全部数据存储节点DN中是否具有与该客户端位于同一机房中的数据存储节点DN。
[0098] 示例地,如果在步骤S11中,待备份数据是由客户端写入的新的数据,则步骤S15中,客户端收到的关于目标数据的全部数据存储节点DN,均位于同一机房中。例如客户端M通过步骤S11至步骤S13将待备份数据X的全部数据块均存入了机房A中的数据存储节点DN中;例如客户端N向管理节点NN发送针对数据X的读数据请求,则客户端从管理节点NN收到的关于数据X的全部数据存储节点DN,均位于机房A中。
[0099] 示例地,如果在步骤S11中,待备份数据是被跨机房读取的数据,则步骤S15中,客户端收到的关于目标数据的全部数据存储节点DN,位于不同的机房中。例如区域服务器ZS通过步骤S11至步骤S13将待备份数据X的全部数据块均存入了机房A中的数据存储节点DN中;此时,数据X对应的原数据存储节点DN,仍然保留了数据X,数据X对应的原数据存储节点DN不位于机房A中;例如客户端N向管理节点NN发送针对数据X的读数据请求,则客户端从管理节点NN收到的关于数据X的全部数据存储节点DN,其中一部分数据存储节点DN位于机房A中,另一部分数据存储节点DN位于其他机房中。
[0100] 步骤S16:在所述客户端确定所述全部DN包含机房标识与所述客户端的机房标识相同的目标DN的情况下,从所述目标DN中读取所述目标数据。
[0101] 本实施例中,针对目标数据对应的全部数据块中的每个数据块,当存储有该数据块的全部数据存储节点DN中,存在某一数据存储节点DN与该客户端位于同一机房中时,则确定该数据存储节点DN为目标DN,并从该目标DN中读取该数据块。
[0102] 本申请实施例提供的上述数据读取方法,除可以应用于图2A或图2B所示的HDFS系统外,还可以应用于本申请实施例提供的另一种包括数据管理服务器ZDMS和多个区域服务器ZS的HDFS系统。参考图2C,图2C是本申请一实施例提供的一种HDFS系统的结构框图。本申请实施例在该HDFS系统增设了数据管理服务器ZDMS(Zone Data Manager Server)和多个区域服务器ZS。如图2C所示,每个机房中至少设置有一个所述区域服务器ZS。
[0103] 数据管理服务器ZDMS与HDFS系统中的管理节点NN连接,若HDFS系统包括多个管理节点NN(如图2B所示),则数据管理服务器ZDMS与每个管理节点NN连接。对于多个区域服务器ZS中的每个区域服务器ZS,该区域服务器ZS与HDFS系统中的管理节点NN连接,若HDFS系统包括多个管理节点NN(如图2B所示),则该区域服务器ZS与HDFS系统中的管理节点NN连接。图2C以管理节点NN的数量是一个为例。
[0104] 如上文所述,步骤S11中的待备份数据可以是被跨机房读取的数据,例如位于机房B中的客户端L需要持续地读取文件Y中的数据,而文件Y对应的多个数据块中的一部分数据块存储于机房C内的数据存储节点DN中,则客户端需要跨机房读取数据。对于被跨机房读取的数据,可以作为待备份数据,从而执行上述步骤S11至S16。
[0105] 基于图2C所示的HDFS系统,在执行步骤S11时,为待备份数据设置副本分布属性,即为被跨机房读取的数据设置副本分布属性,具体可包括以下步骤:
[0106] 步骤S111:通过ZDMS从所述HDFS系统包括的管理节点NN中实时读取历史操作记录,所述历史操作记录包括多个数据的历史读写操作;
[0107] 步骤S112:通过ZDMS根据读取的历史操作记录中在不同机房的客户端之间进行跨机房读数据的历史读操作,生成多个缓存规则,每个所述缓存规则至少包括:被跨机房读取的数据的存储路径、发起跨机房读数据请求的客户端所在的机房的原机房标识、被跨机房读取的数据的副本数量和有效期;
[0108] 步骤S113:通过ZS从ZDMS中读取缓存规则,根据读取的缓存规则为被跨机房读取的数据设置副本分布属性。
[0109] 本实施例中,HDFS系统的管理节点NN会记录用户利用客户端针对HDFS系统的操作,详细信息包括操作成功与否、用户名称、客户端地址、操作命令、操作的目录等。对于用户的每一个操作,管理节点NN都会将这些信息以key-value对的形式组织成固定格式的一条日志,然后记录到audit.log文件中,形成历史操作记录。ZDMS可以通过读取管理节点NN近期的历史操作记录,从该历史操作记录中统计出在不同机房的客户端之间进行跨机房读数据的历史读操作,并基于统计出的历史读操作,为每个被跨机房读取的数据设置缓存规则。
[0110] 本实施例中,缓存规则中包括的被跨机房读取的数据的存储路径是指:被跨机房读取的数据的文件名或目录名。缓存规则中包括的被跨机房读取的数据的副本数量可以设置为默认数值,例如设置为2、3、4、5等等。示例地,ZDMS从管理节点NN近期的历史操作记录中统计出多条在不同机房的客户端之间进行跨机房读数据的历史读操作,例如其中一条历史读操作是:位于机房B中的客户端L需要持续地从位于机房C中的数据存储节点DN中读取文件Y的近三天数据。则ZDMS基于此条历史读操作,生成缓存规则,其中“Y”为被跨机房读取的数据的存储路径,B为发起跨机房读数据请求的客户端所在的机房的原机房标识,“2”为被跨机房读取的数据的副本数量,“3”为有效期,单位是天。
[0111] 本实施例中,ZS从ZDMS中读取与该ZS对应的缓存规则,如果缓存规则中的发起跨机房读数据请求的客户端所在的机房的原机房标识,与该ZS的机房标识相同时,则该ZS读取该缓存规则。示例地,ZDMS中生成并存储了多个缓存规则,其中一个缓存规则是,则位于机房B中的区域服务器ZS将读取该缓存规则。ZS根据该缓存规则,将文件Y作为待备份数据,并为其设置副本分布属性
[0112] 在执行步骤S12时,具体包括以下步骤:
[0113] S121:通过ZS将读取的缓存规则中的存储路径,以及被跨机房读取的数据的副本分布属性发送给管理节点NN;
[0114] S122:管理节点NN针对该跨机房读取的数据的多个数据块中的每个数据块,根据该副本分布属性为该数据块分配副本数量的数据存储节点DN。
[0115] 在执行步骤S13时,具体包括以下步骤:
[0116] S131:通过ZS将读取的缓存规则中的存储路径发送给所述NN;
[0117] S132:通过所述NN根据接收到的存储路径,确定所述存储路径对应的DN标识,并将确定的DN标识返回给ZS;
[0118] S133:通过ZS根据读取的缓存规则中的副本数量和接收到的DN标识,控制该DN标识对应的DN对被跨机房读取的数据进行备份,以将被跨机房读取的数据备份至所述ZS的机房标识所对应的机房中的其他DN。
[0119] 本实施例中,步骤S131与步骤S121可以同时执行或分别前后执行,在此不做限定。
[0120] 示例地,区域服务器ZS从ZDMS中读取的缓存规则是,并将文件Y(存储路径)作为待备份数据,为其设置副本分布属性。ZS将文件Y的文件名以及文件Y的副本分布属性发送给管理节点NN。由于文件Y是前期某一客户端写入HDFS系统中的,该客户端在写入文件Y时,已经将该文件Y切分为多个数据块,管理节点NN中记录有该切分结果。因此管理节点NN可以针对文件Y的多个数据块中的每个数据块,例如对于y1,从机房B中选择2个数据存储节点DN,如DN3和DN7,并将这两个数据存储节点DN的信息其发送给区域服务器ZS。
[0121] 管理节点NN还针对文件Y的多个数据块中的每个数据块,例如对于y1,将存储有该数据y1的每个数据存储节点DN的信息发送给区域服务器ZS。例如,总共有两个数据存储节点DN存储有该数据块y1,这两个数据存储节点DN分别位于机房C和机房D中。
[0122] 区域服务器ZS针对文件Y的多个数据块中的每个数据块,例如对于y1,在接收到位于机房B中的DN3和DN7的信息后,以及接收到存储有该数据块y1的数据存储节点DN的信息后。区域服务器ZS从接收到的存储有该数据块y1的数据存储节点DN的信息中选择一个数据存储节点DN,将该数据块y1从该数据存储节点DN中备份至位于机房B中的DN3和DN7中。
[0123] 本实施例中,通过将跨机房读取的数据作为待备份数据,使该数据被备份至读取该数据的客户端所在机房中,当客户端再次读取该数据时,可以直接从本地机房读取数据,不必跨机房读取数据,进一步减小机房间宽带占用。
[0124] 示例地,在执行步骤S14至步骤S16时,位于机房B中的客户端L需要持续地读取文件Y时,管理节点NN接收客户端B发送的针对文件Y的读数据请求。管理节点NN针对该文件Y对应的全部数据块中的每个数据块,例如对于y1,管理节点NN将存储有该数据块y1的全部数据存储节点DN的信息发送给该客户端。根据上述示例可知,存储有数据块y1的全部数据存储节点DN包括:位于机房B中的DN3和DN7,以及分别位于机房C和机房D中的两个数据存储节点DN。
[0125] 位于机房B中的客户端L针对数据块y1,确定位于机房B中的DN3或DN7为目标DN,并从中读取数据块y1,而不必跨机房读取。
[0126] 考虑到在经过上述后,存储路径(文件或目录)中的数据已经备份至与所述ZS的机房标识所对应的机房中的其他DN中,但是该存储路径中随时可能会被写入新数据,而被写入的新数据,也可能被与该ZS位于同一机房中的客户端读取。例如,文件Y中的旧数据已经通过上述关于数据备份的步骤备份至机房B中的数据存储节点DN中了,便于机房B中的客户端L本地读取。但是文件Y中随时可能被写入新的数据,对于写入的新数据,仍然会被存储至分别位于机房C和机房D中的两个数据存储节点DN中。为了使存入文件Y中的新数据也能及时被备份至机房B中,便于机房B中的客户端L本地读取。
[0127] 本申请提供的数据读取方法还可以包括以下步骤:
[0128] S21:通过ZS从所述NN中实时读取历史操作记录;
[0129] S22:在ZS确定读取的历史操作记录包含与所述存储路径关联的写入新数据操作的情况下,根据缓存规则为所述新数据设置副本分布属性。
[0130] 示例地,ZS从管理节点NN中读取到文件Y中被存入了新数据Y’,则ZS为新数据Y’设置副本分布属性。然后依据该副本分布属性,对新数据Y’进行备份。对于具体的备份方法,请参见上述关于数据备份的步骤,为避免重复,此处不再赘述。
[0131] 考虑到HDFS系统中的数据存储节点DN所在的主机可能会发生宕机,当某一数据存储节点DN所在的主机宕机后,该数据存储节点DN中的数据块不能被读取。例如某一数据存储节点DN中存储有文件Y的数据块y2,数据块y2原本的备份数为2份,如果该数据存储节点DN宕机后,则数据块y2的备份数将减小为1份。
[0132] 为了保持数据块y2的备份数不变,提高数据存储的安全性和数据读取的可靠性,本申请提供的数据读取方法还可以包括以下步骤:
[0133] S31:通过NN接收所述HDFS系统包括的多个DN分别发送的状态信息;
[0134] S32:通过NN根据接收到的状态信息,确定所述多个DN中发生故障的DN;
[0135] S33:通过NN根据所述发生故障的DN中存储的数据的副本分布属性,控制其他DN对所述发生故障的DN中存储的数据进行备份。
[0136] 示例地,每个数据存储节点DN定期发送心跳信息和数据块报告给管理节点NN,例如当管理节点NN在超过预设时间段的时间内没有接收到某一数据存储节点DN的心跳信息和数据块报告,则管理节点NN确定该DN发生故障,该故障DN中存储有数据块y1。管理节点根据文件Y的副本分布属性,控制机房B中的另一个数据存储节点DN,来备份数据块y1。
[0137] 考虑到存入HDFS系统中的数据在经过一定时间段后,可能不会再被任何客户端读取,从而失效。例如,位于机房B中的客户端M需要持续地从位于机房C中的数据存储节点DN中读取文件Y的近三天数据,则文件Y的有效期为三天,三天之后,文件Y将变为失效数据。为了及时对失效数据进行清理,避免其占用HDFS系统的存储空间。本申请提供的数据读取方法中,副本分布属性还可以包括有效期,该方法还可以包括以下步骤:
[0138] S41:通过NN对所述HDFS系统包括的多个DN各自存储的数据进行扫描;
[0139] S42:针对所述多个DN中的每个DN,在NN确定该DN存储的数据的存储时长大于该数据的副本分布属性中的有效期时,控制DN删除该数据。
[0140] 示例地,存储有数据块y3的数据存储节点DN会定期发送心跳信息和数据块报告给管理节点NN。管理节点NN在收到数据块报告后,会根据文件Y的副本分布属性判断数据块y3是否已失效,即NN确定数据块y3的存储时长是否大于副本分布属性中的有效期3天。如果y3的存储时长已大于3天,则控制存储有数据块y3的数据存储节点DN删除数据块y3。
[0141] 参考图3,图3是一种YARN系统的结构框图,该YARN系统:包括一个资源管理服务器(ResourceManager,RM)和多个节点管理服务器(NodeManger,NM),资源管理服务器与多个节点管理服务器分别连接。其中,RM是一个全局的资源管理器,负责整个YARN系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Application Manager,AM)。NodeManager管理一个YARN集群中的每个节点,一方面,NM会定时地向RM汇报本节点上的资源使用情况和各个Container运行状态;另一方面,NM接收并处理来自ApplicationMaster的Container启动/停止等各种请求。
[0142] HDFS系统与YARN系统作为文件分布式系统基础架构Hadoop的两个子系统,HDFS系统与YARN系统连接。考虑到目前ResourceManager在为作业分配计算资源时,可能会将几个位于不同机房中的NodeManager分配给此作业,导致此作业在执行时,需要跨机房调用资源并执行作业,严重占用机房间宽带,影响执行速率。为了进一步解决上述问题,本申请提供的数据读取方法还可以包括以下步骤:
[0143] S51:在计算队列的队列名字中添加机房标识,并为所述多个节点管理服务器中的每个节点管理服务器设置机房标识;
[0144] S52:通过所述资源管理服务器根据计算队列的队列名字中包含的机房标识,为该计算队列中的作业分配至少一个节点管理服务器提供的计算资源,所述至少一个节点管理服务器的机房标识与所述算队列的队列名字中包含的机房标识相同。
[0145] 示例地,为某一计算队列的队列名中添加机房标识“A”,表征该计算队列与机房A对应。YARN系统中具有2000个NodeManager,其中的120个NodeManager位于机房A中,则对于该120个NodeManager中的每个NodeManager,为该NodeManager设置机房标识“A”,该机房标识表征该NodeManager位于机房A中。
[0146] 当资源管理服务器为该计算队列中的一个作业分配计算资源时,由于该计算队列的队列名字中包含机房标识“A”,则资源管理服务器从上述120个具有机房标识“A”的NodeManager中,选择好至少一个NodeManager,将选择出的至少一个NodeManager的计算资源分配给上述作业。
[0147] 基于同一发明构思,本申请一实施例提供一种数据读取装置。参考图4,图4是本申请一实施例提供的数据读取装置的示意图。如图4所示,该装置包括:
[0148] 设置模块41,用于为HDFS系统中各个数据存储节点DN设置机房标识,并为待备份数据设置副本分布属性,该副本分布属性至少包括:机房标识和副本数量;
[0149] 第一确定模块42,用于按照所述待备份数据的副本分布属性,确定所述机房标识对应的目标机房,并从该目标机房中选择所述副本数量的数据存储节点DN;
[0150] 存储模块43,用于将所述待备份数据存储在所选择的DN中;
[0151] 发送模块44,用于在通过NN接收到客户端发送的针对目标数据的读数据请求时,通过所述NN将存储有所述目标数据的全部DN的DN标识发送给所述客户端,所述客户端与所述HDFS系统包括的多个DN中的一个DN位于同一主机中;
[0152] 第二确定模块45,用于通过所述客户端确定存储有所述目标数据的每个DN的机房标识是否与所述客户端的机房标识相同;
[0153] 读取模块46,用于在所述客户端确定所述全部DN包含机房标识与所述客户端的机房标识相同的目标DN的情况下,从所述目标DN中读取所述目标数据。
[0154] 可选地,所述HDFS系统与机房数据管理服务器ZDMS和区域服务器ZS分别连接,在所述待备份数据为被跨机房读取的数据的情况下,所述设置模块包括:
[0155] 第一读取子模块,用于通过ZDMS从所述HDFS系统包括的管理节点NN中实时读取历史操作记录,所述历史操作记录包括多个数据的历史读写操作;
[0156] 生成子模块,用于通过ZDMS根据读取的历史操作记录中在不同机房的客户端之间进行跨机房读数据的历史读操作,生成多个缓存规则,每个所述缓存规则至少包括:被跨机房读取的数据的存储路径、发起跨机房读数据请求的客户端所在的机房的原机房标识、被跨机房读取的数据的副本数量和有效期;
[0157] 第一设置子模块,用于通过ZS从ZDMS中读取缓存规则,根据读取的缓存规则为被跨机房读取的数据设置副本分布属性。
[0158] 可选地,所述第一确定模块包括:
[0159] 发送子模块,用于通过ZS将读取的缓存规则中的存储路径发送给所述NN;
[0160] 确定子模块,用于通过所述NN根据接收到的存储路径,确定所述存储路径对应的DN标识,并将确定的DN标识返回给ZS;
[0161] 所述存储模块包括:
[0162] 备份子模块,用于通过ZS根据读取的缓存规则中的副本数量和接收到的DN标识,控制该DN标识对应的DN对被跨机房读取的数据进行备份,以将被跨机房读取的数据备份至所述ZS的机房标识所对应的机房中的其他DN。
[0163] 可选地,所述设置模块还包括:
[0164] 第二读取子模块,用于通过ZS从所述NN中实时读取历史操作记录;
[0165] 第二设置子模块,用于在ZS确定读取的历史操作记录包含与所述存储路径关联的写入新数据操作的情况下,根据缓存规则为所述新数据设置副本分布属性。
[0166] 可选地,所述装置还包括:
[0167] 第一接收模块,用于通过NN接收所述HDFS系统包括的多个DN分别发送的状态信息;
[0168] 第三确定模块,用于通过NN根据接收到的状态信息,确定所述多个DN中发生故障的DN;
[0169] 第一控制模块,用于通过NN根据所述发生故障的DN中存储的数据的副本分布属性,控制其他DN对所述发生故障的DN中存储的数据进行备份。
[0170] 可选地,所述副本分布属性还包括:有效期;所述装置还包括:
[0171] 扫描模块,用于通过NN对所述HDFS系统包括的多个DN各自存储的数据进行扫描;
[0172] 第二控制模块,用于针对所述多个DN中的每个DN,在NN确定该DN存储的数据的存储时长大于该数据的副本分布属性中的有效期时,控制DN删除该数据。
[0173] 可选地,所述HDFS系统与YARN系统连接,所述YARN系统包括资源管理服务器以及多个节点管理服务器,所述资源管理服务器与多个节点管理服务器分别连接;所述装置还包括:
[0174] 添加模块,用于在计算队列的队列名字中添加机房标识,并为所述多个节点管理服务器中的每个节点管理服务器设置机房标识;
[0175] 分配模块,用于通过所述资源管理服务器根据计算队列的队列名字中包含的机房标识,为该计算队列中的作业分配至少一个节点管理服务器提供的计算资源,所述至少一个节点管理服务器的机房标识与所述算队列的队列名字中包含的机房标识相同。
[0176] 基于同一发明构思,本申请另一实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的方法中的步骤。
[0177] 基于同一发明构思,本申请另一实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的方法中的步骤。
[0178] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0179] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0180] 本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0181] 本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0182] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0183] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0184] 尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
[0185] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0186] 以上对本申请所提供的一种数据读取方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。