分布式文件系统进行数据处理的方法及该分布式文件系统
技术领域
本发明涉及数据处理技术,尤其涉及分布式文件系统进行数据处理的方法及该分布式文件系统。
背景技术
参见图1,为现有技术的分布式文件系统(DFS,Distributed File System)结构示意图,该系统包括客户端、多个数据节点以及单一的主节点。
主节点在本地硬盘上存储文件路径与文件标识(ID,IDentity)之间的第一映射关系,且对应文件ID存储文件属性信息;并在内存中存储文件ID与节点地址之间的第二映射关系,且在内存中对应节点地址存储数据块属性信息。文件路径是展示给用户的关于某个文件的逻辑路径;实际地,每个文件被划分为多个数据块,分别存储在多个数据节点上。
为了用户能够快速访问,在内存中会存放所有的信息,包括第一映射关系和文件属性信息,以及第二映射关系和数据块属性信息;其中第一映射关系和文件属性信息相对稳定且较重要,通常还保存在本地硬盘上。
现有的分布式文件系统将数据分散存储在多个数据节点上,同时各数据节点还在本地硬盘上存储了数据的描述信息,包括文件ID和数据块属性信息。
当客户端需要从数据节点下载数据时,先根据文件路径从主节点获取对应的文件ID和节点地址;再由节点地址向对应的数据节点下载与文件ID对应的数据。当当客户端需要向数据节点上传数据时,先根据文件路径从主节点获取对应的文件ID,再为该文件ID选取节点地址,向节点地址对应的数据节点上传数据。
在实际运用中,会出现分布式文件系统宕机的情况;若主节点宕机,只有本地硬盘中的信息被保留下来,保存于内存的信息丢失,这部分信息可从各数据节点获取,以实现宕机恢复。
然而,由于单一的主节点对应多个数据节点,宕机时,主节点需要从各数据节点获取信息,此过程为一对多的信息收集过程,其时间较长。通常地,对于千万量级文件的分布式文件系统,宕机恢复时间在一小时以上。
发明内容
本发明提供了一种分布式文件系统进行数据处理的方法,该方法能够缩短宕机重启后的恢复时间。
本发明提供了一种分布式文件系统,该系统能够缩短宕机重启后的恢复时间。
一种分布式文件系统进行数据处理的方法,该方法包括:
元信息服务器宕机重启后,向各节点服务器发送包含元服务器ID的数据块信息获取请求;
节点服务器由数据块信息获取请求包含的元服务器ID,确定是否存储有对应的文件数据,如果有,则将相应的文件ID、节点地址和数据块属性信息反馈给元信息服务器;
元信息服务器接收来自节点服务器的文件ID、节点地址和数据块属性信息,在内存中存储文件ID与节点地址之间的第二映射关系,并在内存中对应节点地址存储数据块属性信息。
一种分布式文件系统,该系统包括节点服务器和多个元信息服务器;
所述元信息服务器,用于在宕机重启后,向各节点服务器发送包含元服务器ID的数据块信息获取请求,接收来自节点服务器的文件ID、节点地址和数据块属性信息,在内存中存储文件ID与节点地址之间的第二映射关系,并在内存中对应节点地址存储数据块属性信息;
所述节点服务器,用于接收来自元信息服务器的数据块信息获取请求,由元服务器ID确定是否存储有对应的文件数据,如果有,则将相应的文件ID、节点地址和数据块属性信息反馈给元信息服务器。
从上述方案可以看出,本发明在分布式文件系统中设置多个元信息服务器,当出现宕机重启时,由多个元信息服务器代替单一的主节点从节点服务器收集第二映射关系和数据块属性信息,从而,大大缩短了宕机恢复的时间。
附图说明
图1为现有分布式文件系统的结构示意图;
图2为本发明分布式文件系统的结构示意图;
图3为图2中元信息服务器的结构示意图;
图4为本发明分布式文件系统进行数据处理的示意性流程图;
图5为本发明基于分布式文件系统进行数据上传的流程图实例;
图6为本发明基于分布式文件系统进行数据下载的流程图实例。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
现有技术中,当出现宕机时,单一的主节点需要从众多节点服务器收集信息,其时间较长。鉴于此,本发明在分布式文件系统中设置多个元信息服务器,由多个元信息服务器代替单一的主节点从节点服务器收集信息。参见图2,为本发明分布式系统的结构示意图,其包括节点服务器和多个元信息服务器,为简便说明,图中只示出了两个元信息服务器的情况;
所述元信息服务器,用于在宕机重启后,向各节点服务器发送包含元服务器ID的数据块信息获取请求,接收来自节点服务器的文件ID、节点地址和数据块属性信息,在内存中存储文件ID与节点地址之间的第二映射关系,并在内存中对应节点地址存储数据块属性信息;
所述节点服务器,用于接收来自元信息服务器的数据块信息获取请求,由元服务器ID确定是否存储有对应的文件数据,如果有,则将相应的文件ID、节点地址和数据块属性信息反馈给元信息服务器。
可选地,系统还包括主节点,用于在本地硬盘上存储文件路径与文件ID之间的第一映射关系,并对应元服务器ID存储文件ID列表,还对应文件ID存储文件属性信息;主节点还用于接收来自元信息服务器的包含元服务器ID的查询请求,确定与元服务器ID对应的文件ID列表,以及与文件ID列表包含的文件ID相对应的文件属性信息,将确定的文件列表和文件属性信息反馈给元信息服务器;
所述元信息服务器,还用于在宕机重启后,向主节点发送查询请求,接收主节点反馈的文件ID列表和文件属性信息。
图2中的节点服务器对应图1中的数据节点。主节点存储的文件属性信息文件包括:文件路径、权限位、拥有者、备份数、数据块数、版本、创建时间、修改时间、访问时间等。
文件路径是展示给用户的关于某个文件的逻辑路径;实际地,每个文件被划分为多个数据块,分别存储在多个数据节点上。本发明中,将第二映射关系和数据块属性信息保存在元信息服务器的内存中,内存中的信息以无状态方式存储;同时各节点服务器还在本地硬盘上存储了数据的描述信息,包括文件ID和数据块属性信息。
当分布式文件系统出现宕机时,只有各设备硬盘中的信息被保留下来,而内存中的信息丢失,也就是,元信息服务器内存中保留的信息丢失;多个元信息服务器需要从各节点服务器获取丢失的这部分信息,以实现宕机恢复。
可选地,所述元信息服务器包括文件信息获取单元和数据块信息获取单元和存储单元,具体参见图3所示的元信息服务器结构示意图;
所述文件信息获取单元,用于在宕机重启后,向主节点发送查询请求,接收主节点反馈的文件ID列表和文件属性信息,发送给存储单元;
所述数据块信息获取单元,用于在宕机重启后,向各节点服务器发送包含元服务器ID的数据块信息获取请求,接收来自节点服务器的文件ID、节点地址和数据块属性信息,发送给存储单元;
所述存储单元,用于在内存中存储文件ID列表和文件属性信息,以及文件ID与节点地址之间的第二映射关系,并在内存中对应节点地址存储数据块属性信息。
客户端可根据需要向节点服务器上传数据或下载数据,相应地,该系统还包括客户端,客户端包括上传单元、下载单元,下面分别进行说明。
可选地,所述客户端包括上传单元,用于向主节点发送包含文件路径的数据上传请求,并接收主节点反馈的文件ID以及元服务器ID,为文件ID选取节点地址,向节点地址对应的节点服务器上传数据;并将文件ID与节点地址之间的第二映射关系以及数据块属性信息发送给节点服务器和元服务器ID对应的元信息服务器的存储单元;
所述主节点,还用于接收数据上传请求,为数据上传请求包含的文件路径确定对应的文件ID,并确定与文件ID对应的元服务器ID,将确定的文件ID和元服务器ID反馈给客户端;
所述节点服务器,还用于在本地硬盘上存储接收的第二映射关系和数据块属性信息;
所述存储单元,还用于在内存中存储接收的第二映射关系和数据块属性信息。
可选地,所述客户端还包括下载单元,用于向主节点发送包含文件路径的下载请求,并接收主节点反馈的文件ID和元服务器ID,向元服务器ID对应的元信息服务器发送包含文件ID的下载操作指示;并接收元信息服务器反馈的节点地址、文件属性信息和数据块属性信息,从与节点地址对应的节点服务器,获取与文件ID对应的数据;
所述主节点,还用于接收下载请求,由下载请求包含的文件路径在第一映射关系中查询出对应的文件ID,并查询出与文件ID对应的元服务器ID,将文件ID和元服务器ID反馈给客户端;
所述元信息服务器还包括下载操作执行单元,用于由下载操作指示包含的文件ID,在存储单元的第二映射关系中查询出对应的节点地址,并查询出与文件ID对应的文件属性信息,以及与节点地址对应的数据块属性信息,将查询出的节点地址、文件属性信息和数据块属性信息反馈给客户端。
参见图4,为本发明基于图2的分布式文件系统进行数据处理的方法示意性流程图,其包括以下步骤:
步骤401,元信息服务器宕机重启后,向主节点发送包含自身元服务器ID的查询请求。
步骤402,节点服务器由数据块信息获取请求包含的元服务器ID,确定是否存储有对应的文件数据,如果有,则将相应的文件ID、节点地址和数据块属性信息反馈给元信息服务器。
元服务器ID,即元信息服务器的ID;所述节点地址可具体为节点服务器IP。
步骤403,元信息服务器接收来自节点服务器的文件ID、节点地址和数据块属性信息,在内存中存储文件ID与节点地址之间的第二映射关系,并在内存中对应节点地址存储数据块属性信息。
元信息服务器从各节点服务器获取信息的同时;还可从主节点获取与元服务器ID对应的文件ID列表,以及与文件ID列表包含的文件ID相对应的文件属性信息,对于这种情况,主节点除在本地硬盘上存储文件路径与文件ID之间的第一映射关系,还对应对应元服务器ID存储文件ID列表,并对应文件ID存储文件属性信息;宕机重启后,元信息服务器向主节点发送包含元服务器ID的查询请求,主节点接收查询请求后,确定与元服务器ID对应的文件ID列表,以及与文件ID列表包含的文件ID相对应的文件属性信息,将确定的文件ID列表和文件属性信息反馈给元信息服务器;具体地,反馈文件属性信息时,可根据需要只反馈文件属性信息中的部分信息。这样,通过主节点反馈的文件ID列表和文件属性信息,元信息服务器便可获知与自身关联的文件ID包括哪些,并可获知与文件ID列表包含的文件ID相对应的文件属性信息。
至此,完成了宕机恢复。由多个元信息服务器代替单一的主节点从节点服务器收集第二映射关系和数据块属性信息,大大缩短了宕机恢复的时间,对于千万量级文件的分布式文件系统,恢复时间可缩短至几分钟。
宕机重启后,客户端可向节点服务器上传数据或从节点服务器下载数据,下面通过图5和图6的流程进行具体说明。
参见图5,为本发明基于分布式文件系统进行数据上传的流程图实例,其包括以下步骤:
步骤501,主节点接收客户端发送的包含文件路径的数据上传请求。
步骤502,主节点为文件路径确定对应的文件ID,并确定与文件ID对应的元服务器ID,将确定的文件ID和元服务器ID反馈给客户端。
数据上传可分为新建方式或追加方式,新建方式也就是为文件路径创建一个新的文件ID,追加方式也就是在文件路径对应的原文件ID下追加数据。还可以,在数据上传请求中携带上传方式,具体地:
如果上传方式为覆盖,则所述主节点为文件路径确定对应的文件ID包括:主节点为文件路径创建新的文件ID;并在为文件路径确定对应的文件ID之后,建立文件路径与文件ID之间的第一映射关系,在本地硬盘上存储建立的第一映射关系;
如果上传方式为追加,则所述主节点为文件路径确定对应的文件ID包括:主节点将已有的与文件路径对应的文件ID,确定为与文件路径对应的文件ID。
步骤503,客户端接收主节点反馈的文件ID以及元服务器ID,为文件ID选取节点地址,向节点地址对应的节点服务器上传数据;并将文件ID与节点地址之间的第二映射关系以及数据块属性信息发送给节点服务器和元信息服务器;节点服务器在本地硬盘上存储第二映射关系和数据块属性信息,元信息服务器在内存中存储第二映射关系和数据块属性信息。
一般地,客户端预先从主节点获取了多个节点地址,本步骤中,客户端从获取的节点地址中为文件ID选取节点地址,将数据上传给节点地址对应的节点服务器上。
数据块属性信息包括文件ID、数据块编号、数据块大小、数据块校验和、数据块版本信息、数据块访问时间和数据块修改时间等信息中的至少一个。
具体实现时,客户端还可将数据块属性信息置于上传的数据的头部。
在实际应用中,可能多个节点服务器分别存储了同一数据块编号对应的数据块,而各数据块的版本信息不同;相应地,图4流程步骤404在内存中存储文件ID与节点地址之间的第二映射关系之前需要对版本信息进行校验,如果通过校验,则执行所述在内存中存储文件ID与节点地址之间的第二映射关系的步骤。通过校验的版本信息对应的数据块为最新版本的数据块。
参见图6,为本发明基于分布式文件系统进行数据下载的流程图实例,其包括以下步骤:
步骤601,主节点接收客户端发送包含文件路径的下载请求,主节点由文件路径在第一映射关系中查询出对应的文件ID,并查询出与文件ID对应的元服务器ID,将文件ID和元服务器ID反馈给客户端。
步骤602,客户端接收主节点反馈的文件ID和元服务器ID,向元服务器ID对应的元信息服务器发送包含文件ID的下载操作指示。
由元信息元服务器ID获取对应的元信息服务器地址可以由专门的设备实现,如域名解析服务器,这样,在需要时,客户端向域名解析服务器发送包含元信息元服务器ID的解析请求,便可获知对应的元信息服务器地址,而后,根据元信息服务器地址,向元信息服务器ID对应的元信息服务器发送下载操作指示。
步骤603,元信息服务器由下载操作指示包含的文件ID,在第二映射关系中查询出对应的节点地址,并查询出与文件ID对应的文件属性信息,以及与节点地址对应的数据块属性信息,将查询出的节点地址、文件属性信息和数据块属性信息反馈给客户端。
步骤604,客户端接收元信息服务器反馈的节点地址、文件属性信息和数据块属性信息,从与节点地址对应的节点服务器,获取与文件ID对应的数据。
本发明在分布式文件系统中设置多个元信息服务器,将第二映射关系和数据块属性信息存储在元信息服务器的内存上;当出现宕机重启时,由多个元信息服务器代替单一的主节点从节点服务器收集第二映射关系和数据块属性信息,从而,大大缩短了宕机恢复的时间。
并且,本发明将主节点上的部分信息分担到元信息服务器上进行存储,减轻了主节点的负担,也便于扩展,且伸缩性较大。元信息服务器采用无状态的设计方式,将信息都存储在内存上,没有落地的数据,即没有存储在硬盘上的数据;相比对硬盘中存储的信息进行修改,对内存中存储的信息进行修改操作更加容易。当节点服务器对其存储的信息进行修改,为了保证节点服务器与元信息服务器上存储信息的一致性,需要对元信息服务器上的相应信息进行一致性修改,此时,由于元信息服务器采用无状态方式存储,相比采用硬盘方式进行存储,将更加方便和易于显示,进而,更容易实现一致性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。