一种数据处理方法、装置和系统的制作方法

文档序号:6339970阅读:291来源:国知局
专利名称:一种数据处理方法、装置和系统的制作方法
技术领域
本发明涉及通信技术领域,具体涉及一种数据处理方法、装置和系统。
背景技术
分片文件系统采用多份冗余和分布式等技术,将文件按固定大小分布到多台机 器的上,从而提高了数据的可靠性。分片文件系统一般由命名节点(NameNode)、数据节点 (Datanodes)和客户端接口(Client)三大部分组成,如下命名节点管理分片文件系统的命名空间,它可以将所有文件的元数据存储在一 个文件系统树中,并保存所存储文件的相关信息,比如一个文件包括哪些数据块,分布在哪 些数据节点上,等等。需说明的是,这些信息并不存储在硬盘上,而是在系统启动的时候从 数据节点收集而成的。数据节点分片文件系统中存储数据的地方,客户端或者命名节点可以向数据节 点请求写入或者读出数据片。该数据节点还用于周期性地向命名节点上报其存储的数据片 的相关信息。客户端接口 客户端可以通过该接口访问分片文件系统。现有技术在读取和写入文件到该分片文件系统时,都需要访问命名节点,比如,在 读取文件时,需要调用命名节点,以获取需要读取的文件的数据片信息,然后才可以根据获 取到的数据片信息从相应的数据块中读取到该需要读取的文件;又比如,在写入文件时,需 要通知命名节点,由命名节点来分配用于存储该需要写入文件的数据节点,然后才能将该 需要写入文件写入分配的数据节点中;等等。此外,分片文件系统还需要将所有的数据信 息汇集到命名节点,比如,数据节点需要周期性地将数据片的相关信息上报给命名节点,等 等,命名节点在接收到这些数据信息后,将这些数据信息保存在命名节点的内存中。在对现有技术的研究和实践过程中,本发明的发明人发现,由于命名节点是整个 分片文件系统的核心,所以,命名节点的性能直接影响到整个分片文件系统的性能和规模, 而由于现有技术中的命名节点的性能十分有限,所以分片文件系统的性能和规模也难以得 到提升。

发明内容
本发明实施例提供一种数据处理方法、装置和系统,可以使得分片文件系统的性 能和规模不受命名节点性能的限制,有利于提升分片文件系统的性能和规模。一种数据处理方法,包括获取文件名和数据片的编号,其中,数据片由文件数据划分而成;根据所述文件名和编号通过分布式哈希表(DHT,Distributed Hash Table)算法 计算出数据片的关键字(Key)值;根据计算出的Key值确定数据节点;将数据片写入所述数据节点,或从所述数据节点中读取出数据片。
一种数据处理方法,包括接收客户端接口写入的数据片,所述数据片由文件数据划分而成;获取所述数据片的冗余份数;根据所述冗余份数和预置的路由表,通过DHT算法将所述数据片复制到其他数据 节点上。一种客户端接口,包括获取单元,用于获取文件名和数据片的编号,其中,数据片由文件数据划分而成;运算单元,用于根据获取单元获取到的文件名和数据片的编号通过DHT算法计算 出数据片的Key值;确定单元,用于根据运算单元计算出的Key值确定数据节点;处理单元,用于将数据片写入所述数据节点,或从所述数据节点中读取出数据片。一种数据节点,包括写入单元,用于接收客户端接口写入的数据片,所述数据片由文件数据划分而 成;获取单元,用于获取写入单元写入的数据片的冗余份数;复制单元,用于根据预置的路由表和获取单元获取到的冗余份数,通过DHT算法 将所述数据片复制到其他数据节点上。—种分片文件系统,包括本发明实施例提高的任一种客户端接口和数据节点。本发明实施例采用根据文件名和数据片的编号,通过DHT算法计算出数据片的 Key值,然后根据计算出的Key值来确定数据节点,以便进行数据的读取或写入,避免了现 有技术中由命名节点来分配数据节点,所导致的命名节点的负担过重的问题,有利于提高 系统的稳定性;而且,也避免了现有技术中分片文件系统对命名节点的依赖性过大所导致 的分片文件系统性能提高受到命名节点性能限制的问题,有利于提升分片文件系统的性能 和规模。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。图Ia是本发明实施例一提供的数据处理方法的流程图;图Ib本发明实施例中数据片的Key值分布示意图;图2是本发明实施例二提供的数据处理方法的流程图;图3是本发明实施例三提供的写入数据的方法流程图;图4是本发明实施例一提供的读取数据的方法流程图;图5a是本发明实施例提供的客户端接口的结构示意图;图5b是本发明实施例提供的客户端接口的另一结构示意图;图5c是本发明实施例提供的客户端接口的又一结构示意图;图6是本发明实施例提供的数据节点的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。本发明实施例提供一种数据处理方法、装置和系统。以下分别进行详细说明。实施例一、本实施例将从客户端接口(Client)的角度进行描述。一种数据处理方法,包括获取文件名和数据片的编号,根据获取到的文件名和数 据片的编号通过DHT算法计算出数据片的Key值,然后根据计算出的Key值确定数据节点 (Datanodes),将数据片写入该数据节点,或从该数据节点中读取出数据片;其中,数据片由 文件数据划分而成。参见图la,具体流程可以如下101、获取文件名和数据片的编号,其中,数据片由文件数据划分而成;例如,获取方式具体可以如下(1)在需要写入数据片时,获取文件名以及数据片的编号的方式具体可以为创建文件,其中,该文件具有文件名;将需要写入该文件中的文件数据划分成数据 片;对该数据片进行编号,得到数据片的编号。此外,在创建文件时,还可以发送创建文件信息给命名节点(NameNode),以生成文 件元数据,其中,该文件元数据包括文件名和文件大小,为了方便对文件的区分和管理,还 可以为每个文件设置一个标识,称为文件标识,该文件标识可以保存在命名节点中,所以, 该文件元数据还可以包括文件标识;当然,该文件元数据还可以包括文件创建时间、文件修 改时间和/或该文件中各数据片的检验值,等等;命名节点可以返回生成的文件元数据给 客户端接口,但是,为了节省信令流程,一般的,命名节点可以只返回文件标识给客户端接 口,根据文件标识可以获取到该文件标识所对应的文件的其他文件元数据;也就是说,该数 据处理方法还可以包括发送创建文件信息给命名节点,以生成文件元数据;接收命名节点返回的文件标 识。(2)在读取数据片时,获取文件的文件名以及数据片的编号的方式具体可以为发送打开文件信息给命名节点,该打开文件信息包括文件名;接收命名节点根据 该打开文件信息返回的文件标识,根据该文件标识获取数据片的编号。根据该文件标识还可以获取到该文件标识所对应的文件的其他文件元数。需说明的是,本发明实施例所说的文件名指的是需要写入的文件或需要读取的文 件的名称,文件数据则指的是需要写入文件的数据或需要从文件中读取的数据,即该文件 的具体内容。该文件数据不同于文件元数据,文件元数据指的是文件的相关信息,比如文件 标识、文件名和文件大小等等,当然,除此之外,文件元数据还可以包括文件创建时间、文件 修改时间和/或该文件中各数据片的检验值,等等。102、根据步骤101中获取到的文件名和数据片的编号通过DHT算法计算出数据片的Key值;其中,Key值为
,m为32、64或128等等,m的具体取值可以依赖系统的规 模而定。例如,由于哈希(Hash)函数满足DHT算法的要求,所以具体可以根据步骤101中 获取到的文件名和数据片的编号通过Hash函数来计算出数据片的Key值。103、根据步骤102计算出的Key值确定数据节点;需说明的是,每个数据节点自身也会生成一个Key值,以此来确定其存储范围,具 体存储时,可以设置将所有位于数据节点之间的数据片保存在较小Key的数据节点上,也 可以设置将所有位于数据节点之间的数据片保存在较大Key的数据节点上。以设置将所有位于数据节点之间的数据片保存在较小Key的数据节点上为例,参 见图lb,假设数据节点生成的Key值为实心圆点,即点A、点B和点C,数据片生成的为圆圈, 即点1、点2、点3和点4。其中,点A为起始点,点C为终点,点A表示数据节点A,点B表示 数据节点B,点C表示数据节点C。沿圆环顺时针,逐渐增大。由于点1处于[A,B],因此可 以将点1保存在数据节点A上。同理,由于点2位于在[A,B],所以可以将点2保存在数据 节点B上,而点3和点4则保存在数据节点C上。根据该算法,可以将所有的数据片能均勻 分布在各个数据节点上。104、将数据片写入步骤103确定的数据节点,或从步骤103确定的数据节点中读 取出数据片。如果在步骤101中接收到命名节点返回的文件标识;则步骤104具体可以为根据接收到的文件标识和数据片的编号写入数据片,或者,根据该文件标识和数 据片的编号从数据节点中读取出数据片。由上可知,本实施例采用根据文件名和数据片的编号,通过DHT算法计算出数据 片的Key值,然后根据计算出的Key值来确定数据节点,以便进行数据的读取或写入,避免 了现有技术中由命名节点来分配数据节点,所导致的命名节点的负担过重的问题,有利于 提高系统的稳定性;而且,也避免了现有技术中分片文件系统对命名节点的依赖性过大所 导致的分片文件系统性能提高受到命名节点性能限制的问题,有利于提升分片文件系统的 性能和规模。实施例二、本实施例将从数据节点的角度进行描述。一种数据处理方法,包括接收客户端接口写入的数据片;获取该数据片的冗余 份数;根据冗余份数和预置的路由表,通过DHT算法将该数据片复制到其他数据节点上,其 中,数据片由文件数据划分而成。参见图2,具体流程可以如下201、接收客户端接口写入的数据片,其中,数据片由文件数据划分而成;202、获取该写入的数据片的冗余份数;203、根据冗余份数和预置的路由表,通过DHT算法将该写入的数据片复制到其他 数据节点上。例如,具体可以如下根据预置的路由表,通过DHT算法确定本数据节点后X个其他数据节点为冗余数 据节点;将该写入的数据片分别复制到确定的冗余数据节点中。
其中,X等于冗余份数与1的差值,冗余数据节点指的是用于保存冗余数据的数据 节点,冗余数据指的是复制得到的数据片,比如,如果根据数据片的Key值确定需要将数据 片1保存在数据节点A中,而数据片1的冗余份数为2,那么,可以将数据片1复制一遍,然 后将复制的数据片1保存在数据节点A的后一个数据节点B中,则此时,复制的数据片1称 为冗余数据,而数据节点B称为数据片1的冗余数据节点。需说明的是,路由表具体可以保存在数据节点中,该路由表可以由维护人员按照 预置策略直接进行设置和维护,也可以由分片文件系统通过获取网络拓扑结构而自行进行 设置和维护,具体可参见现有技术中关于设置路由表的相关技术,在此不再赘述。由上可知,本实施例在写入数据片以及对写入数据片进行冗余复制时,不需要将 数据片的具体写入情况上报给命名节点,也不需要由命名节点来分配冗余数据节点,而是 由数据节点自身根据冗余份数和预置的路由表,通过DHT算法来确定冗余数据节点,从而 减轻了命名节点的负担,有利于提高系统的稳定性;而且,也减少了对命名节点的依赖性, 避免了现有技术中分片文件系统性能提高受到命名节点性能限制的问题,有利于提升分片 文件系统的性能和规模。实施例三、在实施例二的基础上,进一步的,为了使得路由表能够实时且真实地反映当前系 统状况,避免处理数据时出现错误,当分片文件系统中新增或删减数据节点时,还可以对保 存的路由表进行更新和维护,即该数据处理方法还可以包括当分片文件系统中新增或删减数据节点时,在路由表中增加该新增数据节点的路 由信息或删除该删减数据节点的路由信息,得到新路由表。进一步的,当分片文件系统中的数据节点时,还需要对数据节点中的数据进行调 整,例如,具体可以如下(1)新增数据节点根据新路由表确定该新增数据节点的后一个数据节点;通过DHT算法将该后一个数据节点中的部分非冗余数据转移到新增数据节点中, 其中,非冗余数据指的是应保存在本数据节点上的数据片,即根据数据片的Key值所确定 的数据节点来写入的数据片,比如,如果根据数据片的Key值确定需要将数据片1保存在数 据节点A中,则数据片1称为数据节点A中的非冗余数据。通过DHT算法将该后一个数据节点中的全部冗余数据转移到新增数据节点中,其 中,冗余数据为其他数据节点复制到本数据节点上的数据片。(2)删减数据节点通过DHT算法将该删减数据节点复制到本数据节点上的数据片删除掉。比如,如 果数据节点B将复制的数据片2 (即数据片2的冗余数据)保存在数据节点A中,则当数据 节点B被删除时,数据节点A也会相应地将该复制的数据片2删除。根据冗余份数和新路由表,通过DHT算法重新将该数据片复制到其他数据节点 上。由于数据节点被删除,导致该被删除数据节点上的数据均丢失,所以可能会导致各数据 片的冗余份数发生变化,所以此时需要重新确认下当前数据片的存储位置是否合理,以及 冗余份数是否正确。由上可知,本实施例在数据节点发生变化时,不需要由命名节点来重新对数据节点上的数据进行调整,而是由数据节点自身进行调整,所以减轻了命名节点的负担,有利于 提高系统的稳定性;而且,也减少了对命名节点的依赖性,避免了现有技术中分片文件系统 性能提高受到命名节点性能限制的问题,有利于提升分片文件系统的性能和规模。实施例四、根据前面实施例所描述的方法,以下将举例作进一步详细说明。本发明实施例基于现有技术中分片文件系统的框架,做如下调整(1)命名节点不再接收和保存数据节点上报的数据片信息,比如数据片的分布信息,等等。不再为数据片分配数据节点。(2)数据节点不再需要定期向命名节点汇报数据片信息。在冗余复制时,需要按照DHT算法来选择冗余数据节点,并将数据片复制到选择 的冗余数据节点上。增加路由表,用于找到其他的数据节点。(3)客户端接口不再依赖命名节点来定位数据片的存储位置,而是直接通过DHT算法如采用Hash 函数来定位数据片的存储位置。以下将分别从写入数据和读取数据两方面对该数据处理方法进行详细说明,参见 图3和图4,其中,图3为写入数据的方法流程图,图4为读取数据的方法流程图,具体流程 分别可以如下(一)写入数据A401、客户端接口创建文件,该文件具有文件名,发送创建文件信息给命名节点。A402、命名节点在接收到创建文件信息后,生成文件元数据,其中,该文件元数据 包括文件标识、文件名和文件大小;当然,该文件元数据还可以包括文件创建时间、文件修 改时间和/或该文件中各数据片的检验值,等等。A403、命名节点发送文件标识给客户端接口,如果客户端接口可以根据该文件标 识获取到该文件标识所对应的文件的其他文件元数据,比如文件大小、创建时间等等。A404、客户端接口将需要写入该文件的文件数据切分成数据片,并对数据片进行 编号,得到数据片的编号。例如,将该文件数据切分为数据片1、数据片2、数据片3和数据片4,其中,数据片 1的编号为001,数据片2的编号为002,数据片3的编号为003。A405、客户端接口根据文件名和数据片的编号通过Hash函数计算出数据片的Key值。其中,Key值为W,2m_l],m为32、64或128等等,m的具体取值可以依赖系统的规 模而定,具体可参见实施例一。比如,参见图lb,客户端接口根据文件名和数据片1的编号001通过Hash函数,可 以计算出数据片1的Key值为[A,B],数据片2的Key值为[B,C],等等。A406、客户端接口根据步骤A405中计算得到的Key值确定数据节点。比如,由于在步骤A405中计算数据片1的Key值为[A,B],所以确定数据片1所对应的数据节点为数据节点A,又比如,由于数据片2的Key值为[B,C],所以,所以确定数 据片2所对应的数据节点为数据节点B,等等。A407、客户端接口根据文件标识和数据片的编号将数据片写入数据节点,并校验 客户端接口所写入的数据片,得到数据片的校验值。例如,将数据片1写入数据节点A,将数据片2写入数据节点B,等等。当然,在写入完毕后,数据节点也可以返回表示写入成功的响应给客户端接口。A408、客户端接口通知命名节点数据片已写入成功,并将数据片的校验值发送给 命名节点,命名节点保存该校验值。A409、数据节点获取该写入的数据片的冗余份数X。A410、数据节点根据冗余份数X和预置的路由表,通过Hash函数将该写入的数据 片复制到其他数据节点上,具体为向本数据节点的下“X-1 ”个数据节点写入该写入的数据 片,可选的,写入完毕后,这些数据节点可以返回写入成功的响应给本数据节点。例如,以数据节点A为例,如果冗余份数为3的话,则数据节点A将数据片1复制 到下两个数据节点中,即复制到数据节点B和数据节点C中,其它数据节点同此操作。需说明的是,客户端接口可以逐一向数据节点写入数据片,也可以同时向数据节 点写入多个数据片,如果是逐一向数据节点写入数据片的话,则可以循环执行步骤A405 A410,直至所有数据片写入完毕。A411、客户端接口将需要写入的数据片全部写入到数据节点后,客户端接口请求 命名节点关闭文件,命名节点可以返回关于关闭文件是否成功的响应给客户端,流程结束。(二)读取数据B401、客户端接口发送打开文件信息给命名节点,该打开文件信息包括文件名。B402、命名节点根据该打开文件信息返回文件标识给客户端接口,客户端接口根 据文件标识获取数据片的编号。B403、客户端接口根据文件名和数据片的编号通过Hash函数计算出数据片的Key值。其中,Key值为W,2m_l],m为32、64或128等等,m的具体取值可以依赖系统的规 模而定,具体可参见实施例一。比如,参见图lb,客户端接口根据文件名和数据片1的编号001通过Hash函数,可 以计算出数据片1的Key值为[A,B],数据片2的Key值为[B,C],等等。B404、客户端接口根据步骤A403中计算得到的Key值确定数据节点。比如,由于在步骤A403中计算数据片1的Key值为[A,B],所以确定数据片1所 对应的数据节点为数据节点A,又比如,由于数据片2的Key值为[B,C],所以,所以确定数 据片2所对应的数据节点为数据节点B,等等。B405、客户端接口获取数据片的冗余份数X。B406、客户端接口根据该确定的数据节点和冗余份数X,找到数据片相应的冗余数 据节点,根据随机算法,在该确定的数据节点和冗余数据节点中挑选出一个数据节点,以读 取数据片。例如,以数据片1为例,根据步骤B404可以确定,数据片1所对应的数据节点为数 据节点A,则如果在步骤B405中获取的冗余份数为2的话,在步骤B406中,客户端接口可以计算出冗余数据节点为数据节点A的下“2-1 = 1”个数据节点,即数据节点B。于是,客户 端接口根据随机算法,在数据节点A和数据节点B中挑选出一个数据节点,假设该挑选出的 数据节点为数据节点A的话,则客户端接口向数据节点A读取出数据片1。B407、该挑选出的数据节点根据文件标识和数据片的编号查找数据片,并从命名 节点中获取校验数值,与该查找到的数据片的校验数值进行比对,若一致,则确定该查找到 的数据片正确,于是将该查找到的数据片发送给客户端接口 ;若不一致,则确定该查找到的 数据片错误,于是重新根据文件标识和数据片的编号查找数据片,直至找到正确的数据片。需说明的是,客户端接口可以从数据节点中逐一读取出数据片,也可以同时从数 据节点中读取出多个数据片,如果是从数据节点逐一读取出数据片的话,则可以循环执行 步骤B403 B407,直至所有数据片读取完毕。B408、客户端接口读取完需要读取的数据片后,客户端接口请求命名节点关闭文 件,命名节点可以返回关于关闭文件是否成功的响应给客户端,流程结束。进一步的,当分片文件系统中的数据节点时,还需要对数据节点中的数据进行调 整,例如,具体可以如下当分片文件系统中新增或删减数据节点时,数据节点需要在路由表中增加该新增 数据节点的路由信息或删除该删减数据节点的路由信息,以得到新路由表。以下将对新增 数据节点和删减数据节点分别进行说明。(1)新增数据节点首先,数据节点在路由表中增加该新增数据节点的路由信息,以得到新的路由表。其次,数据节点根据新路由表确定该新增数据节点的后一个数据节点,然后,一方 面通过DHT算法将该后一个数据节点中的部分非冗余数据转移到新增数据节点中;另一方 面通过DHT算法将该后一个数据节点中的全部冗余数据转移到新增数据节点中。(2)删减数据节点首先,数据节点在路由表中删除该删减数据节点的路由信息,以得到新的路由表。其次,如果该删减数据节点上所保存的数据片存在冗余数据的话,需要将存储在 其他数据节点上的相应的冗余数据删除。比如,如果数据节点B将复制的数据片2 (即数据 片2的冗余数据)保存在数据节点A中,则当数据节点B被删除时,数据节点A也会相应地 将该复制的数据片2删除。由于数据节点被删除后,该被删除数据节点上的数据将会全部变成无效,所以可 能会导致各数据片的冗余份数发生变化,因此,此时可以根据冗余份数和新路由表,通过 DHT算法重新将该数据片复制到其他数据节点上,以保证分片文件系统中的冗余份数与实 际的冗余分数能保持一致。由上可知,本实施例采用根据文件名和数据片的编号,通过DHT算法计算出数据 片的Key值,然后根据计算出的Key值来确定数据节点,以便进行数据的读取或写入,而且, 在写入数据片以及对写入数据片进行冗余复制时,也可以通过DHT算法来确定冗余数据节 点,而不需要由命名节点来分配冗余数据节点;进一步的,在数据节点发生变化时,也不需 要由命名节点来重新对数据节点上的数据进行调整,而是由数据节点自身进行调整,避免 了现有技术中由命名节点来分配数据节点、分配冗余数据节点以及调整数据节点等操作, 所导致的命名节点的负担过重的问题,有利于提高系统的稳定性;而且,采用该方案也可以避免现有技术中分片文件系统对命名节点的依赖性过大所导致的分片文件系统性能提高 受到命名节点性能限制的问题,有利于提升分片文件系统的性能和规模。实施例五、为了更好地实施以上方法,本发明实施例还提供一种客户端接口,如图5a所示, 客户端接口包括获取单元501、运算单元502、确定单元503和处理单元504 ;获取单元501,用于获取文件名和数据片的编号,其中,数据片由文件数据划分而 成;运算单元502,用于根据获取单元501获取到的文件名和数据片的编号通过DHT算 法计算出数据片的Key值;其中,Key值为
,m为32、64或128等等,m的具体取值 可以依赖系统的规模而定;确定单元503,用于根据运算单元502计算出的Key值确定数据节点;需说明的是,每个数据节点自身也会生成一个Key值,以此来确定其存储范围,具 体存储时,可以设置将所有位于数据节点之间的数据片保存在较小Key的数据节点上,也 可以设置将所有位于数据节点之间的数据片保存在较大Key的数据节点上;处理单元504,用于将数据片写入确定单元503所确定的数据节点,或从写入确定 单元503所确定的数据节点中读取出数据片。如图5b所示,在需要写入数据片时,获取单元501可以包括创建子单元A5011、划 分子单元A5012和编号子单元A5013 ;创建子单元A5011,用于发送创建文件信息给命名节点,以生成文件元数据;划分子单元A5012,用于将需要写入创建子单元A5011所创建的文件中的文件数 据划分成数据片;编号子单元A5013,用于对划分子单元A5012划分得到的数据片进行编号,得到数 据片的编号。则,运算单元502,用于根据创建子单元A5011得到的文件名和编号子单元A5013 得到的数据片的编号通过DHT算法计算出数据片的Key值。如图5b所示,该客户端接口还可以包括发送单元505和接收单元506 ;发送单元505,用于在创建子单元A5011创建文件时,发送创建文件信息给命名节 点,以生成文件元数据,其中,文件元数据包括文件标识、文件名和文件大小;当然,该文件 元数据还可以包括文件创建时间、文件修改时间和/或该文件中各数据片的检验值,等等;接收单元506,用于接收命名节点返回的文件标识;则处理单元504,具体用于根据接收单元506接收到的文件标识和编号子单元 A5013得到的数据片的编号写入数据片。如图5c所示,在读取数据片时,获取单元501可以包括打开子单元B5011、接收子 单元B5012和编号获取子单元B5013 ;打开子单元B5011,用于发送打开文件信息给命名节点;接收子单元B5012,用于接收命名节点根据该打开文件信息返回的文件标识;编号获取子单元B5013,用于根据接收子单元B5012接收到的文件标识获取数据 片的编号;则,运算单元502,用于根据文件名和编号获取子单元B5013得到的数据片的编号通过DHT算法计算出数据片的Key值;处理单元504,具体用于根据接收子单元B5012接收到的文件标识和编号获取子 单元B5013获取到的数据片的编号从数据节点中读取出数据片。以上各个单元的具体实施可参见前面实施例,在此不再赘述。由上可知,本实施例的客户端接口的运算单元502可以根据文件名和数据片的编 号,通过DHT算法计算出数据片的Key值,然后由确定单元503根据计算出的Key值来确定 数据节点,以便处理单元504进行数据的读取或写入,避免了现有技术中由命名节点来分 配数据节点,所导致的命名节点的负担过重的问题,有利于提高系统的稳定性;而且,也避 免了现有技术中分片文件系统对命名节点的依赖性过大所导致的分片文件系统性能提高 受到命名节点性能限制的问题,有利于提升分片文件系统的性能和规模。实施例六、相应地,本发明实施例还提供一种数据节点,如图6所示,该数据节点包括写入单 元601、获取单元602和复制单元603 ;写入单元601,用于接收客户端接口写入的数据片,其中,该数据片由文件数据划 分而成;获取单元602,用于获取写入单元601写入的数据片的冗余份数;复制单元603,用于根据预置的路由表和获取单元602获取到的冗余份数,通过 DHT算法将该数据片复制到其他数据节点上。例如,具体可以根据预置的路由表,通过DHT算法确定本数据节点后X个其他数据 节点为冗余数据节点;将该写入的数据片分别复制到确定的冗余数据节点中,其中,X等于 冗余份数与1的差值。路由表具体可以保存在数据节点中,该路由表可以由维护人员按照预置策略直接 进行设置和维护,也可以由分片文件系统通过获取网络拓扑结构而自行进行设置和维护, 具体可参见现有技术中关于设置路由表的相关技术,在此不再赘述。该数据节点还可以包括路由表更新单元;路由表更新单元,用于当分片文件系统中新增或删减数据节点时,在路由表中增 加该新增数据节点的路由信息或删除该删减数据节点的路由信息,得到新路由表。该数据节点还可以包括确定单元、第一调整单元和第二调整单元;确定单元,用于根据路由表更新单元得到的新路由表确定该新增数据节点的后一 个数据节点;第一调整单元,用于通过DHT算法将确定单元确定的后一个数据节点中的部分非 冗余数据转移到新增数据节点中,其中,非冗余数据为应保存在本数据节点上的数据片;
第二调整单元,用于通过DHT算法将确定单元确定的后一个数据节点中的全部冗 余数据转移到新增数据节点中,其中,冗余数据为其他数据节点复制到本数据节点上的数 据片。该数据节点还可以包括删除单元;删除单元,用于通过DHT算法删除该删减数据节点复制到本数据节点上的数据 片。由于数据节点被删除后,该被删除数据节点上的数据将会全部变成无效,所以可能会导致各数据片的冗余份数发生变化,因此,此时可以根据冗余份数和新路由表,通过 DHT算法重新将该数据片复制到其他数据节点上,以保证分片文件系统中的冗余份数与实 际的冗余分数能保持一致,即该数据节点还可以包括冗余更新单元;冗余更新单元,用于通过冗余份数和路由表更新单元得到的新路由表,通过DHT 算法重新将数据片复制到其他数据节点上。以上各个单元的具体实施可参见前面实施例,在此不再赘述。由上可知,本实施例的数据节点在写入数据片以及对写入数据片进行冗余复制 时,不需要将数据片的具体写入情况上报给命名节点,也不需要由命名节点来分配冗余数 据节点,而是由数据节点的复制单元603根据冗余份数和预置的路由表,通过DHT算法来确 定冗余数据节点,从而减轻了命名节点的负担。另外,在数据节点发生变化时,也不需要由 命名节点来重新对数据节点上的数据进行调整,而是由数据节点的第一调整单元、第二调 整单元、删除单元或冗余更新单元来相应地进行调整,所以可以进一步减轻了命名节点的 负担,有利于提高系统的稳定性;而且,由于采用本方案可以减少对命名节点的依赖性,所 以可以避免现有技术中分片文件系统性能提高受到命名节点性能限制的问题,有利于提升 分片文件系统的性能和规模。实施例七、相应的,本发明实施例还提供一种分片文件系统,该分片文件系统包括本发明实 施例提供的任一种客户端接口和数据节点;客户端接口,用于获取文件名以及数据片的编号,根据获取到的文件名和数据片 的编号通过DHT算法计算出数据片的Key值,然后根据计算出的Key值确定数据节点,将 数据片写入该数据节点,或从该数据节点中读取出数据片;其中,数据片由文件数据划分而 成;Key值为
,m为32、64或128等等,m的具体取值可以依赖系统的规模而定;数据节点,用于接收客户端接口写入的数据片;获取该数据片的冗余份数;根据 冗余份数和预置的路由表,通过DHT算法将该数据片复制到其他数据节点上,其中,数据片 由文件数据划分而成。该数据节点,还用于将保存的数据片发送给客户端接口。其中,在需要写入数据片时,客户端接口,具体用于创建文件,该文件具有文件名, 将需要写入该文件中的文件数据划分成数据片;对该数据片进行编号,得到数据片的编号。进一步的,客户端接口,还用于发送创建文件信息给命名节点以生成文件元数据, 其中,该文件元数据包括文件标识、文件名和文件大小;该文件元数据还可以包括文件创建 时间、文件修改时间和/或该文件中各数据片的检验值,等等;接收命名节点返回的文件标 识;根据数据片的编号和接收到的文件标识写入数据片。在读取数据片时,客户端接口,具体用于发送打开文件信息给命名节点;接收命名 节点根据该打开文件信息返回的文件标识,根据该文件标识获取数据片的编号,根据文件 标识和数据片的编号从数据节点中读取出数据片。该分片文件系统还可以包括命名节点;在写入数据时,命名节点,用于接收客户端接口发送的创建文件信息,根据创建文 件信息生成文件元数据;该命名节点,还用于返回文件标识给客户端接口。在读取数据时,命名节点,用于接收客户端接口发送的打开文件信息,根据该打开 文件信息返回的文件标识给客户端接口。
当分片文件系统中新增或删减数据节点时,数据节点还用于在路由表中增加该新 增数据节点的路由信息或删除该删减数据节点的路由信息,以得到新路由表。进一步的,当分片文件系统中的数据节点时,数据节点还用于对数据节点中的数 据进行调整,具体可参见前面实施例,在此不再赘述。以上各个设备具体可参见前面实施例,在此不再赘述。由上可知,本实施例的分片文件系统的客户端接口可以根据文件名和数据片的编 号,通过DHT算法计算出数据片的Key值,然后根据计算出的Key值来确定数据节点,以进 行数据的读取或写入,而且,在写入数据片以及对写入数据片进行冗余复制时,也可以由数 据节点通过DHT算法来确定冗余数据节点,而不需要由命名节点来分配冗余数据节点;进 一步的,在数据节点发生变化时,也不需要由命名节点来重新对数据节点上的数据进行调 整,而是由数据节点自身来进行调整,避免了现有技术中由命名节点来分配数据节点、分配 冗余数据节点以及调整数据节点等操作,所导致的命名节点的负担过重、以及对系统影响 较大等问题,有利于简化命名节点的功能,提高系统的稳定性;而且,采用该方案也可以避 免现有技术中分片文件系统对命名节点的依赖性过大所导致的分片文件系统性能提高受 到命名节点性能限制的问题,有利于提升分片文件系统的性能和规模的扩展。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存 储介质可以包括只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。以上对本发明实施例所提供的数据处理方法、装置和系统进行了详细介绍,本文 中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮 助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思 想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对 本发明的限制。
权利要求
1.一种数据处理方法,其特征在于,包括获取文件名和数据片的编号,其中,数据片由文件数据划分而成;根据所述文件名和编号通过分布式哈希表DHT算法计算出数据片的关键字Key值;根据计算出的Key值确定数据节点;将数据片写入所述数据节点,或从所述数据节点中读取出数据片。
2.根据权利要求1所述的方法,其特征在于,所述获取文件名和数据片的编号包括 创建文件,所述文件具有文件名;将需要写入所述文件中的文件数据划分成数据片; 对所述数据片进行编号,得到数据片的编号。
3.根据权利要求1或2所述的方法,其特征在于,还包括发送创建文件信息给命名节点,以生成文件元数据,所述文件元数据包括文件标识、文 件名和文件大小;接收命名节点返回的文件标识;则所述将数据片写入所述数据节点包括根据所述文件标识和数据片的编号写入数据片。
4.根据权利要求1所述的方法,其特征在于,所述获取文件名和数据片的编号包括 发送打开文件信息给命名节点,所述打开文件信息包括文件名;接收命名节点根据所述打开文件信息返回的文件标识; 根据所述文件标识获取数据片的编号。
5.根据权利要求4所述的方法,其特征在于,所述从数据节点中读取出数据片包括 根据所述文件标识和数据片的编号从数据节点中读取出数据片。
6.一种数据处理方法,其特征在于,包括接收客户端接口写入的数据片,所述数据片由文件数据划分而成; 获取所述数据片的冗余份数;根据所述冗余份数和预置的路由表,通过分布式哈希表DHT算法将所述数据片复制到 其他数据节点上。
7.根据权利要求6所述的方法,其特征在于,所述根据所述冗余份数,通过DHT算法将 所述数据片复制到其他数据节点上包括根据预置的路由表,通过DHT算法确定本数据节点后X个其他数据节点为冗余数据节 点;所述X等于冗余份数与1的差值;将所述数据片分别复制到确定的冗余数据节点中。
8.根据权利要求6或7所述的方法,其特征在于,还包括当分片文件系统中新增或删减数据节点时,在路由表中增加该新增数据节点的路由信 息或删除该删减数据节点的路由信息,得到新路由表。
9.根据权利要求8所述的方法,其特征在于,还包括 根据新路由表确定所述新增数据节点的后一个数据节点;通过DHT算法将所述后一个数据节点中的部分非冗余数据转移到新增数据节点中,所 述非冗余数据为应保存在本数据节点上的数据片;通过DHT算法将所述后一个数据节点中的全部冗余数据转移到新增数据节点中,所述冗余数据为其他数据节点复制到本数据节点上的数据片。
10.根据权利要求8所述的方法,其特征在于,还包括通过DHT算法删除所述删减数据节点复制到本数据节点上的数据片。
11.根据权利要求8所述的方法,其特征在于,还包括通过冗余份数和新路由表,通过DHT算法重新将所述数据片复制到其他数据节点上。
12.—种客户端接口,其特征在于,包括获取单元,用于获取文件名和数据片的编号,其中,数据片由文件数据划分而成; 运算单元,用于根据获取单元获取到的文件名和数据片的编号通过分布式哈希表DHT 算法计算出数据片的关键字Key值;确定单元,用于根据运算单元计算出的Key值确定数据节点;处理单元,用于将数据片写入所述数据节点,或从所述数据节点中读取出数据片。
13.根据权利要求12所述的客户端接口,其特征在于,所述获取单元包括 创建子单元,用于创建文件,所述文件具有文件名;划分子单元,用于将需要写入创建子单元所创建的文件中的文件数据划分成数据片; 编号子单元,用于对划分子单元划分得到的数据片进行编号,得到数据片的编号。
14.根据权利要求13所述的客户端接口,其特征在于,还包括发送单元和接收单元; 发送单元,用于在创建子单元创建文件时,发送创建文件信息给命名节点,以生成文件元数据,所述文件元数据包括文件标识、文件名和文件大小; 接收单元,用于接收命名节点返回的文件标识;则处理单元,具体用于根据接收单元接收到的文件标识和编号子单元得到的数据片的 编号写入数据片。
15.根据权利要求12所述的客户端接口,其特征在于,所述获取单元包括打开子单元、 接收子单元和编号获取子单元;打开子单元,用于发送打开文件信息给命名节点; 接收子单元,用于接收命名节点根据所述打开文件信息返回的文件标识; 编号获取子单元,用于根据接收子单元接收到的文件标识获取数据片的编号; 则所述处理单元,具体用于根据接收子单元接收到的文件标识和编号获取子单元获取 到的数据片的编号从数据节点中读取出数据片。
16.一种数据节点,其特征在于,包括写入单元,用于接收客户端接口写入的数据片,所述数据片由文件数据划分而成; 获取单元,用于获取写入单元写入的数据片的冗余份数;复制单元,用于根据预置的路由表和获取单元获取到的冗余份数,通过分布式哈希表 DHT算法将所述数据片复制到其他数据节点上。
17.根据权利要求16所述的数据节点,其特征在于,还包括路由表更新单元,用于当分片文件系统中新增或删减数据节点时,在路由表中增加该 新增数据节点的路由信息或删除该删减数据节点的路由信息,得到新路由表。
18.根据权利要求17所述的数据节点,其特征在于,还包括确定单元,用于根据路由表更新单元得到的新路由表确定所述新增数据节点的后一个 数据节点;第一调整单元,用于通过DHT算法将所述后一个数据节点中的部分非冗余数据转移到 新增数据节点中,所述非冗余数据为应保存在本数据节点上的数据片;第二调整单元,用于通过DHT算法将所述后一个数据节点中的全部冗余数据转移到新 增数据节点中,所述冗余数据为其他数据节点复制到本数据节点上的数据片。
19.根据权利要求17所述的数据节点,其特征在于,还包括删除单元,用于通过DHT算法删除所述删减数据节点复制到本数据节点上的数据片。
20.根据权利要求17所述的数据节点,其特征在于,还包括冗余更新单元,用于通过冗余份数和新路由表,通过DHT算法重新将所述数据片复制 到其他数据节点上。
21.一种分片文件系统,其特征在于,包括权利要求12至15中任一种客户端接口和权 利要求16至20中任一种数据节点。
全文摘要
本发明公开了一种数据处理方法、装置和系统。本发明实施例采用根据文件名和数据片的编号,通过DHT算法计算出数据片的Key值,然后根据计算出的Key值来确定数据节点,以便进行数据的读取或写入,避免了现有技术中由命名节点来分配数据节点,所导致的命名节点的负担过重的问题,有利于提高系统的稳定性;而且,也避免了现有技术中分片文件系统对命名节点的依赖性过大所导致的分片文件系统性能提高受到命名节点性能限制的问题,有利于提升分片文件系统的性能和规模。
文档编号G06F17/30GK102004797SQ201010606318
公开日2011年4月6日 申请日期2010年12月24日 优先权日2010年12月24日
发明者宋波 申请人:深圳市同洲电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1