适于大数据高并发访问的文件级分条系统
技术领域
本发明公开了一种适于大数据高并发访问的文件级分条系统,尤其涉及一种并行文件系统中适于大数据高并发访问的文件级分条系统。属于计算机技术领域。
背景技术
近年来,大数据成为学术界、工业界的研究热点,一方面,互联网、移动互联网、物联网,以及云计算的规模和应用的激增,大量的用户和应用的交互导致产生巨量的数据;另一方面,随着数据采集技术的进步,诸如卫星遥感、传感器、GPS等,也导致每时每刻都在产生巨量的数据;最后,在科研和工业等领域的复杂的新技术、新仪器的使用也导致数据量的产生与日俱增,例如,欧洲核子研究中心的大型粒子对撞机(Large Hardon Collider)每年产生约15PB的数据。据<<经济学人>>杂志分析称,全世界的数据量,在2005年约为150EB,2010年约为1200EB,到2020年,则预期为35000EB。大数据仅是一个相对概念,所以尚没有统一的定义。麦肯锡(McKinsey)将大数据定义为“规模超过典型的数据库软件工具的采集、存储、管理和分析能力的数据集”。IBM则从三个维度定义了大数据的特征(V3):容量(Volume),大数据处理要能应付数据规模的扩展,能处理TB级、PB级,甚至ZB级别的数据;速度(Velocity),大数据处理要能实现实时性(real time)、及时性(near time),批模式和流模式等处理方式;多样性(Variety),大数据的类型包括结构化、半结构化、非结构化等多种类型。IBM进一步增加了第四个V:真实性(Veracity),指大数据的内容必须真实可靠。总体看来,数据规模的飞速发展对传统的数据存储、处理、共享等方式提出了更高的要求。
并行输入/输出(Input/Output)系统历来是计算机系统结构领域一个热点研究方向,其旨在内存和磁盘之间创建多个数据通路来缓解计算机系统的I/O性能瓶颈问题,是突破大数据存储瓶颈的重要途径之一。并行文件系统作为并行输入/输出系统的核心软件之一,不仅提供了文件数据并行访问所需的语义和接口,而且能够通过文件的分条、文件的分配和数据服务器之间的动态负载均衡等手段来保证文件数据的聚合访问速度。现有主流的并行文件系统包括PVFS,Lustre和GPFS等。一般的文件数据负载均衡的完整流程可以抽象概括为三个关键步骤(如附图1所示):第一步,对进入并行文件系统的文件进行分块(条)。第二步,执行分条文件的分配。第三步,并行文件系统中I/O(I/O指输入/输出)服务器之间动态负载均衡。其中,文件分条是文件数据并行访问的前提之一。然而目前仍然缺乏一种适于大数据高并发访问的文件级分条系统,本发明即公开了一种面向高性能计算机文件系统中适于大数据高并发访问的文件级分条系统。
下面从本发明相关的学术研究及已发表论文分析、以及相关的专利分析两方面对本专利的创新性进行分析。在文件分条方法的相关研究和已发表论文分析上,随着近年来大数据存储相关技术的日益兴起,其文件系统中的文件请求体现出了更突出的大规模、高并发,高突发等特征;在大数据应用中,单一应用程序内部的计算阶段和I/O阶段相互交替(例如同步原语(MPI_File_sync、MPI_Barrier等);访问多个文件的平稳请求流也可能转换成为访问单一文件的突发请求流(如Server-Side coordination技术),目前迫切需要一种能够刻画该特征的分条模型。然而,因为面向单一的检查点文件可以方便进程失效之后的重启;单一的结果文件可以使得计算结果良好的封装,单一的共享文件也会降低元数据压力等原因,传统高性能计算机并行文件系统主要采用“单文件-多进程”的方式,并且虽然上述方法已在现有系统中被广泛采用,但目前尚缺乏一种文件级的分条粒度。此外,如表1所示,传统方法利用实验统计和最优化的数学理论等手段,针对如何确定系统级或者目录级的文件分条宽度的问题已经进行了大量的研究。但是由于系统级和目录级的文件分条没有考虑单一文件的访问特性,在面对大数据科学计算程序的I/O性能优化时并不能很好刻画文件级访问特征,特别在面对适于大数据应用的E级高性能计算机中面临的大规模高并发访问请求等挑战时,现有的系统级和目录级的文件分条方法存在难以适应细粒度和对单一文件访问特性等不足。与此相反,文件级别的分条方法能够很好考虑单一文件访问的特性,从而能够提高该文件访问性能。此外,现有的并行文件系统(如PVFS等)能够提供目录级分条和系统级分条支持的子系统,但仍然总体缺乏能支持文件级分条的系统。对于适于大数据应用的高性能计算机所使用的并行文件系统而言,由于其需要面对大量具有突发特性的科学计算程序的I/O请求、同时也得面对更高的文件访问并行度,可见,现有研究总体仍然缺乏一种能够很好的应用于高性能计算中数据高并发访问的文件级分条方法和系统,尤其缺乏一种能够根据每一个文件的自身的访问特点和整个文件系统的负载情况来确定文件的分条宽度的分条系统,从而为高效的并行数据的访问提供保证。
表1.现有文件分条方法和系统总结对比
发明内容
1、目的
本发明的目的是针对大数据应用挑战以及当前的并行文件系统中的分条策略缺乏考虑文件数据的高并发访问等缺点,发明一种适于大数据高并发访问的文件级分条系统,该分条系统能够根据文件的访问特点,如请求大小和文件并发访问度等,自动设置文件的分条大小,从而为高效的并行输入输出提供有力保证,最终达到提高整个大数据存储系统的性能的目的。
2、技术方案
本发明的技术方案如下:
首先给出本发明中所涉及的数学符号说明,如表2所示。
表2.所涉及数学符号及其实际的意义
一种适于大数据高并发访问的文件级分条系统,主要完成对文件系统应用层发起的大数据应用文件执行文件级分条功能,具有满足高并发和文件级分条实现的需求的技术特征。
一种适于大数据高并发访问的文件级分条系统,在体系结构上,位于并行文件系统的体系结构(自上而下为,应用层->并行文件系统层->物理硬件层)中的并行文件系统层。在流程上,主要实现面向高并发文件访问请求的文件级分条步骤,是进行文件分配和负载均衡步骤的前提步骤。
在模块构成上,一种适于大数据高并发访问的文件级分条系统主要包括如下模块:
(1)系统初始参数获取模块:主要完成系统初始参数获取。
(2)文件特征读取模块:主要完成从文件应用层和文件系统支撑层读取系统输入参数。
(3)单一文件最优分条宽度计算模块:主要完成计算单一文件请求的最优分条宽度。
(4)整个文件分条大小计算模块:主要完成计算整个文件的分条大小。
(5)文件级分条执行模块:主要完成执行文件级分条。
一种适于大数据高并发访问的文件级分条系统的运行流程如下所示:
第一步,系统初始参数获取。由系统初始参数获取模块获取初始系统参数。获取的六个参数包括平均磁盘的寻道时间P、磁盘的平均速度D、平均的网络延迟N、平均的文件请求大小l、文件访问的并发度c和数据服务器的数量m。然后,系统初始参数获取模块将文件访问历史和文件访问特征日志传递给并行文件系统。
第二步,文件特征读取。由文件特征读取模块从文件系统应用层和文件系统支撑层读入输入参数。读入的三个参数具体包括访问该文件的文件请求的平均大小l、该文件访问的并发度c、并行文件系统中的数据服务器的数量m。
第三步,单一文件最优分条宽度计算。由单一文件最优分条宽度计算模块根据第一步和第二步的结果,首先计算单一文件请求的最优分条大小
具体计算方法为:如果
则赋值
为
否则如果
则赋值
为l,如果
则赋值
为
然后,计算出单一文件请求的最优分条宽度w′计算方法为
第四步,整个文件分条大小计算。由整个文件分条大小计算模块,计算面向文件级别的高并发请求下的整个文件的最优分条大小。具体的计算方法为,如果w′×c≤m则赋值q
*为
否则如果w′×c>m,则赋值q
*为l。
第五步,文件级分条执行。由文件级分条执行模块根据分条宽度执行文件级分条。
附图说明
图1适于大数据高并发访问的文件级分条系统架构图
图2适于大数据高并发访问的文件级分条系统运行流程图
图3文件级分条执行模块通过PINT_dist_s函数被集成到PVFS2的方法示意图
图4文件级分条执行模块集成到PVFS2的PINT_dist_s函数中接口关系示意图
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,以PVFS2(一种典型的并行文件系统)和支持分布式负载均衡的应用实例为例,下面结合附图及具体实例对本发明再作进一步详细的说明,但不构成对本发明的限制。具体实施方法如下:
如附图1所示,本发明所实施的一种适于大数据高并发访问的文件级分条系统,在体系结构上,位于PVFS2的体系结构(自上而下为,应用层->并行文件系统层->物理硬件层)中的并行文件系统层。在流程上,位于PVFS2的负载均衡处理流程中的面向高并发文件访问请求的文件级分条(S1)步骤,是进行最小化I/O访问冲突的文件分配(S2)和基于分布式决策的负载均衡(S3)步骤的前提步骤。
基于上述体系结构,一种适于大数据高并发访问的文件级分条系统,如附图1所示,其模块构成的实施方法如下所示:该系统主要包括:
(1)文件特征读取模块:主要完成从系统的大数据应用层和文件系统支撑层读取系统输入参数。
(2)单一文件最优分条宽度计算模块:主要完成计算单一文件请求的最优分条宽度。
(3)整个文件分条大小计算模块:主要完成计算整个文件的分条大小。
(4)文件级分条执行模块:主要执行文件级分条。
基于上述体系结构和模块实施方法,一种适于大数据高并发访问的文件级分条系统,如附图1-附图4所示,基于PVFS2的运行流程的实施方法如下所示:
第一步,系统初始参数获取(S11)。首先由系统初始参数获取模块获取六个初始系统参数。这六个参数包括平均磁盘的寻道时间P、磁盘的平均速度D、平均的网络延迟N、平均的文件请求大小l、文件访问的并发度c和数据服务器的数量m。在这六个参数中,磁盘的平均寻道时间P和平均访问速度D通过人工从磁盘的技术手册中获得并输入系统初始参数获取模块。平均网络延迟N通过网络工具Netperf来获取并输入系统初始参数获取模块。对于一个已经建成的存储系统实例而言,这三个参数连同磁盘的数量一起被认为是固定不变的。然后,这六个参数被存储到PVFS2的配置文件中。平均的文件请求大小l和文件访问的并发度c从该文件访问的历史信息log文件中获得并输入系统初始参数获取模块,此外也可以采用动态环境中(例如ROM-IO中)获得。然后,系统初始参数获取模块通过pvfs2-touch或者ad pvfs2open两个函数将文件访问历史和文件访问特征日志传递给单一文件最优分条宽度计算模块。
第二步,文件特征读取(S12)。由文件特征读取模块从文件系统应用层和文件系统支撑层读入三个输入参数,三个参数具体包括访问该文件的文件请求的平均大小l、该文件访问的并发度c、并行文件系统中的数据服务器的数量m。
第三步,单一文件最优分条宽度计算(S13)。由单一文件最优分条宽度计算模块根据第一步和第二步的结果,首先计算单一文件请求的最优分条大小
具体计算方法为:如果
则赋值
为
否则如果
则赋值
为l,如果
则赋值
为
然后,计算出单一文件请求的最优分条宽度w′,计算方法为
第四步,整个文件分条大小计算(S14)。由整个文件分条大小计算模块,计算面向文件级别的高并发请求下的整个文件的最优分条大小。具体的计算方法为,如果w×c≤m则赋值q
*为
否则如果w′×c>m,则赋值q
*为l。
第五步,文件级分条执行(S15)。由文件级分条执行模块根据分条宽度执行文件级分条。本步骤的实施方法如下,对系统级和目录级的文件分条大小更改方法,由于大多数的并行文件系统都提供了更改文件分条大小的工具,因此,在本实例(PVFS2文件系统)中,我们通过修改整个并行文件系统的默认分条宽度来更改文件的分条宽度,此外通过PVFS2自带工具也可直接来对某一目录下的新建文件的分条宽度进行修改,可见,系统级和目录级的文件分条大小可直接利用PVFS2即可完成。然而,由于当前的并行文件系统(如PVFS2等)仍然缺乏对文件级别的分条宽度设置的支持,需要提供文件级分条的支持函数。由于现有的PVFS2中,一个文件主要通过系统提供的工具pvfs2-touch或者ROM-IO提供的函数adpvfs2open来创建,这两个函数都调用了PVFS2的文件创建接口PVFS sys create来创建实际的文件,即pvfs2-touch.c和ad_pvfs2_open.c被集成到PVFS_sys_create(filename,…,dist,…),如附图3所示。因此在对文件级分条具体实施时,本步骤被实现成一个名为update stripe size的函数;其次,updatestripe size直接作为一个子函数被集成到函数pvfs2-touch和ad pvfs2open中;然后,当一个文件被创建时,文件分布信息的分条大小即可通过调用PINT_dist_s的函数中的update stripe size函数,具体实现的PINT_dist_s的函数接口如图4所示,然后采用本发明所公布的方法可执行文件级分条,即本发明得到实施。
应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。