CN103377251B - 用于hdfs的文件比较方法及装置 - Google Patents
用于hdfs的文件比较方法及装置 Download PDFInfo
- Publication number
- CN103377251B CN103377251B CN201210130345.XA CN201210130345A CN103377251B CN 103377251 B CN103377251 B CN 103377251B CN 201210130345 A CN201210130345 A CN 201210130345A CN 103377251 B CN103377251 B CN 103377251B
- Authority
- CN
- China
- Prior art keywords
- file
- crc check
- check values
- hdfs
- data blocks
- 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.)
- Active
Links
Landscapes
- Error Detection And Correction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种用于HDFS的文件比较方法及装置,根据本发明实施例的方法包括步骤:从HDFS的主节点获取第一文件和第二文件的信息;根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同;如果是,则从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值;将多个第一crc校验值以及多个第二crc校验值按照顺序分别进行比较;如果比较结果相同,则判断第一文件和第二文件相同;以及如果比较结果不同,则判断第一文件和第二文件不同。该方法可以节省网络传输量,并且提高文件比较的效率。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种用于HDFS的文件比较方法及装置。
背景技术
HDFS(Hadoop Distributed File System)是一种分布式文件系统。它有着高容错性的特点,而且提供高传输率来访问应用程序的数据,适合有着超大数据集的应用程序。
对于HDFS上的文件进行比较时,使用的传统的文件比较方法包括:
1.直接比较法:先将需要比较的两个文件从HDFS上下载到本地,然后再在本地通过diff等文件比较工具进行比较;
2.哈希值比较法:先将需要比较的两个文件从HDFS上下载到本地,然后分别对两个文件进行哈希值的计算,例如采用md5算法,最后对计算出来的md5值进行比较。
以上两种方法均需要下载文件,并且是对文件进行逐字节的比较,具有网络传输量大、比较效率较低的缺点,特别是对大文件进行比较时缺点更为突出。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的一个目的在于提出一种能够节省网络传输并且提高比较效率的用于HDFS的文件比较方法。
本发明的另一目的在于提出一种用于HDFS的文件比较装置。
为了实现上述目的,根据本发明的第一方面实施例的用于HDFS的文件比较方法包括以下步骤:A.从HDFS的主节点获取第一文件和第二文件的信息;B.根据所述信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同;C.如果是,则从HDFS的从节点获取所述多个第一数据块的多个第一crc校验值以及所述多个第二数据块的多个第二crc校验值;D.将所述多个第一crc校验值以及所述多个第二crc校验值按照顺序分别进行比较;E.如果比较结果相同,则判断所述第一文件和所述第二文件相同;F.如果比较结果不同,则判断所述第一文件和所述第二文件不同。
根据本发明实施例的用于HDFS的文件比较方法,可以节省网络传输量,并且提高文件比较的效率。
为了实现上述目的,根据本发明的第二方面实施例的用于HDFS的文件比较装置包括:信息获取模块,所述信息获取模块用于从HDFS的主节点获取第一文件和第二文件的信息;第一比较模块,所述第一比较模块用于根据所述信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同;crc校验值获取模块,所述crc校验值获取模块用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量相同的情况下,从HDFS的从节点获取所述多个第一数据块的多个第一crc校验值以及所述多个第二数据块的多个第二crc校验值;第二比较模块,所述第二比较模块用于将所述多个第一crc校验值以及所述多个第二crc校验值按照顺序分别进行比较;以及判断模块,所述判断模块用于在比较结果相同时判断所述第一文件和所述第二文件相同,以及比较结果不同时判断所述第一文件和所述第二文件不同。
根据本发明实施例的用于HDFS的文件比较装置,耗费网络传输少,文件比较效率高。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1是根据本发明一个实施例的用于HDFS的文件比较方法的流程图;
图2是根据本发明一个实施例的用于HDFS的文件比较方法的流程图;
图3是根据本发明一个实施例的用于HDFS的文件比较方法的流程图;
图4是根据本发明一个实施例的用于HDFS的文件比较装置的结构框图;
图5是根据本发明一个实施例的用于HDFS的文件比较装置的结构框图;以及
图6是根据本发明一个实施例的用于HDFS的文件比较装置的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
为了更清楚地阐述本发明的用于HDFS的文件比较方法及装置,现对HDFS作进一步介绍。在HDFS系统中,一个文件的数据的组织方法如下:文件被切分成若干个固定大小的数据块,而数据块被随机地存储在从节点上(也称为DataNode),同时存放数据块的位置也会保存一份这个数据块的crc(Cyclical Redundancy Check,循环冗余校验)校验值数据,而文件由哪些数据块组成的信息则存在主节点上(也称为NameNode)。
例如,设F文件的大小为10G,如果HDFS中设定的数据块大小为256M,则该文件被划分为40个数据块;在系统中默认设定循环冗余校验方法为crc32,则每数据块中每512字节对应4字节的crc校验值数据,每个数据块包括2k的crc校验值数据。由此,HDFS的主节点上存储着组成F文件的40个数据块的位置信息,HDFS的一个或多个从节点上存储着40个数据块的文件内容以及每个数据块对应的长度为2k的crc校验值数据。
下面参考说明书附图描述根据本发明实施例的用于HDFS的文件比较方法。
一种用于HDFS的文件比较方法,包括以下步骤:从HDFS的主节点获取第一文件和第二文件的信息;根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同;如果是,则从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值;将多个第一crc校验值以及多个第二crc校验值按照顺序分别进行比较;如果比较结果相同,则判断第一文件和第二文件相同;以及如果比较结果不同,则判断第一文件和第二文件不同。
图1为根据本发明一个实施例的用于HDFS的文件比较方法的流程图。
如图1所示,根据本发明实施例的用于HDFS的文件比较方法包括下述步骤。
步骤S101,从HDFS的主节点获取第一文件和第二文件的信息。
具体地,该信息包括构成第一文件的多个数据块的数量及位置和构成第一文件的多个数据块的数量及位置。在本发明的一个实施例中,多个第一数据块和多个第二数据块的大小是265M,只需已知某个文件的大小,即可求得构成该文件的数据块的数量。需要说明的是,数据块的大小也可以设定为64M、128M、512M等数值,在此处选用256M仅是为了示例的方便,而并不作为本发明的限定。
步骤S102,根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同。
具体地,由于在HDFS系统中,每个数据块的大小是预定的,因而构成文件的数据块数量是判断两个文件是否相同的第一步骤,只有在构成两个文件的数据块数量一致的情况下,才进一步进行后续的判断步骤。
步骤S103,如果是,则从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值。
具体地,经步骤S102的比较得知被比较第一文件和第二文件的数据块的数目相同后,再进一步从HDFS的从节点中获取被比较的第一文件和第二文件的多个crc校验值,用于对第一文件和第二文件的内容作进一步比较。其中,crc检验方法具有检错能力强、开销小,易于用编码器及检测电路实现的优点。
在本发明的一个实施例中,多个第一crc校验值以及多个第二crc校验值的长度是2048字节,即2k。需要说明的是,每个数据块对应的crc校验值的长度也可以为1k、4k、8k等数值,每个数据块对应的crc校验值的长度取决于数据块的大小以及选用的CRC校验方法的种类,数据块越大,对应的crc校验值越长,采用不同的crc校验方法(例如crc12、crc16、crc32等)也会得出不同长度的校验码。本实施例中,确定第一crc校验值以及多个第二crc校验值的长度是2048字节仅是为了示例的方便,而并不作为本发明的限定。
步骤S104,将多个第一crc校验值以及多个第二crc校验值按照顺序分别进行比较。
具体地,是将构成第一文件的第一数据块的crc校验值与构成第二文件的第一数据块的crc校验值比较,将构成第一文件的第二数据块的crc校验值与构成第二文件的第二数据块的crc校验值比较,依次类推。
步骤S105,如果比较结果相同,则判断第一文件和第二文件相同。
具体地,如果构成第一文件的所有数据块的crc校验值分别与构成第二文件的所有数据块的crc校验值相同,才判断第一文件和第二文件相同。
步骤S106,如果比较结果不同,则判断第一文件和第二文件不同。
具体地,如果构成第一文件的某一数据块的crc校验值与构成第二文件的某一数据块的crc校验值不同,则判断第一文件和第二文件不同。
根据步骤S104-步骤S106,通过依次比较多个第一crc校验值以及多个第二crc校验值,对第一文件和第二文件的内容按顺序进行比较。当多个第一crc校验值与多个第二crc校验值完全相同,则判断第一文件和第二文件相同;当判断出第一文件的某个crc校验值与对应顺序的第二文件的某个crc校验值不同,则判断第一文件和第二文件不同,并且第一文件之后顺序的多个crc校验值与第二文件之后顺序的多个crc校验值无需继续比较。
根据上述实施例的用于HDFS的文件比较方法,可以节省网络传输量,并且提高文件比较的效率。
举例地,以比较两个10G大小的文件A与文件B来说明本发明的优点。若采用传统的直接比较法,则需要将文件A与文件B从HDFS上下载后逐字节比较,故网络传输数据量为10*2=20G,比较的字节数为10G;若采用本发明上述实施例的文件比较方法,因10G大小的文件对应40个数据块,每个数据块对应2k大小的crc校验值,故网络传输数据量仅为2个*40*2k=160k,比较的字节数仅为80k。
图2为根据本发明一个实施例的用于HDFS的文件比较方法的流程图。
步骤S201,从HDFS的主节点获取第一文件和第二文件的信息。
具体地,该信息包括构成第一文件的多个数据块的数量及位置和构成第一文件的多个数据块的数量及位置。在本发明的一个实施例中,多个第一数据块和多个第二数据块的大小是265M,只需已知某个文件的大小,即可求得构成该文件的数据块的数量。需要说明的是,数据块的大小也可以设定为64M、128M、512M等数值,在此处选用256M仅是为了示例的方便,而并不作为本发明的限定。
步骤S202,根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同。
具体地,由于在HDFS系统中,每个数据块的大小是预定的,因而构成文件的数据块数量是判断两个文件是否相同的第一步骤,只有在构成两个文件的数据块数量一致的情况下,才进一步进行后续的判断步骤。
步骤S203,如果是,则从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值。
具体地,经步骤S102的比较得知被比较第一文件和第二文件的数据块的数目相同后,再进一步从HDFS的从节点中获取被比较的第一文件和第二文件的多个crc校验值,用于对第一文件和第二文件的内容作进一步比较。其中,crc检验方法具有检错能力强、开销小,易于用编码器及检测电路实现的优点。
在本发明的一个实施例中,多个第一crc校验值以及多个第二crc校验值的长度是2048字节,即2k。需要说明的是,每个数据块对应的crc校验值的长度也可以为1k、4k、8k等数值,每个数据块对应的crc校验值的长度取决于数据块的大小以及选用的CRC校验方法的种类,数据块越大,对应的crc校验值越长,采用不同的crc校验方法(例如crc12、crc16、crc32等)也会得出不同长度的校验码。本实施例中,确定第一crc校验值以及多个第二crc校验值的长度是2048字节仅是为了示例的方便,而并不作为本发明的限定。
步骤S204,将多个第一crc校验值以及多个第二crc校验值按照顺序分别进行比较。
具体地,是将构成第一文件的第一数据块的crc校验值与构成第二文件的第一数据块的crc校验值比较,将构成第一文件的第二数据块的crc校验值与构成第二文件的第二数据块的crc校验值比较,依次类推。
步骤S205,如果比较结果相同,则判断第一文件和第二文件相同。
具体地,如果构成第一文件的所有数据块的crc校验值分别与构成第二文件的所有数据块的crc校验值相同,才判断第一文件和第二文件相同。
步骤S206,如果比较结果不同,则判断第一文件和第二文件不同。
具体地,如果构成第一文件的某一数据块的crc校验值与构成第二文件的某一数据块的crc校验值不同,则判断第一文件和第二文件不同。
根据步骤S204-步骤S206,通过依次比较多个第一crc校验值以及多个第二crc校验值,对第一文件和第二文件的内容按顺序进行比较。当多个第一crc校验值与多个第二crc校验值完全相同,则判断第一文件和第二文件相同;当判断出第一文件的某个crc校验值与对应顺序的第二文件的某个crc校验值不同,则判断第一文件和第二文件不同,并且第一文件之后顺序的多个crc校验值与第二文件之后顺序的多个crc校验值无需继续比较。
根据本发明实施例的用于HDFS的文件比较方法进一步包括步骤:在步骤S102中,如果判断出构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量不相同,则判断第一文件和第二文件不同。该附加步骤表明:若比较出第一文件和第二文件的大小不一致,则可以无需进行后续步骤,无需继续比较其具体内容,直接判断第一文件和第二文件不同,进一步提高了比较效率。
图3为根据本发明一个实施例的用于HDFS的文件比较方法的流程图。
如图3所示,根据本发明实施例的用于HDFS的文件比较方法包括下述步骤。
步骤S301,从HDFS的主节点获取第一文件和第二文件的信息。
具体地,该信息包括构成第一文件的多个数据块的数量及位置和构成第一文件的多个数据块的数量及位置。在本发明的一个实施例中,多个第一数据块和多个第二数据块的大小是265M,只需已知某个文件的大小,即可求得构成该文件的数据块的数量。需要说明的是,数据块的大小也可以设定为64M、128M、512M等数值,在此处选用256M仅是为了示例的方便,而并不作为本发明的限定。
步骤S302,根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同。
具体地,由于在HDFS系统中,每个数据块的大小是预定的,因而构成文件的数据块数量是判断两个文件是否相同的第一步骤,只有在构成两个文件的数据块数量一致的情况下,才进一步进行后续的判断步骤。。
步骤S303,如果是,则从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值。
具体地,经步骤S302的比较得知被比较第一文件和第二文件的数据块的数目相同后,再进一步从HDFS的从节点中获取被比较的第一文件和第二文件的多个crc校验值,用于对第一文件和第二文件的内容作进一步比较。其中,crc检验方法具有检错能力强、开销小,易于用编码器及检测电路实现的优点。在本发明的一个实施例中,多个第一crc校验值以及多个第二crc校验值的长度是2048字节,即2k。需要说明的是,每个数据块对应的crc校验值的长度也可以为1k、4k、8k等数值,每个数据块对应的crc校验值的长度取决于数据块的大小以及选用的CRC校验方法的种类,数据块越大,对应的crc校验值越长,采用不同的crc校验方法(例如crc12、crc16、crc32等)也会得出不同长度的校验码。本实施例中,确定第一crc校验值以及多个第二crc校验值的长度是2048字节仅是为了示例的方便,而并不作为本发明的限定。
步骤S304,生成与多个第一crc校验值对应的多个第一哈希值以及与多个第二crc校验值对应的多个第二哈希值。
具体地,哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值,哈希值是一段数据唯一且极其紧凑的数值表示形式。哈希算法对散列的明文非常敏感,而且哪怕只更改其中的一个字母,随后的哈希都将产生不同的值。在本发明的一个实施例中,多个第一哈希值和多个第二哈希值的长度是16字节。需要说明的是,哈希算法包括多种,根据不同算法得到的哈希值长度也可以为32字节、64字节、128字节等数值,在此处选用16字节仅是为了示例的方便,而并不作为本发明的限定。
步骤S305,将多个第一哈希值与第二哈希值按照顺序分别进行比较,判断二者是否相同。步骤S306,如果比较结果相同,则判断第一文件和第二文件相同;
以及步骤S307,如果比较结果不同,则判断第一文件和第二文件不同。
根据步骤S305-步骤S307,通过依次比较多个第一哈希值以及多个第二哈希值,对第一文件和第二文件的内容按顺序进行比较。当多个第一哈希值与多个第二哈希值完全相同,则判断第一文件和第二文件相同;当判断出某个第一哈希值与对应顺序的某个第二哈希值不同,则判断第一文件和第二文件不同,并且后边顺序的多个第一哈希值与后边顺序的多个第二哈希值无需继续比较。
在本发明的一个实施例中,还进一步包括步骤:步骤S302中,如果判断出构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量不相同,则判断第一文件和第二文件不同。该步骤表明:若比较出第一文件和第二文件的大小不一致,则可以无需进行后续步骤,无需继续比较其具体内容,直接判断第一文件和第二文件不同,进一步提高了比较效率。
根据上述实施例的用于HDFS的文件比较方法,可以进一步节省网络传输量,并且进一步提高文件比较的效率。
举例地,以比较两个10G大小的文件A与文件B来说明本发明的优点。若采用传统的哈希值比较法,则需要将文件A与文件B从HDFS上下载后逐字节计算哈希值再作比较,故网络传输数据量为10*2=20G,计算哈希值使用的数据量为20G,使用md5算法得到每个文件的哈希值,该哈希值为33字节,然后逐字节对比两个33字节的哈希值;若采用本发明上述实施例的文件比较方法,网络传输数据量仅160k,计算哈希值使用的数据量为160k,每2k的校验值根据crc32算法会转换成16字节的哈希值,因而得到大小为640字节的两个哈希值,然后逐字节对比两个640字节的哈希值。
根据本发明实施例的用于HDFS的文件比较装置包括:信息获取模块,信息获取模块用于从HDFS的主节点获取第一文件和第二文件的信息;第一比较模块,第一比较模块用于根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同;crc校验值获取模块,crc校验值获取模块用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量相同的情况下,从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值;第二比较模块,第二比较模块用于将多个第一crc校验值以及多个第二crc校验值按照顺序分别进行比较;以及判断模块,判断模块用于在比较结果相同时判断第一文件和第二文件相同,以及比较结果不同时判断第一文件和第二文件不同。
图4是根据本发明一个实施例的用于HDFS的文件比较装置的结构框图。
如图4所示,根据本发明实施例的用于HDFS的文件比较装置,包括信息获取模块1、第一比较模块2、crc校验值获取模块3、第二比较模块4和判断模块5。
具体地,信息获取模块1用于用于从HDFS的主节点获取第一文件和第二文件的信息。该信息包括构成第一文件的多个数据块的数目及位置和构成第一文件的多个数据块的数目及位置。在本发明的一个实施例中,多个第一数据块和多个第二数据块的大小是265M,只需已知某个文件的大小,即可求得构成该文件的数据块的数量。需要说明的是,数据块的大小也可以设定为64M、128M、512M等数值,在此处选用256M仅是为了示例的方便,而并不作为本发明的限定。
第一比较模块2与信息获取模块1相连,用于根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同。
crc校验值获取模块3与第一比较模块2相连,用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量相同的情况下,从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值。在本发明的一个实施例中,多个第一crc校验值以及多个第二crc校验值的长度是2048字节,即2k。需要说明的是,每个数据块对应的crc校验值的长度也可以为1k、4k、8k等数值,每个数据块对应的crc校验值的长度取决于数据块的大小以及选用的CRC校验方法的种类,数据块越大,对应的crc校验值越长,采用不同的crc校验方法(例如crc12、crc16、crc32等)也会得出不同长度的校验码。本实施例中,确定第一crc校验值以及多个第二crc校验值的长度是2048字节仅是为了示例的方便,而并不作为本发明的限定。
第二比较模块4与crc校验值获取模块3相连,用于将所述多个第一crc校验值以及所述多个第二crc校验值按照顺序分别进行比较。
判断模块5与第二比较模块4相连,用于在第二比较模块4的比较结果相同时判断所述第一文件和所述第二文件相同,以及第二比较模块4的比较结果不同时判断所述第一文件和所述第二文件不同。
根据本发明实施例的用于HDFS的文件比较装置,耗费网络传输少,文件比较效率高。
图5是根据本发明一个实施例的用于HDFS的文件比较装置的结构框图。
图5所示的用于HDFS的文件比较装置与图4所示的用于HDFS的文件比较装置结构相同,两者区别在于:本实施例中的判断模块5除了与第二比较模块4相连外,还进一步与第一比较模块2相连,具体地,在该实施例中,判断模块5还进一步用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量不相同的情况下,直接判断所述第一文件和所述第二文件不同。根据本实施例的用于HDFS的文件比较装置,文件比较效率进一步得到提高。
图6是根据本发明一个实施例的用于HDFS的文件比较装置的结构框图。
如图6所示,根据本发明实施例的用于HDFS的文件比较装置,包括包括信息获取模块1、第一比较模块2、crc校验值获取模块3、哈希值生成模块6、第二比较模块4和判断模块5。
具体地,信息获取模块1用于用于从HDFS的主节点获取第一文件和第二文件的信息。该信息包括构成第一文件的多个数据块的数目及位置和构成第一文件的多个数据块的数目及位置。在本发明的一个实施例中,多个第一数据块和多个第二数据块的大小是265M,只需已知某个文件的大小,即可求得构成该文件的数据块的数量。需要说明的是,数据块的大小也可以设定为64M、128M、512M等数值,在此处选用256M仅是为了示例的方便,而并不作为本发明的限定。
第一比较模块2与信息获取模块1相连,用于根据信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同。
crc校验值获取模块3与第一比较模块2相连,用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量相同的情况下,从HDFS的从节点获取多个第一数据块的多个第一crc校验值以及多个第二数据块的多个第二crc校验值。在本发明的一个实施例中,多个第一crc校验值以及多个第二crc校验值的长度是2048字节,即2k。需要说明的是,每个数据块对应的crc校验值的长度也可以为1k、4k、8k等数值,每个数据块对应的crc校验值的长度取决于数据块的大小以及选用的CRC校验方法的种类,数据块越大,对应的crc校验值越长,采用不同的crc校验方法(例如crc12、crc16、crc32等)也会得出不同长度的校验码。本实施例中,确定第一crc校验值以及多个第二crc校验值的长度是2048字节仅是为了示例的方便,而并不作为本发明的限定。
哈希值生成模块6与crc校验值获取模块3相连,用于生成与多个第一crc校验值对应的多个第一哈希值以及与多个第二crc校验值对应的多个第二哈希值。具体地,哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文非常敏感,而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。在本发明的一个实施例中,多个第一哈希值和多个第二哈希值的长度是16字节。需要说明的是,哈希算法包括多种,根据不同算法得到的哈希值长度也可以为32字节、64字节、128字节等数值,在此处选用16字节仅是为了示例的方便,而并不作为本发明的限定。
第二比较模块4与哈希值生成模块6相连,用于将所述多个第一哈希值以及所述多个第二哈希值按照顺序分别进行比较。
判断模块5与第二比较模块4相连,用于在第二比较模块4的比较结果相同时判断所述第一文件和所述第二文件相同,以及第二比较模块4的比较结果不同时判断所述第一文件和所述第二文件不同。在本发明的一个实施例中,判断模块5还与第一比较模块2相连,判断模块5还进一步用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量不相同的情况下,直接判断所述第一文件和所述第二文件不同。
根据本发明实施例的用于HDFS的文件比较装置,耗费网络传输少,文件比较效率高。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
Claims (10)
1.一种用于HDFS的文件比较方法,其特征在于,包括以下步骤:
从HDFS的主节点获取构成第一文件的多个第一数据块的数量和构成第二文件的多个第二数据块的数量;
比较所述构成第一文件的多个第一数据块的数量与所述构成第二文件的多个第二数据块的数量是否相同;
如果否,则判断所述第一文件和所述第二文件不同,如果是,则从HDFS的从节点获取所述多个第一数据块的多个第一crc校验值以及所述多个第二数据块的多个第二crc校验值;
将所述多个第一crc校验值以及所述多个第二crc校验值按照顺序分别进行比较;
如果比较结果相同,则判断所述第一文件和所述第二文件相同;以及
如果比较结果不同,则判断所述第一文件和所述第二文件不同,其中,如果所述构成第一文件的所有数据块的crc校验值分别与所述构成第二文件的所有数据块的crc校验值相同,才判断第一文件和第二文件相同,当判断所述构成第一文件的某个数据块的crc校验值与对应顺序的所述构成第二文件的某个数据块的crc校验值不同,则判断所述第一文件和所述第二文件不同,并且所述构成第一文件之后顺序的多个数据块的crc校验值与所述构成第二文件之后顺序的多个数据块的crc校验值无需继续比较。
2.根据权利要求1所述的用于HDFS的文件比较方法,其特征在于,进一步包括步骤:
生成与所述多个第一crc校验值对应的多个第一哈希值以及与所述多个第二crc校验值对应的多个第二哈希值,其中,
将所述多个第一哈希值与所述多个第二哈希值按照顺序分别进行比较;
如果比较结果相同,则判断所述第一文件和所述第二文件相同;以及
如果比较结果不同,则判断所述第一文件和所述第二文件不同。
3.根据权利要求1或2所述的用于HDFS的文件比较方法,其特征在于,
所述多个第一数据块以及所述多个第二数据块的大小是256M。
4.根据权利要求3所述的用于HDFS的文件比较方法,其特征在于,所述多个第一crc校验值以及所述多个第二crc校验值的长度是2048字节。
5.根据权利要求4所述的用于HDFS的文件比较方法,其特征在于,所述多个第一哈希值与所述多个第二哈希值的长度是16字节。
6.一种用于HDFS的文件比较装置,其特征在于,包括:
信息获取模块,所述信息获取模块用于从HDFS的主节点获取第一文件和第二文件的信息,其中,所述信息获取模块不需要从所述HDFS的主节点下载所述第一文件和第二文件,仅需要从所述HDFS的主节点获取所述第一文件和第二文件的数据块的数量以及每个数据块的crc校检值;
第一比较模块,所述第一比较模块用于根据所述信息比较构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量是否相同;
crc校验值获取模块,所述crc校验值获取模块用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量相同的情况下,从HDFS的从节点获取所述多个第一数据块的多个第一crc校验值以及所述多个第二数据块的多个第二crc校验值;
第二比较模块,所述第二比较模块用于将所述多个第一crc校验值以及所述多个第二crc校验值按照顺序分别进行比较;以及
判断模块,所述判断模块用于在比较结果相同时判断所述第一文件和所述第二文件相同,以及比较结果不同时判断所述第一文件和所述第二文件不同,其中,所述判断模块用于在构成第一文件的多个第一数据块的数量与构成第二文件的多个第二数据块的数量不相同的情况下判断所述第一文件和所述第二文件不同,其中,如果所述构成第一文件的所有数据块的crc校验值分别与所述构成第二文件的所有数据块的crc校验值相同,才判断第一文件和第二文件相同,当判断所述构成第一文件的某个数据块的crc校验值与对应顺序的所述构成第二文件的某个数据块的crc校验值不同,则判断所述第一文件和所述第二文件不同,并且所述构成第一文件之后顺序的多个数据块的crc校验值与所述构成第二文件之后顺序的多个数据块的crc校验值无需继续比较。
7.根据权利要求6所述的用于HDFS的文件比较装置,其特征在于,进一步包括:
哈希值生成模块,所述哈希值生成模块用于生成与所述多个第一crc校验值对应的多个第一哈希值以及与所述多个第二crc校验值对应的多个第二哈希值,其中,
所述第二比较模块将所述多个第一哈希值与所述多个第二哈希值按照顺序分别进行比较,并且所述判断模块在比较结果相同时判断所述第一文件和所述第二文件相同,在比较结果不同时判断所述第一文件和所述第二文件不同。
8.根据权利要求6或7所述的用于HDFS的文件比较装置,其特征在于,
所述多个第一数据块以及所述多个第二数据块的大小是256M。
9.根据权利要求8所述的用于HDFS的文件比较装置,其特征在于,所述多个第一crc校验值以及所述多个第二crc校验值的长度是2048字节。
10.根据权利要求9所述的用于HDFS的文件比较装置,其特征在于,所述多个第一哈希值与所述多个第二哈希值的长度是16字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210130345.XA CN103377251B (zh) | 2012-04-27 | 2012-04-27 | 用于hdfs的文件比较方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210130345.XA CN103377251B (zh) | 2012-04-27 | 2012-04-27 | 用于hdfs的文件比较方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103377251A CN103377251A (zh) | 2013-10-30 |
CN103377251B true CN103377251B (zh) | 2017-05-10 |
Family
ID=49462377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210130345.XA Active CN103377251B (zh) | 2012-04-27 | 2012-04-27 | 用于hdfs的文件比较方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103377251B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104868973B (zh) * | 2014-02-21 | 2018-09-11 | 中国电信股份有限公司 | 数据完整性校验方法和系统 |
CN104537089B (zh) * | 2015-01-05 | 2018-03-30 | 北京数码大方科技股份有限公司 | 计算机辅助设计中的标注数据可靠性检测方法及装置 |
CN107451108B (zh) * | 2017-06-13 | 2021-04-06 | 广州视源电子科技股份有限公司 | 一种协同编辑文档的方法和系统 |
CN110460486B (zh) * | 2019-06-25 | 2022-08-05 | 网宿科技股份有限公司 | 服务节点的监控方法及系统 |
CN110460487B (zh) * | 2019-06-25 | 2022-04-05 | 网宿科技股份有限公司 | 服务节点的监控方法及系统、服务节点 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290628A (zh) * | 2008-06-17 | 2008-10-22 | 中兴通讯股份有限公司 | 一种数据文件更新存储方法 |
CN101807207A (zh) * | 2010-03-22 | 2010-08-18 | 北京大用科技有限责任公司 | 一种基于内容差异比较的文档共享方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101574339B1 (ko) * | 2008-04-28 | 2015-12-03 | 엘지전자 주식회사 | 이동통신 단말기와 tv간 데이터 동기화 방법 및 장치 |
-
2012
- 2012-04-27 CN CN201210130345.XA patent/CN103377251B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290628A (zh) * | 2008-06-17 | 2008-10-22 | 中兴通讯股份有限公司 | 一种数据文件更新存储方法 |
CN101807207A (zh) * | 2010-03-22 | 2010-08-18 | 北京大用科技有限责任公司 | 一种基于内容差异比较的文档共享方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103377251A (zh) | 2013-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103377251B (zh) | 用于hdfs的文件比较方法及装置 | |
WO2018149345A1 (zh) | 一种数据处理方法及装置 | |
GB2413867A (en) | Data compression and recovery | |
CN109409136A (zh) | 区块链存证内容的验证方法、装置及计算设备 | |
CN110347651B (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN113065169B (zh) | 一种文件存证方法、装置及设备 | |
CN106469100B (zh) | 一种数据恢复的方法、存储的方法相应的装置及系统 | |
EP3072076B1 (en) | A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure | |
CN110235162B (zh) | 区块链系统数据处理方法和区块的生成方法 | |
CN101655821B (zh) | 一种解决地址空间映射哈希地址冲突的方法及装置 | |
CN105739971B (zh) | 校验文件的生成、使用方法及装置 | |
WO2017095435A1 (en) | Combining hashes of data blocks | |
CN103888449A (zh) | 一种报文重组方法和装置 | |
CN112702400A (zh) | 一种基于多级默克尔树的区块链跨链交易验证方法 | |
CN114281793A (zh) | 数据校验方法、装置和系统 | |
CN106815100A (zh) | 接口测试方法及装置 | |
CN106682185B (zh) | 防止Mongos集群中的均衡操作失效的方法和装置 | |
CN111290998A (zh) | 迁移数据的校对方法、装置、设备及存储介质 | |
CN108920601B (zh) | 一种数据匹配方法及装置 | |
CN106533622A (zh) | 基于canfd总线的数据帧的数据场校验方法及装置 | |
CN106503010A (zh) | 一种数据库更改写入分区的方法及装置 | |
CN110806979B (zh) | 接口返回值的校验方法、装置、设备及存储介质 | |
CN116432190A (zh) | 接口未授权访问检测方法、装置、计算机设备及存储介质 | |
CN108365962B (zh) | 一种证书吊销列表查询方法及装置 | |
CN109815047A (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 |