CN105068758A - 面向并行数据采集的分布式文件***数据i/o优化方法 - Google Patents
面向并行数据采集的分布式文件***数据i/o优化方法 Download PDFInfo
- Publication number
- CN105068758A CN105068758A CN201510437855.5A CN201510437855A CN105068758A CN 105068758 A CN105068758 A CN 105068758A CN 201510437855 A CN201510437855 A CN 201510437855A CN 105068758 A CN105068758 A CN 105068758A
- Authority
- CN
- China
- Prior art keywords
- data
- data server
- client
- file
- server
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向并行数据采集的分布式文件***数据I/O优化方法,由客户端、数据服务器程序、元数据服务器程序组成的分布式文件***与数据采集设备、数据采集程序集成部署于同一套硬件***之上,包括以下步骤:S1:对分布式文件***进行配置;S2:对数据采集程序、客户端、数据服务器和元数据服务器进行初始化;S3:数据采集程序向客户端直接发起请求,并写入数据;以及S4:通过分布式***中的任一客户端访问数据。本发明具有如下优点:在现有分布式文件***的基础上,提出一种新的硬件拓扑结构,并辅以特殊的算法和数据结构,对并行数据采集的I/O性能进行了一系列的优化,并提供了良好的可拓展性。
Description
技术领域
本发明涉及其中的文件管理领域,具体涉及一种面向并行数据采集的分布式文件***数据I/O优化方法。
背景技术
随着云计算的迅速发展,云存储也受到了非常广泛的关注。作为云存储的基石——并行分布式文件***,近年来已经被广泛地应用在各类存储***中。并行分布式文件***通常包含客户端、数据服务器和元数据服务器三部分,其中客户端部署在文件***应用程序所在的计算机上,应用可通过客户端调用相应的文件接口访问***中的文件;数据服务器通常用来存储文件数据,它通常放置在数据中心的机架上;元数据服务器是分布式文件***中最核心的组件,通常放置在一个数据中心中安全可靠的位置。客户端、数据服务器和元数据服务器之间通过Internet网络或本地局域网连接。
另一方面,并行数据采集设备与程序在近年来也得到了非常广泛的应用,其中,并行数据采集设备是一种实时的数据采集设备,例如交通网络中的摄像头等。随着各种视频设备的清晰度越来越高,其每秒钟产生的数据量已变得非常之大,而传统的分布式文件***的传输带宽已经难以满足如此大的数据量,因而使得文件***的长期处于一个阻塞状态,难以发挥其分布式的优势。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的一个目的在于提出一种面向并行数据采集的分布式文件***数据I/O优化方法。
为了实现上述目的,本发明的第一方面的实施例公开了一种面向并行数据采集的分布式文件***数据I/O优化方法,由客户端、数据服务器程序、元数据服务器程序组成的分布式文件***与数据采集设备、数据采集程序集成部署于同一套硬件***之上,所述方法包括以下步骤:S1:配置所述数据采集设备、述数据采集程序、所述客户端、所述数据服务器程序和所述元数据服务器程序的物理位置;S2:对所述数据采集程序、所述客户端、所述数据服务器和所述元数据服务器进行初始化;S3:所述数据采集程序向所述客户端直接发起请求,并写入数据;以及S4:通过所述分布式***中的任一客户端访问所述数据,其中,所述客户端提供获取所述数据存储位置的接口,在所述数据存储的节点上部署用户程序实现文件读操作的优化。
根据本发明实施例的面向并行数据采集的分布式文件***数据I/O优化方法,在现有分布式文件***的基础上,提出一种新的硬件拓扑结构,并辅以特殊的算法和数据结构,对并行数据采集的I/O性能进行了一系列的优化,并提供了良好的可拓展性。
另外,根据本发明上述实施例的面向并行数据采集的分布式文件***数据I/O优化方法,还可以具有如下附加的技术特征:
进一步地,所述步骤S1进一步包括:配置所述数据采集设备的物理位置:所述数据采集设备用来并行采集来自外部数据采集设备所产生的数据,所述数据采集设备按组连接到所述分布式文件***的多个不同的物理节点上,所述每组数据采集设备至少包括一台所述数据采集设备;配置所述数据采集程序的物理位置:所述数据采集程序首先接收所述数据采集设备所采集的数据,然后调用所述客户端,将所述采集的数据存储于所述分布式文件***中;所述数据采集程序部署在所述分布式文件***中每个物理节点上;配置所述客户端的物理位置:所述客户端是所述分布式文件***面向应用程序的接口模块,所有部署有所述数据采集程序的物理节点均设置所述客户端;配置所述数据服务器程序的物理位置:所述数据服务器用来存储应用的数据,所述数据服务器与所述数据采集程序、所述客户端集成设置,所有设置所述数据采集程序和所述客户端的物理节点均设置所述数据服务器;配置所述元数据服务器的物理位置:所述元数据服务器负责所述分布式文件***中所有元数据操作,所述元数据服务器可设置于所述分布式文件***中任意物理节点上。
进一步地,所述步骤S2进一步包括:对所述数据采集程序进行初始化:实时接收来自所述数据采集设备的数据;对所述客户端进行初始化:所述客户端启动时,获取所述客户端所在物理节点的唯一标识,同时与所述元数据服务器建立通信,获取必要的文件***元数据信息,依据所述元数据信息将所述分布式文件***挂载至本地目录;所有由所述数据采集程序发起的数据读写将通过所述本地目录进行;对所述数据服务器进行初始化:所述数据服务器启动时,首先获取所述数据服务器所在物理节点的唯一标识,同时初始化所有所述数据服务器所管理的存储资源并进行汇总;随后建立与所述元数据服务器之间的通信,将存储资源信息和所述唯一标识报告给所述元数据服务器进入服务状态,等待来自所述客户端和所述元数据服务器的数据访问请求;在所述数据服务器运行过程中,所述数据服务器周期性汇总所述数据服务器所在节点的存储资源信息,并上报给所述元数据服务器;对所述元数据服务器进行初始化:所述元数据服务器启动后,从本地存储设备上加载必要的元数据信息,等待来自所述客户端和所述数据服务器的状态初始化请求,当获取到来自不同的所述数据服务器的状态报告请求后,建立数据服务器列表,所述数据服务器列表记录所有所述数据服务器的信息。
进一步地,所述步骤S3进一步包括:S301:所述数据采集程序向所述分布式文件***客户端发起写数据的请求;S302:所述客户端接收到写请求后,将所述写操作包装成一个面向所述元数据服务器的创建文件请求并发送;在发送请求前,所述客户端检查自身是否拥有一个当前有效的数据服务器列表,如果没有,则向所述数据服务器请求获取最新的数据服务器列表;S303:所述元数据服务器接收到来自所述客户端的创建文件的请求后,在所述分布式文件***后台为所述客户端所请求的文件增加一份元数据信息,其中所述元数据信息包括客户端ID、文件的绝对路径、文件包含的数据块个数、各个文件块的唯一标识、哈希值、容量、物理位置,以及整个文件的访问权限列表;在初始状态时,所述客户端ID设置成当前客户端,文件版本号设置为1,其余项为空;将文件创建成功的消息返回所述客户端,根据所述客户端所发送的所述数据服务器列表更新标记,选择是否在响应中附加所有活动的数据服务器列表;S304:所述客户端接收到所述元数据服务器的响应后,首先更新本地的数据服务器列表,然后再将所述数据采集程序所请求的写操作包装成一个新的写请求,在所述本地的数据服务器列表中根据所述唯一标识查询具有相同唯一标识的数据服务器,如果存在相同的唯一标识的数据服务器,且所述数据服务器的状态为可写,则将所述写请求发送至所述数据服务器,否则在当前所述数据服务器列表中随机选择一个可写的数据服务器,向选中的数据服务器中发送创建新文件的请求;S305:所述数据服务器接收到来自客户端的创建文件请求后,所述数据服务器向所述元数据服务器发起验证请求,确认当前客户端已将当前新建文件的请求发送至元数据服务器端,并得到了所述元数据服务器的许可;验证成功后,所述数据服务器在所管理的存储资源中选择一组具有RAID机制的磁盘阵列,然后在所述磁盘阵列中创建新文件,并将所述新文件的句柄返回给所述客户端;S306:所述客户端在接收到所述句柄后,将所述句柄返回给所述数据采集程序,所述数据采集程序直接通过SCSI总线向所述磁盘阵列中写入数据;所述数据服务器在后台检测步骤S302中所写入的数据量,待写入的所述数据量达到一个预设值,或检测到本次写操作完成后,所述数据服务器向所述元数据服务器发起更新元数据的请求,将已写入的数据看成一个数据块,并赋予唯一的对象标识,并计算所述数据块的哈希值,最后将数据块的对象标识、物理位置、所述数据块大小和哈希值发送给所述元数据服务器;所述元数据服务器更新元数据中的文件块数量、各文件块的对象标识、物理位置和哈希值,更新完毕后向所述数据服务器返回元数据信息更新成功的响应;所述数据服务器向所述数据采集程序返回写操作成功的响应;S307:所述数据采集程序的本次写操作完成,如果数据采集程序还有后续面向该文件的写操作,则重复步骤S305到步骤S306;S308:所述数据采集程序完成所有文件的数据写操作后,调用所述客户端的文件关闭操作接口关闭文件,所述客户端检查所述文件的元数据一致性,确认无误后,向所述元数据服务器发送文件关闭请求,所述元数据服务器处理所述请求,确认所述文件元数据信息表达最新的文件状态,并通知所述数据服务器本次写操作已完成。
进一步地,所述步骤S4进一步包括:S401:用户程序通过所述客户端的挂载目录访问特定文件,首先调用所述客户端的接口,所述客户端根据所传入的文件路径,向所述元数据服务器发起请求,获取所述特定文件的元数据信息;S402:所述元数据服务器接收到请求后,根据文件路径名查找所述特定文件的元数据信息,所述特定文件的元数据信息中包含所述特定文件的数据布局信息,所述数据布局信息描述了文件数据的不同部分所存储的数据服务器和对应的唯一标识,所述元数据服务器将找到的所述特定文件的元数据信息作为响应返回给所述客户端;S403:所述客户端收到所述特定文件的元数据信息后,将其暂存于所述客户端中,然后做所述元数据进行权限检查和完整性检查,确认无误后,返回打开成功给上层应用程序;S404:打开文件后,所述上层应用程序按照需要读取文件数据,读取所述文件数据时需提供的参数包括:读操作开始的起始位置和读取的数据量所述文件数据通过读操作接口被送达所述客户端;S405:所述客户端根据所述读操作开始的起始位置和所述读取的数据量在文件的布局信息中进行匹配,查找出需要访问的数据块对象的唯一标识和所述数据块对象中的所述读操作开始的起始位置和所述读取的数据量;所述布局信息中还包含所述数据块对象的存储位置;S406:所述客户端获取所有相关数据块的唯一标识和对应的所述数据服务器的访问点后,并发地向所述数据服务器发起读请求并附带所述数据块对象的唯一标识和访问参数,等待所述数据服务器的响应;S407:所述数据服务器接收到数据读请求后,根据所述数据块对象的唯一标识和参数,定位到具体的磁盘和磁盘上所述数据块对象的存储位置,发起本地读操作,获取所需数据,包装成响应发送回所述客户端;S408:所述客户端在收集到所有相关数据服务器所发回的数据后,根据所述布局信息,将每个请求所读取的数据组装成用户应用程序所需的数据并返回给所述用户程序。
进一步地,在所述分布式文件***后台运行异步副本备份机制,并用带有RAID机制的磁盘阵列来保证数据在异步备份之前的可靠性,具体包括以下步骤:A:用户通过文件访问接口设置文件的副本数量,若设置的数量大于1,所述分布式文件***的管理程序记录新写入文件的数据副本缺失;B:所述分布式文件***的管理程序周期性的扫描副本缺失的数据块对象列表,根据当前负载情况,异步实施副本复制;C:同一文件的所有数据对象设置在在同一数据服务器中,副本复制以文件为单位,所述步骤C进一步包括:C1:访问文件的元数据信息,获取数据布局,检查所述数据布局中的数据块对象,逐个数据块进行复制;C2:在选择副本所在的存储介质时,选用磁盘或者不带RAID功能的磁盘阵列;C3:当所有的副本均复制完成后,所述分布式文件***将最先存放数据的、带有RAID功能的磁盘阵列标志为可写的状态,为所述数据采集程序的腾出的写入空间;D:重复A至C3,直到所有文件的数据块副本缺失被修正。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例的***架构图;
图2是本发明一个实施例的数据采集程序写文件示意图;
图3是本发明一个实施例的用户读文件示意图;
图4是本发明一个实施例的数据异步备份示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
以下结合附图描述根据本发明实施例的面向并行数据采集的分布式文件***数据I/O优化方法。
面向并行数据采集的分布式文件***数据I/O优化方法可运行在目前主流的分布式文件***中,这些分布式文件***通常包括客户端程序、数据服务器程序和元数据服务器程序三大组件,各组件可分别部署在同一物理节点或多个不同的物理节点中。
面向数据采集的数据I/O方法中还包含另外两个组件,它们分别是数据采集设备与数据采集程序,其中数据采集设备是指用于实时、高效采集数据的设备,包括高清摄像头等;数据采集程序可以看作是数据采集设备的驱动程序,可部署在具体的物理节点中,用于收集所采集到的数据,并调用分布式文件***所提供的相应接口,完成数据的持久化操作。
在***运行之前,我们首先要部署以上组件的物理位置:数据采集程序、分布式文件***客户端程序、分布式文件***数据服务器程序部署在同一物理节点中,该物理节点同时配备带有RAID功能的磁盘阵列,从而提高磁盘的I/O性能并保证数据在初次写入时的可靠性;一个物理节点中可部署一个客户端、一个数据服务器和多个数据采集程序,其中,数据采集程序可调用客户端和数据服务器所提供的接口,并可通过物理节点的***总线直接向磁盘阵列写入文件内容;分布式文件***元数据服务器部署在数据中心,客户端、数据服务器可通过网络与元数据服务器之间进行通信。
在所有的实体均成功部署后,分布式文件***需按照以下流程进行初始化:
数据采集程序初始化:开始接收来自数据采集设备的数据;
客户端初始化:获取所在物理节点的唯一标识NodeID,同时与元数据服务器建立通信,获取必要的文件***元数据信息;
数据服务器初始化:首先获取所在物理节点的唯一标识NodeID,同时初始化所有自身所管理的存储资源:磁盘,计算磁盘的总容量和可用容量,并进行汇总;随后建立与元数据服务器之间的通信,将存储资源信息连同NodeID报告给元数据服务器;接着再进入服务状态,等待来自客户端和元数据服务器的数据访问请求;在之后的运行过程中,数据服务器会周期性汇总本节点存储资源信息,并上报给元数据服务器;
元数据服务器初始化:从本地存储设备上加载必要的元数据信息,随后等待来自客户端和数据服务器的状态初始化请求,当获取到来自不同数据服务器的状态报告请求后,建立数据服务器列表,该列表记录所有数据服务器的信息,包括:所在物理节点标识(NodeID),总容量,可用容量,状态等;随后客户端会在数据读写时请求该数据服务器列表。
初始化完成后,***按照以下步骤完成面向并行数据采集的I/O优化:
步骤(1):当写操作发生时,数据采集程序首先通过客户端向元数据服务器发起创建文件的请求,待元数据服务器为此文件新建元数据信息后,客户端在它所在的物理节点中寻找一个数据服务器;然后,数据服务器在存储介质,即磁盘阵列中新建一个文件,并将文件句柄返回给数据采集程序,由数据采集程序向磁盘阵列中写入内容;在数据采集程序写入文件内容的同时,数据服务器对写入的内容进行检测,并适时地产生相应的元数据信息,并发送给元数据服务器;当数据采集程序写完所有内容后,由客户端向元数据服务器发起关闭文件的请求,元数据服务器接收到该请求后通知数据服务器停止检测,至此,一次写操作完成,具体流程如图2所示;
步骤(2)当读操作发生时,客户端向元数据服务器发起读请求,然后再根据所返回的元数据信息,去相应的数据服务器中读取内容,并利用元数据里所包含的哈希值,对读取出来的内容进行完整性校验,并将校验后的数据内容返回给上层应用;读操作的具体流程如图3所示;
步骤(3)***管理程序在后台检测所有文件的副本情况,当有文件的副本数量小于预设值时,管理程序则向元数据服务器发起备份请求,在得到元数据服务器的同意后,再在活跃的数据服务器列表中,根据特定的算法综合考虑***负载、各副本之间的距离和网络带宽等因素,找出适合备份的数据服务器,并在找到的数据服务器中进行备份;本操作的具体流程如图4所示。
本发明的面向并行数据采集的分布式文件***数据I/O优化方法更加具体的步骤如下:
S1:配置数据采集设备、数据采集程序、分布式文件***客户端程序、分布式文件***数据服务器程序和分布式文件***的元数据服务器程序的物理位置;
S101:配置数据采集设备的物理位置:数据采集设备用来并行采集来自外部数据采集设备所产生的数据,它们以一个或几个为一组的方式,连接到多个不同的物理节点(具有网络访问权限的物理计算机)上;
S102:配置数据采集程序的物理位置:数据采集程序首先接收数据采集设备所采集的数据,然后调用分布式文件***的客户端程序,将采集到的数据存放至分布式文件***中;数据采集程序部署在上述物理节点中,每个物理节点均需部署此程序;
S103:配置分布式文件***客户端程序(以下简称客户端)的物理位置:客户端是分布式文件***面向应用程序的接口模块,所有部署有数据采集程序的物理节点均需部署客户端;
S104:配置分布式文件***数据服务器的物理位置(以下简称数据服务器):数据服务器用来存储应用的数据,它与数据采集程序、客户端集成部署,所有部署数据采集程序和客户端的物理节点同时也部署数据服务器;
S105:配置分布式文件***元数据服务器的物理位置:元数据服务器负责分布式文件***中所有元数据操作,是分布式文件***的控制中心;元数据服务器可部署于集群中任意物理节点(具有网络访问权限的计算机),不要求必须与其它模块集成部署,其它模块可通过网络访问元数据服务器;
S2:***初始化,步骤如下:
S201:数据采集程序初始化:开始接收来自数据采集设备的数据;数据采集设备可能是高清摄像头等,它们具有实时数据采集、数据量较大和数据必须持久化等特点;
S202:客户端初始化:客户端启动时,获取所在物理节点的唯一标识NodeID,同时与元数据服务器建立通信,获取必要的文件***元数据信息,依据这些信息将分布式文件***挂载至某个本地目录;所有由数据采集程序发起的数据读写将通过该本地目录进行,操作方式与节点的本地文件***方式一致;
S203:数据服务器初始化:数据服务器启动时,首先获取所在物理节点的唯一标识NodeID,同时初始化所有自身所管理的存储资源:磁盘,计算磁盘的总容量和可用容量,并进行汇总;随后建立与元数据服务器之间的通信,将存储资源信息连同NodeID报告给元数据服务器,随后进入服务状态,等待来自客户端和元数据服务器的数据访问请求;在之后的运行过程中,数据服务器会周期性汇总本节点存储资源信息,并上报给元数据服务器;
S204:元数据服务器初始化:元数据服务器启动后,从本地存储设备上加载必要的元数据信息,随后等待来自客户端和数据服务器的状态初始化请求,当获取到来自不同数据服务器的状态报告请求后,建立数据服务器列表,该列表记录所有数据服务器的信息,包括:所在物理节点标识(NodeID),总容量,可用容量,状态等;随后客户端会在数据读写时请求该数据服务器列表;
S3:数据采集程序通过分布式文件***客户端写入文件数据,其步骤如下:
S301:完成初始化操作以后,数据采集程序开始从外部设备上采集数据,所采集到的数据以文件的形式写入分布式文件***,即,数据采集程序向分布式文件***客户端发起写数据的请求;
S302:客户端程序接收到写请求后,首先将用户的写操作包装成一个面向元数据服务器的创建文件请求,并通过网络发送该请求;在发送请求前,客户端需要检查自身是否拥有一个当前有效的数据服务器列表,若没有,则向服务器请求获取最新的数据服务器列表;
S303:元数据服务器接收到来自客户端的创建文件的请求后,首先在***后台为客户端所请求的文件增加一份元数据信息,其中包括客户端ID、文件的绝对路径、文件包含的数据块个数、各个文件块的唯一标识ObjectID、哈希值、容量和物理位置,以及整个文件的访问权限列表;在初始状态时,客户端ID设置成当前客户端,文件版本号设置为1,其余各项暂时为空,此后,再将文件创建成功的消息返回客户端,然后再根据客户端所发送的数据服务器列表更新标记,选择是否在响应中附加所有活动的数据服务器列表;
S304:客户端接收到元数据服务器的响应后,首先更新本地的数据服务器列表,然后再将数据采集程序所请求的写操作包装成一个新的写请求,在数据服务器列表中根据本节点NodeID查询具有相同NodeID的数据服务器,如果存在NodeID相同的数据服务器,且该服务器的状态为“可写”,则将该写请求发送至该数据服务器,否则在当前列表中随机选择一个可写的数据服务器,然后向选中的数据服务器中发送创建新文件的请求;
S305:数据服务器接收到来自客户端的创建文件请求后,按照如下步骤进行处理:
S3051:数据服务器向元数据服务器发起验证请求,确认当前客户端已将当前新建文件的请求发送至元数据服务器端,并得到了元数据服务器的许可;
S3052:验证成功后,数据服务器在所管理的存储资源中选择一组具有RAID机制的磁盘阵列,然后在该磁盘阵列中创建新文件,并将此文件的句柄返回给客户端;
S306:客户端在接收到文件的句柄后,将该句柄返回给数据采集程序,然后再按照以下步骤处理:
S3061:数据采集程序直接通过SCSI总线向存储设备,即磁盘阵列中写入数据;
S3062:数据服务器在后台检测步骤(3.6.2)中所写入的数据量,待写入的数据量达到一个预设值,或检测到本次写操作完成后,数据服务器向元数据服务器发起更新元数据的请求,将已写入的数据看成一个数据块,并赋予唯一的对象标识ObjectID,并计算该数据块的哈希值,最后将数据块的ObjectID、物理位置,以及数据块大小和哈希值发送给元数据服务器;
S3063:元数据服务器更新元数据中的文件块数量、各文件块的ObjectID、物理位置和哈希值等信息,更新完毕后向数据服务器返回元数据信息更新成功的响应;
S3064:数据服务器向数据采集程序返回写操作成功的响应;
S307:数据采集程序的本次写操作完成如果数据采集程序还有后续面向该文件的写操作,则重复步骤(3.5)到步骤(3.6);
S308:数据采集程序完成所有文件的数据写操作后,调用客户端的文件关闭操作接口关闭文件,客户端检查该文件的元数据一致性,无误后,向元数据服务器发送文件关闭请求,元数据服务器处理该请求,确认该文件元数据信息表达最新的文件状态,并通知数据服务器本次写操作已完成;
S4:用户程序通过客户端读取分布式文件***中的文件数据,通过任何客户端均可访问所有文件***内的文件,一次文件读操作的步骤如下:
S401:用户程序通过客户端的挂载目录访问特定文件,首先调用客户端的open接口,客户端根据所传入的文件路径,向元数据服务器发起请求,获取该文件的元数据信息;
S402:元数据服务器接收到请求后,根据文件路径名查找该文件的元数据信息,文件元数据信息中包含文件的数据布局信息,布局信息描述了文件数据的不同部分所存储的数据服务器和对应的ObjectID,元数据服务器将找到的文件元数据信息,作为响应返回给客户端;
S403:客户端收到文件元数据后,将其暂存于客户端中,然后做必要的权限检查、完整性检查,确认无误后,返回打开成功给上层应用程序;
S404:打开文件后,应用程序即可按照需要读取文件数据,读取文件数据时需提供的参数包括:读操作开始的起始位置(Offset),以及要读取的数据量(Size),这些信息通过读操作接口被送达客户端;
S405:客户端根据Offset、Size在文件的布局信息中进行匹配,查找出需要访问的数据块对象的ObjectID,及该对象中的起始读取位置和大小;由于一次用户的读操作可能会映射成多个面向数据块对象的读操作,因此布局信息中还包含该数据块对象的存储位置,即:数据服务器的NodeID和各个数据块对象的物理位置;
S406:客户端再获取到所有相关数据块的ObjectID和对应的数据服务器的访问点后,并发地向这些数据服务器发起读请求并附带ObjectID和访问参数,随后等待数据服务器的响应;
S407:数据服务器接收到数据读请求后,根据ObjectID和参数,定位到具体的磁盘和磁盘上该对象的存储位置,发起本地读操作,获取所需数据,包装成响应发送回客户端;
S408:客户端在收集到所有相关数据服务器所发回的数据后,根据布局信息,将每个请求所读取的数据组装成用户应用程序所需的数据,并通过接口返回给用户程序;至此,一次读操作完成;
S409:由于文件数据写入时尽量选择本节点的数据服务器,一个文件的数据通常在一个数据服务器之上,因此,对文件读操作的优化需要结合用户程序的部署来实现;许多分布式文件***的客户端都提供了一个获取文件数据存储位置的接口,在部署用户程序时,可通过访问该接口获取文件的位置,并在该节点上部署用户程序,可以使分布式文件***的读操作不依赖网络传输,从而大大提升读取性能;
S5:分布式文件***为了保证数据的可靠性,通常采用副本机制,在此,为了兼顾访问性能和可靠性,本优化方法采取了在***后台运行的异步副本备份机制,并用带有RAID机制的磁盘阵列来保证数据在异步备份之前的可靠性;后台异步副本备份的具体步骤如下:
S501:用户通过文件访问接口设置该文件的副本数量,若设置的数量大于1,分布式文件***的管理程序会记录新写入文件的数据副本缺失,这是因为写操作除了写入本节点的数据副本外,并不实时产生其它副本;
S502:分布式文件***管理程序周期性的扫描副本缺失的数据块对象列表,根据当前负载情况,异步实施副本复制;
S503:为了提高数据的读取性能,一个文件的所有数据对象都应尽可能地在同一数据服务器中,因此,副本复制以文件为单位,具体的实施步骤如下:
S5031:访问文件的元数据信息,获取数据布局,检查所有布局中的数据块对象,选择现有数据服务器以外的其它数据服务器作为复制目标,开始逐个数据块进行复制;
S5032:由于副本机制本身就具有较高的可靠性,因此在选择副本所在的存储介质时,因尽量选用磁盘或者不带RAID功能的磁盘阵列,而不应选择那些具有RAID功能的阵列;
S5033:当所有的副本均复制完成后,分布式文件***会将最先存放数据的、带有RAID功能的磁盘阵列标志为可写的状态,为数据采集程序的腾出足够的写入空间;
S504:重复步骤S501至S503,直到所有文件的数据块副本缺失被修正。
另外,本发明实施例的面向并行数据采集的分布式文件***数据I/O优化方法的其它构成以及作用对于本领域的技术人员而言都是已知的,为了减少冗余,不做赘述。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同限定。
Claims (6)
1.一种面向并行数据采集的分布式文件***数据I/O优化方法,其特征在于,由客户端、数据服务器程序、元数据服务器程序组成的分布式文件***与数据采集设备、数据采集程序集成部署于同一套硬件***之上,所述方法包括以下步骤:
S1:配置所述数据采集设备、所述数据采集程序、所述客户端、所述数据服务器程序和所述元数据服务器程序的物理位置;
S2:对所述数据采集程序、所述客户端、所述数据服务器和所述元数据服务器进行初始化;
S3:所述数据采集程序向所述客户端直接发起请求,并写入数据;以及
S4:通过所述分布式***中的任一客户端访问所述数据,其中,所述客户端提供获取所述数据存储位置的接口,在所述数据存储的节点上部署用户程序实现文件读操作的优化。
2.根据权利要求1所述的面向并行数据采集的分布式文件***数据I/O优化方法,其特征在于,所述步骤S1进一步包括:
配置所述数据采集设备的物理位置:所述数据采集设备用来并行采集来自外部数据采集设备所产生的数据,所述数据采集设备按组连接到所述分布式文件***的多个不同的物理节点上,所述每组数据采集设备至少包括一台所述数据采集设备;
配置所述数据采集程序的物理位置:所述数据采集程序首先接收所述数据采集设备所采集的数据,然后调用所述客户端,将所述采集的数据存储于所述分布式文件***中;所述数据采集程序部署在所述分布式文件***中每个物理节点上;
配置所述客户端的物理位置:所述客户端是所述分布式文件***面向应用程序的接口模块,所有部署有所述数据采集程序的物理节点均设置所述客户端;
配置所述数据服务器程序的物理位置:所述数据服务器用来存储应用的数据,所述数据服务器与所述数据采集程序、所述客户端集成设置,所有设置所述数据采集程序和所述客户端的物理节点均设置所述数据服务器;
配置所述元数据服务器的物理位置:所述元数据服务器负责所述分布式文件***中所有元数据操作,所述元数据服务器可设置于所述分布式文件***中任意物理节点上。
3.根据权利要求1所述的面向并行数据采集的分布式文件***数据I/O优化方法,其特征在于,所述步骤S2进一步包括:
对所述数据采集程序进行初始化:实时接收来自所述数据采集设备的数据;
对所述客户端进行初始化:所述客户端启动时,获取所述客户端所在物理节点的唯一标识,同时与所述元数据服务器建立通信,获取必要的文件***元数据信息,依据所述元数据信息将所述分布式文件***挂载至本地目录;所有由所述数据采集程序发起的数据读写将通过所述本地目录进行;
对所述数据服务器进行初始化:所述数据服务器启动时,首先获取所述数据服务器所在物理节点的唯一标识,同时初始化所有所述数据服务器所管理的存储资源并进行汇总;随后建立与所述元数据服务器之间的通信,将存储资源信息和所述唯一标识报告给所述元数据服务器进入服务状态,等待来自所述客户端和所述元数据服务器的数据访问请求;在所述数据服务器运行过程中,所述数据服务器周期性汇总所述数据服务器所在节点的存储资源信息,并上报给所述元数据服务器;
对所述元数据服务器进行初始化:所述元数据服务器启动后,从本地存储设备上加载必要的元数据信息,等待来自所述客户端和所述数据服务器的状态初始化请求,当获取到来自不同的所述数据服务器的状态报告请求后,建立数据服务器列表,所述数据服务器列表记录所有所述数据服务器的信息。
4.根据权利要求3所述的面向并行数据采集的分布式文件***数据I/O优化方法,其特征在于,所述步骤S3进一步包括:
S301:所述数据采集程序向所述分布式文件***客户端发起写数据的请求;
S302:所述客户端接收到写请求后,将所述写操作包装成一个面向所述元数据服务器的创建文件请求并发送;在发送请求前,所述客户端检查自身是否拥有一个当前有效的数据服务器列表,如果没有,则向所述数据服务器请求获取最新的数据服务器列表;
S303:所述元数据服务器接收到来自所述客户端的创建文件的请求后,在所述分布式文件***后台为所述客户端所请求的文件增加一份元数据信息,其中所述元数据信息包括客户端ID、文件的绝对路径、文件包含的数据块个数、各个文件块的唯一标识、哈希值、容量、物理位置,以及整个文件的访问权限列表;在初始状态时,所述客户端ID设置成当前客户端,文件版本号设置为1,其余项为空;将文件创建成功的消息返回所述客户端,根据所述客户端所发送的所述数据服务器列表更新标记,选择是否在响应中附加所有活动的数据服务器列表;
S304:所述客户端接收到所述元数据服务器的响应后,首先更新本地的数据服务器列表,然后再将所述数据采集程序所请求的写操作包装成一个新的写请求,在所述本地的数据服务器列表中根据所述唯一标识查询具有相同唯一标识的数据服务器,如果存在相同的唯一标识的数据服务器,且所述数据服务器的状态为可写,则将所述写请求发送至所述数据服务器,否则在当前所述数据服务器列表中随机选择一个可写的数据服务器,向选中的数据服务器中发送创建新文件的请求;
S305:所述数据服务器接收到来自客户端的创建文件请求后,所述数据服务器向所述元数据服务器发起验证请求,确认当前客户端已将当前新建文件的请求发送至元数据服务器端,并得到了所述元数据服务器的许可;验证成功后,所述数据服务器在所管理的存储资源中选择一组具有RAID机制的磁盘阵列,然后在所述磁盘阵列中创建新文件,并将所述新文件的句柄返回给所述客户端;
S306:所述客户端在接收到所述句柄后,将所述句柄返回给所述数据采集程序,所述数据采集程序直接通过SCSI总线向所述磁盘阵列中写入数据;所述数据服务器在后台检测步骤S302中所写入的数据量,待写入的所述数据量达到一个预设值,或检测到本次写操作完成后,所述数据服务器向所述元数据服务器发起更新元数据的请求,将已写入的数据看成一个数据块,并赋予唯一的对象标识,并计算所述数据块的哈希值,最后将数据块的对象标识、物理位置、所述数据块大小和哈希值发送给所述元数据服务器;所述元数据服务器更新元数据中的文件块数量、各文件块的对象标识、物理位置和哈希值,更新完毕后向所述数据服务器返回元数据信息更新成功的响应;所述数据服务器向所述数据采集程序返回写操作成功的响应;
S307:所述数据采集程序的本次写操作完成,如果数据采集程序还有后续面向该文件的写操作,则重复步骤S305到步骤S306;
S308:所述数据采集程序完成所有文件的数据写操作后,调用所述客户端的文件关闭操作接口关闭文件,所述客户端检查所述文件的元数据一致性,确认无误后,向所述元数据服务器发送文件关闭请求,所述元数据服务器处理所述请求,确认所述文件元数据信息表达最新的文件状态,并通知所述数据服务器本次写操作已完成。
5.根据权利要求4所述的面向并行数据采集的分布式文件***数据I/O优化方法,其特征在于,所述步骤S4进一步包括:
S401:用户程序通过所述客户端的挂载目录访问特定文件,首先调用所述客户端的接口,所述客户端根据所传入的文件路径,向所述元数据服务器发起请求,获取所述特定文件的元数据信息;
S402:所述元数据服务器接收到请求后,根据文件路径名查找所述特定文件的元数据信息,所述特定文件的元数据信息中包含所述特定文件的数据布局信息,所述数据布局信息描述了文件数据的不同部分所存储的数据服务器和对应的唯一标识,所述元数据服务器将找到的所述特定文件的元数据信息作为响应返回给所述客户端;
S403:所述客户端收到所述特定文件的元数据信息后,将其暂存于所述客户端中,然后做所述元数据进行权限检查和完整性检查,确认无误后,返回打开成功给上层应用程序;
S404:打开文件后,所述上层应用程序按照需要读取文件数据,读取所述文件数据时需提供的参数包括:读操作开始的起始位置和读取的数据量所述文件数据通过读操作接口被送达所述客户端;
S405:所述客户端根据所述读操作开始的起始位置和所述读取的数据量在文件的布局信息中进行匹配,查找出需要访问的数据块对象的唯一标识和所述数据块对象中的所述读操作开始的起始位置和所述读取的数据量;所述布局信息中还包含所述数据块对象的存储位置;
S406:所述客户端获取所有相关数据块的唯一标识和对应的所述数据服务器的访问点后,并发地向所述数据服务器发起读请求并附带所述数据块对象的唯一标识和访问参数,等待所述数据服务器的响应;
S407:所述数据服务器接收到数据读请求后,根据所述数据块对象的唯一标识和参数,定位到具体的磁盘和磁盘上所述数据块对象的存储位置,发起本地读操作,获取所需数据,包装成响应发送回所述客户端;
S408:所述客户端在收集到所有相关数据服务器所发回的数据后,根据所述布局信息,将每个请求所读取的数据组装成用户应用程序所需的数据并返回给所述用户程序。
6.根据权利要求5所述的面向并行数据采集的分布式文件***数据I/O优化方法,其特征在于,在所述分布式文件***后台运行异步副本备份机制,并用带有RAID机制的磁盘阵列来保证数据在异步备份之前的可靠性,具体包括以下步骤:
A:用户通过文件访问接口设置文件的副本数量,若设置的数量大于1,所述分布式文件***的管理程序记录新写入文件的数据副本缺失;
B:所述分布式文件***的管理程序周期性的扫描副本缺失的数据块对象列表,根据当前负载情况,异步实施副本复制;
C:同一文件的所有数据对象设置在在同一数据服务器中,副本复制以文件为单位,所述步骤C进一步包括:
C1:访问文件的元数据信息,获取数据布局,检查所述数据布局中的数据块对象,逐个数据块进行复制;
C2:在选择副本所在的存储介质时,选用磁盘或者不带RAID功能的磁盘阵列;
C3:当所有的副本均复制完成后,所述分布式文件***将最先存放数据的、带有RAID功能的磁盘阵列标志为可写的状态,为所述数据采集程序的腾出的写入空间;
D:重复A至C3,直到所有文件的数据块副本缺失被修正。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510437855.5A CN105068758B (zh) | 2015-07-23 | 2015-07-23 | 面向并行数据采集的分布式文件***数据i/o优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510437855.5A CN105068758B (zh) | 2015-07-23 | 2015-07-23 | 面向并行数据采集的分布式文件***数据i/o优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105068758A true CN105068758A (zh) | 2015-11-18 |
CN105068758B CN105068758B (zh) | 2018-06-19 |
Family
ID=54498140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510437855.5A Active CN105068758B (zh) | 2015-07-23 | 2015-07-23 | 面向并行数据采集的分布式文件***数据i/o优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105068758B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021447A (zh) * | 2016-05-16 | 2016-10-12 | 吴栋 | 浏览端通过二维码读取发布端网页后再连接发布端的*** |
CN106599323A (zh) * | 2017-01-03 | 2017-04-26 | 北京百度网讯科技有限公司 | 在分布式文件***中实现分布式管道的方法和装置 |
CN106844417A (zh) * | 2016-11-21 | 2017-06-13 | 深圳市深信服电子科技有限公司 | 基于文件目录的热迁移方法及装置 |
CN106980647A (zh) * | 2017-02-24 | 2017-07-25 | 深圳市中博睿存信息技术有限公司 | 一种分布式文件***数据分布方法及装置 |
CN107678901A (zh) * | 2017-10-30 | 2018-02-09 | 郑州云海信息技术有限公司 | 基于Linux分布式***的磁盘性能测试***和方法 |
CN109600447A (zh) * | 2018-12-21 | 2019-04-09 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置和*** |
CN109635948A (zh) * | 2018-12-19 | 2019-04-16 | 北京达佳互联信息技术有限公司 | 在线训练方法、装置、***及计算机可读存储介质 |
CN110287148A (zh) * | 2019-07-01 | 2019-09-27 | 中原银行股份有限公司 | 一种数据交互方法及装置 |
CN110955643A (zh) * | 2019-11-22 | 2020-04-03 | 浪潮电子信息产业股份有限公司 | 一种数据readdir方法、***、设备及计算机介质 |
CN111427861A (zh) * | 2020-02-28 | 2020-07-17 | 云知声智能科技股份有限公司 | 分布式文件***配置方法及装置 |
CN112100146A (zh) * | 2020-09-21 | 2020-12-18 | 重庆紫光华山智安科技有限公司 | 一种高效的纠删分布式存储写入方法、***、介质及终端 |
CN112199048A (zh) * | 2020-10-20 | 2021-01-08 | 重庆紫光华山智安科技有限公司 | 数据读取方法、***、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159498A1 (en) * | 2010-12-16 | 2012-06-21 | Terry Wilmarth | Fast and linearizable concurrent priority queue via dynamic aggregation of operations |
CN102833580A (zh) * | 2012-09-19 | 2012-12-19 | 南京斯坦德通信股份有限公司 | 基于infiniband的高清视频应用***及方法 |
-
2015
- 2015-07-23 CN CN201510437855.5A patent/CN105068758B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159498A1 (en) * | 2010-12-16 | 2012-06-21 | Terry Wilmarth | Fast and linearizable concurrent priority queue via dynamic aggregation of operations |
CN102833580A (zh) * | 2012-09-19 | 2012-12-19 | 南京斯坦德通信股份有限公司 | 基于infiniband的高清视频应用***及方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021447A (zh) * | 2016-05-16 | 2016-10-12 | 吴栋 | 浏览端通过二维码读取发布端网页后再连接发布端的*** |
CN106844417A (zh) * | 2016-11-21 | 2017-06-13 | 深圳市深信服电子科技有限公司 | 基于文件目录的热迁移方法及装置 |
CN106844417B (zh) * | 2016-11-21 | 2020-07-28 | 深信服科技股份有限公司 | 基于文件目录的热迁移方法及装置 |
CN106599323A (zh) * | 2017-01-03 | 2017-04-26 | 北京百度网讯科技有限公司 | 在分布式文件***中实现分布式管道的方法和装置 |
CN106599323B (zh) * | 2017-01-03 | 2020-04-10 | 北京百度网讯科技有限公司 | 在分布式文件***中实现分布式管道的方法和装置 |
CN106980647A (zh) * | 2017-02-24 | 2017-07-25 | 深圳市中博睿存信息技术有限公司 | 一种分布式文件***数据分布方法及装置 |
CN107678901A (zh) * | 2017-10-30 | 2018-02-09 | 郑州云海信息技术有限公司 | 基于Linux分布式***的磁盘性能测试***和方法 |
CN109635948A (zh) * | 2018-12-19 | 2019-04-16 | 北京达佳互联信息技术有限公司 | 在线训练方法、装置、***及计算机可读存储介质 |
CN109600447A (zh) * | 2018-12-21 | 2019-04-09 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置和*** |
US11277498B2 (en) | 2018-12-21 | 2022-03-15 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method, apparatus and system for processing data |
US11064053B2 (en) | 2018-12-21 | 2021-07-13 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method, apparatus and system for processing data |
CN109600447B (zh) * | 2018-12-21 | 2021-08-10 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置和*** |
CN110287148A (zh) * | 2019-07-01 | 2019-09-27 | 中原银行股份有限公司 | 一种数据交互方法及装置 |
CN110955643A (zh) * | 2019-11-22 | 2020-04-03 | 浪潮电子信息产业股份有限公司 | 一种数据readdir方法、***、设备及计算机介质 |
CN111427861A (zh) * | 2020-02-28 | 2020-07-17 | 云知声智能科技股份有限公司 | 分布式文件***配置方法及装置 |
CN111427861B (zh) * | 2020-02-28 | 2023-05-05 | 云知声智能科技股份有限公司 | 分布式文件***配置方法及装置 |
CN112100146A (zh) * | 2020-09-21 | 2020-12-18 | 重庆紫光华山智安科技有限公司 | 一种高效的纠删分布式存储写入方法、***、介质及终端 |
CN112199048A (zh) * | 2020-10-20 | 2021-01-08 | 重庆紫光华山智安科技有限公司 | 数据读取方法、***、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105068758B (zh) | 2018-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105068758A (zh) | 面向并行数据采集的分布式文件***数据i/o优化方法 | |
CN100485678C (zh) | 将虚拟映射存入对象属性中的分布式基于对象的存储*** | |
CN103608796B (zh) | 大规模存储*** | |
CN106407040B (zh) | 一种远程数据复制方法及*** | |
CN102681789B (zh) | 在一储存***架构下产生一虚拟卷的数据存取方法 | |
CN107734026B (zh) | 一种网络附加存储集群的设计方法、装置及设备 | |
CN103765406B (zh) | 用于远程更新执行进程的方法和装置 | |
US8918392B1 (en) | Data storage mapping and management | |
JP6141189B2 (ja) | ファイルシステムにおける透過的なフェイルオーバーの提供 | |
US8171100B2 (en) | Reducing latency of access requests in distributed storage systems having a shared data set | |
US11314444B1 (en) | Environment-sensitive distributed data management | |
US20170013046A1 (en) | Data-centric data storage | |
US8930364B1 (en) | Intelligent data integration | |
CN101751415B (zh) | 元数据服务***、元数据同步方法与写服务器更新方法 | |
CN105933391A (zh) | 一种节点扩容方法、装置及*** | |
CN102694860A (zh) | 一种云存储的数据处理方法、设备及*** | |
CN104935654A (zh) | 一种服务器集群***中的缓存方法、写入点客户端和读客户端 | |
JP2008040645A (ja) | Nasマイグレーションによる負荷分散方法、並びに、その方法を用いた計算機システム及びnasサーバ | |
CN105183389A (zh) | 一种数据分级管理方法、装置及电子设备 | |
JP2007241486A (ja) | 記憶装置システム | |
CN108319618B (zh) | 一种分布式存储***的数据分布控制方法、***及装置 | |
CN113268472B (zh) | 一种分布式数据存储***及方法 | |
CN100530069C (zh) | 一种非同质存储设备的虚拟化***及方法 | |
CN109407975B (zh) | 写数据方法与计算节点以及分布式存储*** | |
CN105095103A (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 |