CN114201474A - 数据服务方法及装置 - Google Patents
数据服务方法及装置 Download PDFInfo
- Publication number
- CN114201474A CN114201474A CN202111166566.8A CN202111166566A CN114201474A CN 114201474 A CN114201474 A CN 114201474A CN 202111166566 A CN202111166566 A CN 202111166566A CN 114201474 A CN114201474 A CN 114201474A
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- domain name
- file
- service
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000008520 organization Effects 0.000 claims abstract description 18
- 238000013507 mapping Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 abstract description 21
- 230000007246 mechanism Effects 0.000 abstract description 20
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 230000008676 import Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 238000000889 atomisation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 239000010410 layer Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
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/18—File system types
- G06F16/182—Distributed file systems
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
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)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种数据服务方法及装置。基于文件系统的数据组织方式,生成待存储数据的元数据。元数据用于描述待存储数据在对象存储服务中的对象名。调用对象存储服务存储待存储数据。由此,可以从底层将文件系统和对象存储这两种数据存储机制融合为一种统一的数据存储机制。在兼具文件系统能力和对象存储能力的同时,可以降低维护两套数据存储机制的成本。
Description
技术领域
本公开涉及数据技术领域,特别是涉及一种数据服务方法及装置。
背景技术
数据湖,是指使用大型二进制对象或文件这样的自然格式储存数据的系统。它通常把所有的企业数据统一存储,既包括源系统中的原始副本,也包括转换后的数据,比如那些用于报表、可视化、数据分析和机器学习的数据。数据湖可以包括关系数据库的结构化数据(行与列)、半结构化的数据(CSV,日志,XML,JSON),非结构化数据(电子邮件、文件、PDF)和二进制数据(图像、音频、视频)。
数据湖场景下,应用希望使用对象存储的特性,例如万亿级文件数扩展性、Tbps级带宽能力、数据生命周期的性价比优势。但数据湖场景的很多应用早期是基于HDFS构建,它提供诸如目录原子操作、快照、文件追加写(append)以及截断(truncate)等文件系统类似的功能,早期应用就像使用POSIX文件系统那种方式来编程。
文件系统采用目录层级方式,在支持大规模文件数的扩展性方面存在技术挑战;对象存储采用平坦名字空间,很难支持目录原子操作、快照、文件追加写(append)以及截断(truncate)等文件系统功能。企业在基于数据湖演进的过程中,既有基于HDFS集群搭建的(老)应用环境,也有基于对象存储重建的(新)应用环境,造成两套系统的运维代价以及HDFS集群技术的成本竞争力不足的问题。
因此,需要一种能够在兼具文件系统能力和对象存储能力的同时,降低运维成本的方案。
发明内容
本公开要解决的一个技术问题是提供一种能够在兼具文件系统能力和对象存储能力的同时,降低运维成本的方案。
根据本公开的第一个方面,提供了一种数据服务方法,包括:基于文件系统的数据组织方式,生成待存储数据的元数据,元数据用于描述待存储数据在对象存储服务中的对象名;调用对象存储服务存储待存储数据。
可选地,元数据包括对待存储数据进行切分得到的至少一个数据块各自的地址映射信息,地址映射信息包括数据块在对象存储服务中的第一对象名,调用对象存储服务存储待存储数据的步骤包括:调用对象存储服务存储数据块作为第一对象。
可选地,该方法还包括:响应于预设条件的触发,调用对象存储服务存储待存储数据作为第二对象;在元数据中记录第二对象在对象存储服务中的第二对象名。
可选地,第一对象名用于表征数据块所在的对象存储桶以及数据块的前缀,并且/或者第二对象名用于表征待存储数据的绝对路径。
可选地,该方法还包括:配置第一域名和第二域名,第一域名为用于为用户提供数据服务的文件服务系统的访问域名,第二域名为文件服务系统关联的对象存储桶的域名
根据本公开的第二个方面,提供了一种数据服务方法,包括:响应于文件服务系统创建请求,生成文件服务系统元数据;调用对象存储服务设置文件服务系统关联的对象存储桶;将至少部分文件服务系统元数据传入对象存储桶,以在对象存储桶中生成能够表征文件服务系统和对象存储桶之间的关联关系的对象存储服务元数据;更新文件服务系统元数据,以使得更新后的文件服务系统元数据能够表征文件服务系统和对象存储桶之间的关联关系。
可选地,该方法还包括:配置第一域名和第二域名,第一域名为文件服务系统的访问域名,第二域名为文件服务系统关联的对象存储桶的域名。
可选地,该方法还包括:响应基于第一域名的数据写入请求,对待存储数据进行切分,并生成切分所得到的至少一个数据块各自的元数据,元数据包括数据块的地址映射信息,地址映射信息包括数据块在对象存储服务中的第一对象名;调用对象存储服务存储数据块作为第一对象。
可选地,该方法还包括:响应于预设条件的触发,调用对象存储服务存储待存储数据作为第二对象,并在元数据中记录第二对象在对象存储服务中的第二对象名。
可选地,第一对象名用于表征数据块所在的对象存储桶以及数据块的前缀,并且/或者第二对象名用于表征待存储数据的绝对路径。
可选地,该方法还包括:响应于基于第二域名的数据写入请求,查找与第二域名关联的第一域名;将基于第二域名的数据写入请求转换为基于第一域名的数据写入请求。
可选地,该方法还包括:响应于基于第一域名的数据读取请求,获取待读取数据的元数据;根据待读取数据的元数据,调用对象存储服务读取数据。
可选地,该方法还包括:响应于基于第二域名的数据读取请求,屏蔽请求读取的数据的元数据中用于表征数据块的前缀;基于屏蔽后的元数据调用对象存储服务读取数据。
可选地,该方法还包括:若对象存储服务基于屏蔽后的元数据无法读取数据,则将基于第二域名的数据读取请求转换为基于第一域名的数据读取请求。
根据本公开的第三个方面,提供了一种数据服务装置,包括:生成模块,用于基于文件系统的数据组织方式,生成待存储数据的元数据,元数据用于描述待存储数据在对象存储服务中的对象名;调用模块,用于调用对象存储服务存储待存储数据。
根据本公开的第四个方面,一种数据服务装置,包括:生成模块,用于响应于文件服务系统创建请求,生成文件服务系统元数据;设置模块,用于调用对象存储服务设置文件服务系统关联的对象存储桶;传入模块,用于将至少部分文件服务系统元数据传入对象存储桶,以在对象存储桶中生成能够表征文件服务系统和对象存储桶之间的关联关系的对象存储服务元数据;更新模块,用于更新文件服务系统元数据,以使得更新后的文件服务系统元数据能够表征文件服务系统和对象存储桶之间的关联关系。
根据本公开的第五个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面或第二方面所述的方法。
根据本公开的第六个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面或第二方面所述的方法。
由此,本公开通过基于文件系统的数据组织方式生成待存储数据的元数据,并调用对象存储服务存储所述待存储数据,可以从底层将文件系统和对象存储这两种数据存储机制融合为一种统一的数据存储机制,在兼具文件系统能力和对象存储能力的同时,降低维护两套数据存储机制的成本。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了根据本公开一个实施例的数据服务方法的示意性流程图。
图2示出了本公开的融合了文件系统和对象存储的存储系统架构示意图。
图3示出了本公开的存储系统的数据组织结构以及冷热分层结构示意图。
图4示出了文件服务系统的创建流程示意图。
图5示出了基于不同域名的数据写入流程示意图。
图6示出了基于不同域名的数据读取流程示意图。
图7示出了根据本公开一个实施例的数据服务装置的结构示意图。
图8示出了根据本公开另一个实施例的数据服务装置的结构示意图。
图9示出了根据本公开一个实施例的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
文件系统和对象存储是两种不同的数据存储机制。
文件系统采用目录层级方式存储文件,能够提供目录原子操作、快照、文件追加写(append)以及截断(truncate)等文件系统功能。文件系统可以是指分布式文件系统。
以HDFS为例,HDFS是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的,它是Apache Hadoop Core项目的一部分。HDFS和现有的分布式文件系统有很多共同点,但同时它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。
对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。就像文件一样,对象包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。
文件系统采用目录层级方式,在支持大规模文件数的扩展性方面存在技术挑战;而对象存储采用平坦名字空间,很难支持目录原子操作、快照、文件追加写(append)以及截断(truncate)等文件系统功能。
有鉴于此,本公开提出,从底层角度将文件系统和对象存储这两种数据存储机制融合为一种统一的数据存储机制,以降低维护两种数据存储机制的成本。
图1示出了根据本公开一个实施例的数据服务方法的示意性流程图。
参见图1,在步骤S110,基于文件系统的数据组织方式,生成待存储数据的元数据,元数据用于描述待存储数据在对象存储服务中的对象名。
基于文件系统的数据组织方式生成元数据,是指可以按照文件系统的数据组织方式确定待存储数据的元数据信息,如待存储数据的目录树,以使得生成的元数据能够反映文件系统的数据组织特性,即目录树结构。也即,可以按照目录树方式组织元数据。
在步骤S120,调用对象存储服务存储待存储数据。
即,待存储数据实际上可以作为对象存储在对象存储服务所提供的对象存储桶(Bucket)中。
桶是对象存储中存储对象的容器,所有的对象都隶属于某个存储空间(即桶)。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级。
由此,本公开通过“基于文件系统的数据组织方式生成元数据+对数据进行对象存储”的方式,可以从底层将文件系统和对象存储这两种数据存储机制融合为一种统一的数据存储机制,在兼具文件系统能力和对象存储能力的同时,降低维护两套数据存储机制的成本。
本公开这种统一的数据存储机制既可以提供文件系统能力,又可以提供对象存储能力。在基于本公开的数据存储机制存储数据时,可以根据待存储数据的存储需求或数据特点,选择相应的存储方式,以使得存储后数据具备相应能力。
示例1
若待存储数据需要频繁更改,如后期需要对待存储数据执行追加写(append)、截断(truncate)等操作,那么在存储待存储数据时,需要使得存储后数据具备文件系统能力,以方便对数据执行追加写、截断等操作。数据存储过程如下。
在执行步骤S110时,可以按照目录树方式组织元数据,提供根目录、子目录、文件等树型结构存储能力,通过树型结构组织可以支持目录原子化操作。
在组织元数据的过程中,可以基于文件系统的分片存储特性对待存储数据进行切分,得到至少一个数据块,并生成包括至少一个数据块各自的地址映射信息的元数据,地址映射信息包括数据块在对象存储服务中的对象名(为了便于区分,可以称为第一对象名)。
在读取数据时是先读取元数据,再根据元数据从对象存储服务读取数据。
为了使得能够根据第一对象名从对象存储服务中顺利读取到数据块,可以以使第一对象名能够表征数据块所在的对象存储桶以及数据块的前缀为命名规则,命名第一对象名。
作为示例,数据块可以保存在/bucket-name/fs-prefix/前缀下,bucket-name用于表征数据块(或数据块所在的文件系统)关联的桶名,fs-prefix用于表征对待存储数据进行切分得到的数据块映射的前缀。
在执行步骤S120时,可以调用对象存储服务存储数据块作为第一对象。
即,可以将各个数据块作为对象存储在相应的对象存储桶中。
采用数据切片方式组织元数据、调用对象存储服务存储经切分得到的各个数据块,可以方便地支持追加写、截断等操作。由此,本公开“基于文件系统的数据组织方式生成元数据+对数据进行对象存储”的数据存储机制可以提供文件系统能力。
示例2
若待存储数据重读轻写、强调文件数量的扩展性以及性价比,那么在存储待存储数据时,需要使得存储后数据具备对象存储能力。数据存储过程如下。
在执行步骤S110时,可以按照目录树方式组织元数据,提供根目录、子目录、文件等树型结构存储能力,通过树型结构组织可以支持目录原子化操作。
所生成的元数据可以记录待存储数据的绝对路径,将绝对路径作为待存储数据在对象存储服务中的对象名(为了便于区分,可以称为第二对象名)。
绝对路径指的是从树型目录结构顶部的根目录开始到某个目录或文件(本公开中可以是到待存储数据所在文件)的路径。第二对象名也可以称为绝对路径名。
在执行步骤S120时,可以调用对象存储服务存储待存储数据作为第二对象。
即,将整个待存储数据作为一个对象进行存储。通过直接将待存储数据作为对象进行对象存储,可以具备对象存储的扩展性。由此,本公开“基于文件系统的数据组织方式生成元数据+对数据进行对象存储”的数据存储机制可以提供对象存储能力。
本公开还支持数据转存功能。数据转存,是指在基于本公开提供的文件系统能力或对象存储能力对数据进行存储后,可以将数据从基于一种能力(文件系统能力或对象存储能力)的存储,切换为基于另一种能力(对象存储能力或文件系统能力)的存储。
具体地,在按照示例1存储数据后,还可以将数据转为按照示例2存储,以使得数据从具备文件系统能力切换到具备对象存储能力。
相应地,在按照示例2存储数据后,还可以将数据转为按照示例1进行存储,以使得数据从具备对象存储能力切换到具备文件系统能力。
如下为数据转存功能的一种示例性应用场景。
新数据写入时大都是热数据,针对热数据的计算访问模式较多,例如文件需要追加写、截断,临时计算目录需要重命名以及快照保护。
热数据保存一段时间后会变冷成为冷数据,冷数据几乎不需要更改,也就是说读多更新少,并且冷数据会强调文件数量的扩展性以及性价比。
通过上述分析可以得出,热数据需要文件系统能力,而冷数据需要对象存储能力。
因此,对于新来的待存储数据(即热数据),可以先按照示例1所示的方法进行存储,以使得热数据可以具备文件系统能力。
响应于预设条件的触发(例如存储超过预定时长热数据变成冷数据,或用户请求),可以将热数据按照示例2所示方法转为冷数据存储,以使冷数据可以具备对象存储能力。
在将热数据按照示例2所示方法进行存储时,当热数据转换为冷数据进行对象存储成功后,可以删除元数据中的地址映射信息。其中,调用对象存储服务存储待存储数据作为第二对象(即将热数据转换为冷数据进行对象存储),可以是指由对象存储服务将之前存储的对待存储数据进行切分得到的数据块合并为一个对象进行存储。即,可以仅通过更改元数据的方式将热数据转存为冷数据。
本公开可以配置两个访问域名,分别是用于为用户提供数据服务的文件服务系统的访问域名(即第一域名)以及文件服务系统关联的对象存储桶的域名(即第二域名)。用户可以通过第一域名访问文件服务系统以获取数据读、写服务,也可以通过第一域名访问文件服务系统以获取数据读、写服务。基于不同域名的数据读、写流程在下文有详细说明。
图2示出了本公开的融合了文件系统和对象存储的存储系统架构示意图。图2是以文件系统为HDFS为例描述的,应该知道也可以采用其他类型的文件系统。
如图2所示,存储系统可以设置在位于云端的计算服务器中。存储系统既提供HDFS接口访问,又通过对象存储接口访问。存储系统主要由HDFS SDK、“HDFS元数据”以及对象存储服务三部分组成。
HDFS SDK是文件存储客户端。HDFS SDK可以潜入到大数据分析平台,典型实现为Hadoop SDK,通过它可以实现HDFS接口访问,也可以实现对象存储接口访问。
存储系统对外提供文件读写服务时,由“HDFS元数据”提供元数据能力。“HDFS元数据”是指能够提供元数据能力的服务器或功能模块。“HDFS元数据”管理的元数据可以包括在存储数据时针对待存储数据生成的元数据,以及对外提供文件读写服务时的文件服务系统元数据。其中,文件服务系统是指针对用户创建的为用户提供文件读写服务的系统。
当HDFS SDK(如Hadoop SDK)访问针对用户创建的文件服务系统时,先到“HDFS元数据”读去元数据,然后再去“对象存储服务”读取数据。
对象存储服务即是现有对象存储技术,为客户端提供对象数据访问,同时为文件读写服务提供存储空间,即是说文件读写服务(如HDFS服务)的数据保存在对象存储。
在创建文件服务系统(如HDFS文件系统)时需要指定后端支持的对象存储桶(Bucket),此时可以得到两个访问文件服务系统的Endpoint(终端地址)的域名。
HDFS域名,对应于上文述及的第一域名。HDFS域名为推荐使用域名,应用可以基于该域名访问数据。HDFS域名可以是AZ级域名,也可以是Region级,推荐使用AZ级域名,例如hdfs-name.az.oss-cn-shenzhen.XXX.com。
桶域名,对应于上文述及的第二域名。桶域名是文件服务系统关联的对象存储桶域名,不推荐应用直接使用,而是在需要通过对象存储进行数据分发时,让其他应用可以通过互联网直接访问数据,该域名保持对象存储现有机制,例如datalake-bucket.oss-cn-shenzhen.XXX.com。
可以在HDFS SDK上配置这两个域名,应用缺省使用HDFS域名读、写数据。
图3示出了本公开的存储系统的数据组织结构以及冷热分层结构示意图。
图中示出的“HDFS元数据”和对象存储服务之间的元数据互通,可以包括文件服务系统元数据和对象存储桶信息之间的互通,以及与互通的元数据相关的运行态的进程之间的相互处理。
存储系统在对外提供文件存储服务时,“HDFS元数据”可以按照目录树方式组织元数据,提供根目录(例如图中“根”)、子目录(例如图中“子目录1、子目录2、子目录3”)、文件(例如图中“热文件、冷文件”)存储能力。
热文件中可以记录对数据进行切分得到的各个地址块映射信息。冷文件中可以记录存根,该存根描述的是冷文件在文件服务系统中的绝对路径。
新写入的文件是热文件时,热文件会按一定大小切片,所以文件内容的元数据由多个“地址块映射组”成。例如100MB的文件按1MB切片,那么第一个1MB的元数据为地址块1映射。地址块1映射存放该1MB数据在对象存储上的对象名,对象命名格式为md5(fileid)-offset-size,相关数据结构可以定义为
struct{
int64 block-id;
string obj-name;//对象命名规则,例如/bucket-name/fs-prefix/md5(fileid)-offset-size
}
因此,特定文件服务系统的数据块都保存在/bucket-name/fs-prefix/前缀下,bucket-name为用户文件系统关联的桶名,fs-prefix为该用户文件服务系统内容切片存储的前缀。
HDFS SDK从“HDFS元数据”得到文件的元数据信息后,就可以通过地址块映射表得到要读取数据内容的对象名,从而可以直接到对象存储上读取数据。
热数据通过树型结构组织从而可以支持目录原子化操作,采用数据切片方式组织元数据从而可以方便的支持文件的追加写以及截断操作。
热数据存放一段时间后变为冷数据,对于冷数据来说应用通常不会再去修改(例如不会执行目录重命名,也不会修改文件)。此时,可以把热数据转存到对象存储,例如可以将上述描述的100MB文件直接存放为一个独立的对象。当热数据转换为冷数据的对象成功后,热数据将删除“数据块映射”的元数据,而是用元数据记录“存根”,该存根记录的是对象存储上对象名,此对象名和该文件在HDFS文件系统中的绝对路径对应。
例如,HDFS中的热数据文件/test/2021-5/datalake-file转换为冷数据文件后,在对象存储上的对象名保持一样,也保持为/test/2021-5/datalake-file,在HDFS元数据对应文件元数据的“存根”则更改为该对象名。通过这种方式的冷热分层,可以在对象存储上直接读取冷数据文件,并且由于将HDFS元数据简化为“存根”记录,从而降低了HDFS元数据规模,并充分利用对象存储的扩展性管理冷数据,最终实现数据湖融合存储的扩展性。
用户使用本公开的数据服务之前,需要先创建文件服务系统,得到访问该文件服务系统的Endpoint(可以用HTTP地址表示),用户可以通过访问该Endpoint进行数据读写。其中,可以为该Endpoint配置两个访问域名,即上文述及的第一域名和第二域名。
下面就文件服务系统的创建以及文件服务系统创建后的数据读写进行说明。
图4示出了文件服务系统的创建流程示意图。
在步骤S410,响应于文件服务系统创建请求,生成文件服务系统元数据。
在为用户提供文件服务前需要先为用户创建文件服务系统。用户可以通过登录相关应用请求为其创建文件服务系统。图4中的控制台可以是指用户登录应用所对应的服务端。
“HDFS元数据”会记录用户信息,从而方便后续找出为该用户创建的文件服务系统。
文件服务系统元数据可以是指与创建的文件服务系统相关的信息,如可以是文件服务系统的(关键)配置数据,典型如可以包括文件服务系统名(例如:test-spark)、描述信息(例如:XXXX测试文件服务系统)、权限信息(例如私有访问<只有本用户可读写>)。
文件服务系统创建请求中可以携带用户提供的用户ID信息。“HDFS元数据”在生成文件服务系统元数据时,还可以记录此用户ID信息。
在步骤S420,创建对象存储桶,并将至少部分文件服务系统元数据传入对象存储桶。
可以调用对象存储服务设置(创建)文件服务系统关联的对象存储桶,文件服务系统关联的对象存储桶用于作为文件服务系统中的数据的容器。
传入对象存储桶的文件服务系统元数据可以是指文件服务系统的关键配置数据,如文件服务系统名、描述信息以及权限信息等,以尽量减少无效参数传入。
在步骤S430,生成对象存储服务元数据。
对象存储服务元数据可以记录用户、文件服务系统以及对象存储桶之间的关联关系(也即映射关系),以帮助后续的反向查找。
例如,可以将“用户、文件服务系统元数据以及对象存储桶”关联为一条数据库记录,作为对象存储元数据的扩展,因此该条记录保存了映射关系。其中用户、文件服务系统元数据是步骤S410的内容,而对象存储桶是按照对象存储技术原理引入的内容。
在步骤S440,更新文件服务系统元数据。
更新文件服务系统元数据,可以是指将对象存储桶与文件服务系统关联起来。在生成文件服务系统元数据时还可以记录用户信息,如此更新后的文件服务系统元数据,可以反映用户、文件服务系统以及对象存储桶之间的关联关系。
在创建文件服务系统时,可以配置两个用于访问文件服务系统的域名,即上文述及的第一域名和第二域名。在文件服务系统创建成功后,可以返回第一域名和第二域名。
用户可以通过第一域名访问文件服务系统以获取数据读写服务,也可以通过第二域名获取数据读写服务。第一域名可以是推荐使用域名。第二域名不推荐应用直接使用,而是在需要通过对象存储进行数据分发时,让其他应用可以通过互联网直接访问数据。
1、基于不同域名的数据写流程
响应于基于第一域名的数据写入请求,可以按照上文示例1的描述存储数据。
响应于基于第二域名的数据写入请求,可以重定向为基于第一域名的数据写入请求,以按照上文示例1的描述存储数据。例如,可以查找与第二域名关联的第一域名,并将基于第二域名的数据写入请求转换为基于第一域名的数据写入请求,重定向转发到第一域名。
下面以第一域名为HDFS域名、第二域名为桶域名为例,结合图5分别就基于HSFS域名的数据写入流程和基于桶域名的数据写入流程作进一步描述。
(a)基于HSFS域名的数据写入流程
步骤1、可以由HDFS SDK创建文件,写入数据。
步骤2、可以由“HDFS元数据”准备元数据、数据。
步骤3、按指定大小(如1MB)对数据进行切片,根据特定的规则命名各切片,并将各切片作为对象写入对象存储服务所提供的对象存储桶中。命名规则可以参见上文描述。
步骤4、对象存储服务可以按照正常的对象存储流程写对象。
步骤5、返回写入成功。
步骤6、提交元数据和数据。
步骤7、返回成功。
(b)基于桶域名的数据写入流程
步骤1、可以由HDFS SDK创建文件,写入数据。
步骤2、可以由对象存储服务检查与桶域名关联的HDFS域名。
步骤3、返回地址为HDFS域名的重定向。
通过重定向转发请求到HDFS域名,然后复用DFS域名的写入流程。通过这种重定向转发机制,从而实现两个域名写入请求的一致性。
2、基于不同域名的数据读流程
响应于基于第一域名的数据读取请求,可以首先获取待读取数据的元数据,然后根据待读取数据的元数据调用对象存储服务读取数据。
响应于基于第二域名的数据读取请求,首先需要屏蔽待读取数据的元数据中用于表征数据块的前缀(如/fs-prefix),因为这是文件服务系统内部使用的对象名,所以只能通过HDFS SDK来读取;然后基于屏蔽后的元数据调用对象存储服务读取数据;若基于屏蔽后的元数据无法调用对象存储服务读取数据,则将基于第二域名的数据读取请求重定向转换为基于第一域名的数据读取请求。
下面以第一域名为HDFS域名、第二域名为桶域名为例,结合图6分别就基于HSFS域名的数据读取流程和基于桶域名的数据读取流程作进一步描述。
(a)基于HSFS域名的数据读取流程
步骤1、可以由HDFS SDK向“HDFS元数据”发送读取文件元数据的请求。
步骤2、响应于元数据读取请求,“HDFS元数据”可以读取元数据。读取的元数据可以是地址块映射或存根。
步骤3、可以由“HDFS元数据”向HDFS SDK返回读取成功的消息,该消息中携带读取的元数据。
步骤4、根据元数据(地址块映射或存根)调用对象存储服务对象存储,读文件数据。
步骤5、由对象存储服务根据元数据读对象。
步骤6、返回成功。
整个流程,围绕HDFS的元数据组织格式,通过得到的地址块映射或存根记录,到对象存储读取数据。
(b)基于桶域名的数据读取流程
步骤1、可以由HDFS SDK向对象存储服务发送读取文件元数据的请求
步骤2、对象存储服务屏蔽地址块映射前缀(/fs-prefix),直接读对象成功则返回内容,否则返回地址为HDFS域名的重定向。通过重定向转发请求到HDFS域名,复用DFS域名的读取流程。
步骤3、返回成功。
整个流程的核心在步骤2,首先要屏蔽地址块映射前缀请求的读,因为这是HDFS内部使用的对象名,所以只能通过HDFS SDK来读取,其他APP的读取会返回异常。
如果数据读取的对象名不在屏蔽地址块映射前缀(例如/fs-prefix)中,则当作普通对象进行访问。对象存在(例如数据被HDFS的冷热分级功能,整个文件被保存到对象存储,HDFS元数据中只有“存根”)则直接访问对象数据。如果对象不存在,则数据可能是热数据,此时通过是重定向转发请求到HDFS域名,然后复用HDFS域名的读取流程。
通过这种多重判断机制,从而实现两个域名读取请求的一致性。
企业在基于数据湖演进的过程中,既有基于HDFS集群搭建的(老)应用环境,也有基于对象存储重建的(新)应用环境,造成两套系统的运维代价以及HDFS集群技术的成本竞争力不足的问题。
本公开的这种融合文件系统能力和对象存储能力的数据服务方案,既支持老应用对HDFS的目录原子操作、快照、文件追加写以及截断功能,又满足新应用对海量数据存储的大规模扩展能力,因此可以应用于数据湖中以实现统一的数据湖,为大数据计算分析应用提供真正云原生的数据湖存储,提供高性价比。
本公开的数据服务方法还可以实现为一种数据服务装置,用于为用户提供数据服务。其中数据服务装置可以设置在云端。
图7示出了根据本公开一个实施例的数据服务装置的结构示意图。其中,数据服务装置的功能单元可以由实现本公开原理的硬件、软件或硬件和软件的结合来实现。本领域技术人员可以理解的是,图7所描述的功能单元可以组合起来或者划分成子单元,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能单元的任何可能的组合、或者划分、或者更进一步的限定。
下面就数据服务装置可以具有的功能单元以及各功能单元可以执行的操作做简要说明,对于其中涉及的细节部分可以参见上文相关描述,这里不再赘述。
参见图7,数据服务装置700可以包括生成模块710和调用模块720。
生成模块710用于基于文件系统的数据组织方式,生成所述待存储数据的元数据,所述元数据用于描述所述待存储数据在对象存储服务中的对象名。调用模块720用于调用对象存储服务存储所述待存储数据。
关于数据服务装置700通过生成模块710和调用模块720存储数据的具体流程可以参见上文相关说明,如可以参见上文结合示例1、示例2以及其他相关描述。
数据服务装置700还可以包括配置模块,用于配置第一域名和第二域名,所述第一域名为用于为用户提供数据服务的文件服务系统的访问域名,所述第二域名为所述文件服务系统关联的对象存储桶的域名。
图8示出了根据本公开另一个实施例的数据服务装置的结构示意图。
参见图8,数据服务装置800可以包括生成模块810、设置模块820、传入模块830以及更新模块840。
生成模块810用于响应于文件服务系统创建请求,生成文件服务系统元数据。设置模块820用于调用对象存储服务设置文件服务系统关联的对象存储桶。传入模块830用于将至少部分文件服务系统元数据传入对象存储桶,以在对象存储桶中生成能够表征文件服务系统和对象存储桶之间的关联关系的对象存储服务元数据。更新模块840用于更新文件服务系统元数据,以使得更新后的文件服务系统元数据能够表征文件服务系统和对象存储桶之间的关联关系。
数据服务装置800还可以包括配置模块,用于配置第一域名和第二域名,第一域名为用于为用户提供数据服务的文件服务系统的访问域名,第二域名为文件服务系统关联的对象存储桶的域名。
数据服务装置800还可以包括切分模块、生成模块以及调用模块。响应基于第一域名的数据写入请求,切分模块对待存储数据进行切分,生成模块生成切分所得到的至少一个数据块各自的元数据,元数据包括数据块的地址映射信息,地址映射信息包括数据块在对象存储服务中的第一对象名;调用模块调用对象存储服务存储数据块作为第一对象
响应于预设条件的触发,调用模块可以调用对象存储服务存储待存储数据作为第二对象,并在元数据中记录第二对象在对象存储服务中的第二对象名
数据服务装置800还可以包括查找模块和转换模块。响应于基于第二域名的数据写入请求,查找模块查找与第二域名关联的第一域名。转换模块将基于第二域名的数据写入请求转换为基于第一域名的数据写入请求。
数据服务装置800还可以包括获取模块和第一读取模块。响应于基于第一域名的数据读取请求,获取模块获取待读取数据的元数据。读取模块根据待读取数据的元数据,调用对象存储服务读取数据。
数据服务装置800还可以包括屏蔽模块和第二读取模块。响应于基于第二域名的数据读取请求,屏蔽模块屏蔽请求读取的数据的元数据中用于表征数据块的前缀;第二读取模块基于屏蔽后的元数据调用对象存储服务读取数据。
数据服务装置800还可以包括转换模块,用于若对象存储服务基于屏蔽后的元数据无法读取数据,则将基于第二域名的数据读取请求转换为基于第一域名的数据读取请求。
图9示出了根据本公开一实施例可用于实现上述数据服务方法的计算设备的结构示意图。
参见图9,计算设备900包括存储器910和处理器920。
处理器920可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器920可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器920可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器910可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器920或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器910可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器910可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器910上存储有可执行代码,当可执行代码被处理器920处理时,可以使处理器920执行上文述及的数据服务方法。
上文中已经参考附图详细描述了根据本公开的数据服务方法、装置及设备。
此外,根据本公开的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本公开的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本公开还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本公开的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本公开的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (14)
1.一种数据服务方法,包括:
基于文件系统的数据组织方式,生成所述待存储数据的元数据,所述元数据用于描述所述待存储数据在对象存储服务中的对象名;
调用对象存储服务存储所述待存储数据。
2.根据权利要求1所述的方法,其中,
所述元数据包括对所述待存储数据进行切分得到的至少一个数据块各自的地址映射信息,所述地址映射信息包括所述数据块在对象存储服务中的第一对象名,
调用对象存储服务存储所述待存储数据的步骤包括:调用对象存储服务存储所述数据块作为第一对象。
3.根据权利要求2所述的方法,还包括:
响应于预设条件的触发,调用对象存储服务存储所述待存储数据作为第二对象;
在所述元数据中记录所述第二对象在所述对象存储服务中的第二对象名。
4.根据权利要求3所述的方法,其中,
所述第一对象名用于表征数据块所在的对象存储桶以及数据块的前缀,并且/或者
所述第二对象名用于表征所述待存储数据的绝对路径。
5.一种数据服务方法,包括:
响应于文件服务系统创建请求,生成文件服务系统元数据;
调用对象存储服务设置文件服务系统关联的对象存储桶;
将至少部分所述文件服务系统元数据传入所述对象存储桶,以在所述对象存储桶中生成能够表征文件服务系统和对象存储桶之间的关联关系的对象存储服务元数据;
更新所述文件服务系统元数据,以使得更新后的文件服务系统元数据能够表征文件服务系统和对象存储桶之间的关联关系。
6.根据权利要求5所述的方法,还包括:
配置第一域名和第二域名,所述第一域名为所述文件服务系统的访问域名,所述第二域名为所述文件服务系统关联的对象存储桶的域名。
7.根据权利要求6所述的方法,还包括:
响应基于所述第一域名的数据写入请求,对所述待存储数据进行切分,并生成切分所得到的至少一个数据块各自的元数据,所述元数据包括所述数据块的地址映射信息,所述地址映射信息包括所述数据块在对象存储服务中的第一对象名;
调用对象存储服务存储所述数据块作为第一对象。
8.根据权利要求7所述的方法,还包括:
响应于基于所述第二域名的数据写入请求,查找与所述第二域名关联的第一域名;
将所述基于第二域名的数据写入请求转换为基于第一域名的数据写入请求。
9.根据权利要求6所述的方法,还包括:
响应于基于第一域名的数据读取请求,获取待读取数据的元数据;
根据所述待读取数据的元数据,调用对象存储服务读取数据。
10.根据权利要求6所述的方法,还包括:
响应于基于第二域名的数据读取请求,屏蔽请求读取的数据的元数据中用于表征数据块的前缀;
基于屏蔽后的元数据调用对象存储服务读取数据。
11.根据权利要求10所述的方法,还包括:
若所述对象存储服务基于屏蔽后的元数据无法读取数据,则将所述基于第二域名的数据读取请求转换为基于第一域名的数据读取请求。
12.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至11中任何一项所述的方法。
13.一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至11中任何一项所述的方法。
14.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至11中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111166566.8A CN114201474A (zh) | 2021-09-30 | 2021-09-30 | 数据服务方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111166566.8A CN114201474A (zh) | 2021-09-30 | 2021-09-30 | 数据服务方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114201474A true CN114201474A (zh) | 2022-03-18 |
Family
ID=80646143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111166566.8A Pending CN114201474A (zh) | 2021-09-30 | 2021-09-30 | 数据服务方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201474A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150807A (zh) * | 2023-04-14 | 2023-05-23 | 深圳高灯计算机科技有限公司 | 对象存储方法、系统、计算机设备和存储介质 |
-
2021
- 2021-09-30 CN CN202111166566.8A patent/CN114201474A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150807A (zh) * | 2023-04-14 | 2023-05-23 | 深圳高灯计算机科技有限公司 | 对象存储方法、系统、计算机设备和存储介质 |
CN116150807B (zh) * | 2023-04-14 | 2023-07-04 | 深圳高灯计算机科技有限公司 | 对象存储方法、系统、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210056074A1 (en) | File System Data Access Method and File System | |
US10949551B2 (en) | Policy aware unified file system | |
US10853339B2 (en) | Peer to peer ownership negotiation | |
US10929419B2 (en) | Object storage backed file system | |
US8515911B1 (en) | Methods and apparatus for managing multiple point in time copies in a file system | |
US8548957B2 (en) | Method and system for recovering missing information at a computing device using a distributed virtual file system | |
US9020996B2 (en) | Synthetic view | |
US9367569B1 (en) | Recovery of directory information | |
US20170075909A1 (en) | In-line policy management with multi-level object handle | |
CN109684282B (zh) | 一种构建元数据缓存的方法及装置 | |
US8977662B1 (en) | Storing data objects from a flat namespace in a hierarchical directory structured file system | |
US11106625B2 (en) | Enabling a Hadoop file system with POSIX compliance | |
US7533133B1 (en) | Externally managed file versions | |
JP7374232B2 (ja) | コンテキスト付きのコンテンツ・アイテム共有 | |
CN108427677A (zh) | 一种对象访问方法、装置及电子设备 | |
US11200199B2 (en) | System that maintains objects created and modified within designated directories on a per-client basis in a network filesystem | |
CN114466083B (zh) | 支持协议互通的数据存储系统 | |
US8612717B2 (en) | Storage system | |
CN107408239B (zh) | 通过多个邮箱在通信应用中进行海量数据管理的架构 | |
CN114201474A (zh) | 数据服务方法及装置 | |
US8495112B2 (en) | Distributed file hierarchy management in a clustered redirect-on-write file system | |
JP2020502605A (ja) | プレースホルダーを介したコンテンツ管理システムの履歴コンテンツアイテムへのアクセス | |
US10776045B2 (en) | Multiple data storage management with reduced latency | |
KR100912126B1 (ko) | 객체 기반 파일 시스템의 파일셋의 스냅샷 제공 방법 | |
CN112181899A (zh) | 一种元数据的处理方法、装置及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |