本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種用于HDFS的文件比較方法及裝置。
背景技術(shù):HDFS(HadoopDistributedFileSystem)是一種分布式文件系統(tǒng)。它有著高容錯性的特點,而且提供高傳輸率來訪問應(yīng)用程序的數(shù)據(jù),適合有著超大數(shù)據(jù)集的應(yīng)用程序。對于HDFS上的文件進行比較時,使用的傳統(tǒng)的文件比較方法包括:1.直接比較法:先將需要比較的兩個文件從HDFS上下載到本地,然后再在本地通過diff等文件比較工具進行比較;2.哈希值比較法:先將需要比較的兩個文件從HDFS上下載到本地,然后分別對兩個文件進行哈希值的計算,例如采用md5算法,最后對計算出來的md5值進行比較。以上兩種方法均需要下載文件,并且是對文件進行逐字節(jié)的比較,具有網(wǎng)絡(luò)傳輸量大、比較效率較低的缺點,特別是對大文件進行比較時缺點更為突出。
技術(shù)實現(xiàn)要素:本發(fā)明旨在至少解決上述技術(shù)問題之一。為此,本發(fā)明的一個目的在于提出一種能夠節(jié)省網(wǎng)絡(luò)傳輸并且提高比較效率的用于HDFS的文件比較方法。本發(fā)明的另一目的在于提出一種用于HDFS的文件比較裝置。為了實現(xiàn)上述目的,根據(jù)本發(fā)明的第一方面實施例的用于HDFS的文件比較方法包括以下步驟:A.從HDFS的主節(jié)點獲取第一文件和第二文件的信息;B.根據(jù)所述信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同;C.如果是,則從HDFS的從節(jié)點獲取所述多個第一數(shù)據(jù)塊的多個第一crc校驗值以及所述多個第二數(shù)據(jù)塊的多個第二crc校驗值;D.將所述多個第一crc校驗值以及所述多個第二crc校驗值按照順序分別進行比較;E.如果比較結(jié)果相同,則判斷所述第一文件和所述第二文件相同;F.如果比較結(jié)果不同,則判斷所述第一文件和所述第二文件不同。根據(jù)本發(fā)明實施例的用于HDFS的文件比較方法,可以節(jié)省網(wǎng)絡(luò)傳輸量,并且提高文件比較的效率。為了實現(xiàn)上述目的,根據(jù)本發(fā)明的第二方面實施例的用于HDFS的文件比較裝置包括:信息獲取模塊,所述信息獲取模塊用于從HDFS的主節(jié)點獲取第一文件和第二文件的信息;第一比較模塊,所述第一比較模塊用于根據(jù)所述信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同;crc校驗值獲取模塊,所述crc校驗值獲取模塊用于在構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量相同的情況下,從HDFS的從節(jié)點獲取所述多個第一數(shù)據(jù)塊的多個第一crc校驗值以及所述多個第二數(shù)據(jù)塊的多個第二crc校驗值;第二比較模塊,所述第二比較模塊用于將所述多個第一crc校驗值以及所述多個第二crc校驗值按照順序分別進行比較;以及判斷模塊,所述判斷模塊用于在比較結(jié)果相同時判斷所述第一文件和所述第二文件相同,以及比較結(jié)果不同時判斷所述第一文件和所述第二文件不同。根據(jù)本發(fā)明實施例的用于HDFS的文件比較裝置,耗費網(wǎng)絡(luò)傳輸少,文件比較效率高。本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。附圖說明本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中,圖1是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較方法的流程圖;圖2是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較方法的流程圖;圖3是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較方法的流程圖;圖4是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較裝置的結(jié)構(gòu)框圖;圖5是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較裝置的結(jié)構(gòu)框圖;以及圖6是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較裝置的結(jié)構(gòu)框圖。具體實施方式下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。相反,本發(fā)明的實施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。在本發(fā)明的描述中,需要理解的是,術(shù)語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術(shù)語“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連。對于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本發(fā)明中的具體含義。此外,在本發(fā)明的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。為了更清楚地闡述本發(fā)明的用于HDFS的文件比較方法及裝置,現(xiàn)對HDFS作進一步介紹。在HDFS系統(tǒng)中,一個文件的數(shù)據(jù)的組織方法如下:文件被切分成若干個固定大小的數(shù)據(jù)塊,而數(shù)據(jù)塊被隨機地存儲在從節(jié)點上(也稱為DataNode),同時存放數(shù)據(jù)塊的位置也會保存一份這個數(shù)據(jù)塊的crc(CyclicalRedundancyCheck,循環(huán)冗余校驗)校驗值數(shù)據(jù),而文件由哪些數(shù)據(jù)塊組成的信息則存在主節(jié)點上(也稱為NameNode)。例如,設(shè)F文件的大小為10G,如果HDFS中設(shè)定的數(shù)據(jù)塊大小為256M,則該文件被劃分為40個數(shù)據(jù)塊;在系統(tǒng)中默認(rèn)設(shè)定循環(huán)冗余校驗方法為crc32,則每數(shù)據(jù)塊中每512字節(jié)對應(yīng)4字節(jié)的crc校驗值數(shù)據(jù),每個數(shù)據(jù)塊包括2k的crc校驗值數(shù)據(jù)。由此,HDFS的主節(jié)點上存儲著組成F文件的40個數(shù)據(jù)塊的位置信息,HDFS的一個或多個從節(jié)點上存儲著40個數(shù)據(jù)塊的文件內(nèi)容以及每個數(shù)據(jù)塊對應(yīng)的長度為2k的crc校驗值數(shù)據(jù)。下面參考說明書附圖描述根據(jù)本發(fā)明實施例的用于HDFS的文件比較方法。一種用于HDFS的文件比較方法,包括以下步驟:從HDFS的主節(jié)點獲取第一文件和第二文件的信息;根據(jù)信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同;如果是,則從HDFS的從節(jié)點獲取多個第一數(shù)據(jù)塊的多個第一crc校驗值以及多個第二數(shù)據(jù)塊的多個第二crc校驗值;將多個第一crc校驗值以及多個第二crc校驗值按照順序分別進行比較;如果比較結(jié)果相同,則判斷第一文件和第二文件相同;以及如果比較結(jié)果不同,則判斷第一文件和第二文件不同。圖1為根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較方法的流程圖。如圖1所示,根據(jù)本發(fā)明實施例的用于HDFS的文件比較方法包括下述步驟。步驟S101,從HDFS的主節(jié)點獲取第一文件和第二文件的信息。具體地,該信息包括構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)量及位置和構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)量及位置。在本發(fā)明的一個實施例中,多個第一數(shù)據(jù)塊和多個第二數(shù)據(jù)塊的大小是265M,只需已知某個文件的大小,即可求得構(gòu)成該文件的數(shù)據(jù)塊的數(shù)量。需要說明的是,數(shù)據(jù)塊的大小也可以設(shè)定為64M、128M、512M等數(shù)值,在此處選用256M僅是為了示例的方便,而并不作為本發(fā)明的限定。步驟S102,根據(jù)信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同。具體地,由于在HDFS系統(tǒng)中,每個數(shù)據(jù)塊的大小是預(yù)定的,因而構(gòu)成文件的數(shù)據(jù)塊數(shù)量是判斷兩個文件是否相同的第一步驟,只有在構(gòu)成兩個文件的數(shù)據(jù)塊數(shù)量一致的情況下,才進一步進行后續(xù)的判斷步驟。步驟S103,如果是,則從HDFS的從節(jié)點獲取多個第一數(shù)據(jù)塊的多個第一crc校驗值以及多個第二數(shù)據(jù)塊的多個第二crc校驗值。具體地,經(jīng)步驟S102的比較得知被比較第一文件和第二文件的數(shù)據(jù)塊的數(shù)目相同后,再進一步從HDFS的從節(jié)點中獲取被比較的第一文件和第二文件的多個crc校驗值,用于對第一文件和第二文件的內(nèi)容作進一步比較。其中,crc檢驗方法具有檢錯能力強、開銷小,易于用編碼器及檢測電路實現(xiàn)的優(yōu)點。在本發(fā)明的一個實施例中,多個第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié),即2k。需要說明的是,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度也可以為1k、4k、8k等數(shù)值,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度取決于數(shù)據(jù)塊的大小以及選用的CRC校驗方法的種類,數(shù)據(jù)塊越大,對應(yīng)的crc校驗值越長,采用不同的crc校驗方法(例如crc12、crc16、crc32等)也會得出不同長度的校驗碼。本實施例中,確定第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié)僅是為了示例的方便,而并不作為本發(fā)明的限定。步驟S104,將多個第一crc校驗值以及多個第二crc校驗值按照順序分別進行比較。具體地,是將構(gòu)成第一文件的第一數(shù)據(jù)塊的crc校驗值與構(gòu)成第二文件的第一數(shù)據(jù)塊的crc校驗值比較,將構(gòu)成第一文件的第二數(shù)據(jù)塊的crc校驗值與構(gòu)成第二文件的第二數(shù)據(jù)塊的crc校驗值比較,依次類推。步驟S105,如果比較結(jié)果相同,則判斷第一文件和第二文件相同。具體地,如果構(gòu)成第一文件的所有數(shù)據(jù)塊的crc校驗值分別與構(gòu)成第二文件的所有數(shù)據(jù)塊的crc校驗值相同,才判斷第一文件和第二文件相同。步驟S106,如果比較結(jié)果不同,則判斷第一文件和第二文件不同。具體地,如果構(gòu)成第一文件的某一數(shù)據(jù)塊的crc校驗值與構(gòu)成第二文件的某一數(shù)據(jù)塊的crc校驗值不同,則判斷第一文件和第二文件不同。根據(jù)步驟S104-步驟S106,通過依次比較多個第一crc校驗值以及多個第二crc校驗值,對第一文件和第二文件的內(nèi)容按順序進行比較。當(dāng)多個第一crc校驗值與多個第二crc校驗值完全相同,則判斷第一文件和第二文件相同;當(dāng)判斷出第一文件的某個crc校驗值與對應(yīng)順序的第二文件的某個crc校驗值不同,則判斷第一文件和第二文件不同,并且第一文件之后順序的多個crc校驗值與第二文件之后順序的多個crc校驗值無需繼續(xù)比較。根據(jù)上述實施例的用于HDFS的文件比較方法,可以節(jié)省網(wǎng)絡(luò)傳輸量,并且提高文件比較的效率。舉例地,以比較兩個10G大小的文件A與文件B來說明本發(fā)明的優(yōu)點。若采用傳統(tǒng)的直接比較法,則需要將文件A與文件B從HDFS上下載后逐字節(jié)比較,故網(wǎng)絡(luò)傳輸數(shù)據(jù)量為10*2=20G,比較的字節(jié)數(shù)為10G;若采用本發(fā)明上述實施例的文件比較方法,因10G大小的文件對應(yīng)40個數(shù)據(jù)塊,每個數(shù)據(jù)塊對應(yīng)2k大小的crc校驗值,故網(wǎng)絡(luò)傳輸數(shù)據(jù)量僅為2個*40*2k=160k,比較的字節(jié)數(shù)僅為80k。圖2為根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較方法的流程圖。步驟S201,從HDFS的主節(jié)點獲取第一文件和第二文件的信息。具體地,該信息包括構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)量及位置和構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)量及位置。在本發(fā)明的一個實施例中,多個第一數(shù)據(jù)塊和多個第二數(shù)據(jù)塊的大小是265M,只需已知某個文件的大小,即可求得構(gòu)成該文件的數(shù)據(jù)塊的數(shù)量。需要說明的是,數(shù)據(jù)塊的大小也可以設(shè)定為64M、128M、512M等數(shù)值,在此處選用256M僅是為了示例的方便,而并不作為本發(fā)明的限定。步驟S202,根據(jù)信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同。具體地,由于在HDFS系統(tǒng)中,每個數(shù)據(jù)塊的大小是預(yù)定的,因而構(gòu)成文件的數(shù)據(jù)塊數(shù)量是判斷兩個文件是否相同的第一步驟,只有在構(gòu)成兩個文件的數(shù)據(jù)塊數(shù)量一致的情況下,才進一步進行后續(xù)的判斷步驟。步驟S203,如果是,則從HDFS的從節(jié)點獲取多個第一數(shù)據(jù)塊的多個第一crc校驗值以及多個第二數(shù)據(jù)塊的多個第二crc校驗值。具體地,經(jīng)步驟S102的比較得知被比較第一文件和第二文件的數(shù)據(jù)塊的數(shù)目相同后,再進一步從HDFS的從節(jié)點中獲取被比較的第一文件和第二文件的多個crc校驗值,用于對第一文件和第二文件的內(nèi)容作進一步比較。其中,crc檢驗方法具有檢錯能力強、開銷小,易于用編碼器及檢測電路實現(xiàn)的優(yōu)點。在本發(fā)明的一個實施例中,多個第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié),即2k。需要說明的是,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度也可以為1k、4k、8k等數(shù)值,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度取決于數(shù)據(jù)塊的大小以及選用的CRC校驗方法的種類,數(shù)據(jù)塊越大,對應(yīng)的crc校驗值越長,采用不同的crc校驗方法(例如crc12、crc16、crc32等)也會得出不同長度的校驗碼。本實施例中,確定第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié)僅是為了示例的方便,而并不作為本發(fā)明的限定。步驟S204,將多個第一crc校驗值以及多個第二crc校驗值按照順序分別進行比較。具體地,是將構(gòu)成第一文件的第一數(shù)據(jù)塊的crc校驗值與構(gòu)成第二文件的第一數(shù)據(jù)塊的crc校驗值比較,將構(gòu)成第一文件的第二數(shù)據(jù)塊的crc校驗值與構(gòu)成第二文件的第二數(shù)據(jù)塊的crc校驗值比較,依次類推。步驟S205,如果比較結(jié)果相同,則判斷第一文件和第二文件相同。具體地,如果構(gòu)成第一文件的所有數(shù)據(jù)塊的crc校驗值分別與構(gòu)成第二文件的所有數(shù)據(jù)塊的crc校驗值相同,才判斷第一文件和第二文件相同。步驟S206,如果比較結(jié)果不同,則判斷第一文件和第二文件不同。具體地,如果構(gòu)成第一文件的某一數(shù)據(jù)塊的crc校驗值與構(gòu)成第二文件的某一數(shù)據(jù)塊的crc校驗值不同,則判斷第一文件和第二文件不同。根據(jù)步驟S204-步驟S206,通過依次比較多個第一crc校驗值以及多個第二crc校驗值,對第一文件和第二文件的內(nèi)容按順序進行比較。當(dāng)多個第一crc校驗值與多個第二crc校驗值完全相同,則判斷第一文件和第二文件相同;當(dāng)判斷出第一文件的某個crc校驗值與對應(yīng)順序的第二文件的某個crc校驗值不同,則判斷第一文件和第二文件不同,并且第一文件之后順序的多個crc校驗值與第二文件之后順序的多個crc校驗值無需繼續(xù)比較。根據(jù)本發(fā)明實施例的用于HDFS的文件比較方法進一步包括步驟:在步驟S102中,如果判斷出構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量不相同,則判斷第一文件和第二文件不同。該附加步驟表明:若比較出第一文件和第二文件的大小不一致,則可以無需進行后續(xù)步驟,無需繼續(xù)比較其具體內(nèi)容,直接判斷第一文件和第二文件不同,進一步提高了比較效率。圖3為根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較方法的流程圖。如圖3所示,根據(jù)本發(fā)明實施例的用于HDFS的文件比較方法包括下述步驟。步驟S301,從HDFS的主節(jié)點獲取第一文件和第二文件的信息。具體地,該信息包括構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)量及位置和構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)量及位置。在本發(fā)明的一個實施例中,多個第一數(shù)據(jù)塊和多個第二數(shù)據(jù)塊的大小是265M,只需已知某個文件的大小,即可求得構(gòu)成該文件的數(shù)據(jù)塊的數(shù)量。需要說明的是,數(shù)據(jù)塊的大小也可以設(shè)定為64M、128M、512M等數(shù)值,在此處選用256M僅是為了示例的方便,而并不作為本發(fā)明的限定。步驟S302,根據(jù)信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同。具體地,由于在HDFS系統(tǒng)中,每個數(shù)據(jù)塊的大小是預(yù)定的,因而構(gòu)成文件的數(shù)據(jù)塊數(shù)量是判斷兩個文件是否相同的第一步驟,只有在構(gòu)成兩個文件的數(shù)據(jù)塊數(shù)量一致的情況下,才進一步進行后續(xù)的判斷步驟。。步驟S303,如果是,則從HDFS的從節(jié)點獲取多個第一數(shù)據(jù)塊的多個第一crc校驗值以及多個第二數(shù)據(jù)塊的多個第二crc校驗值。具體地,經(jīng)步驟S302的比較得知被比較第一文件和第二文件的數(shù)據(jù)塊的數(shù)目相同后,再進一步從HDFS的從節(jié)點中獲取被比較的第一文件和第二文件的多個crc校驗值,用于對第一文件和第二文件的內(nèi)容作進一步比較。其中,crc檢驗方法具有檢錯能力強、開銷小,易于用編碼器及檢測電路實現(xiàn)的優(yōu)點。在本發(fā)明的一個實施例中,多個第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié),即2k。需要說明的是,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度也可以為1k、4k、8k等數(shù)值,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度取決于數(shù)據(jù)塊的大小以及選用的CRC校驗方法的種類,數(shù)據(jù)塊越大,對應(yīng)的crc校驗值越長,采用不同的crc校驗方法(例如crc12、crc16、crc32等)也會得出不同長度的校驗碼。本實施例中,確定第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié)僅是為了示例的方便,而并不作為本發(fā)明的限定。步驟S304,生成與多個第一crc校驗值對應(yīng)的多個第一哈希值以及與多個第二crc校驗值對應(yīng)的多個第二哈希值。具體地,哈希算法將任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值,哈希值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。哈希算法對散列的明文非常敏感,而且哪怕只更改其中的一個字母,隨后的哈希都將產(chǎn)生不同的值。在本發(fā)明的一個實施例中,多個第一哈希值和多個第二哈希值的長度是16字節(jié)。需要說明的是,哈希算法包括多種,根據(jù)不同算法得到的哈希值長度也可以為32字節(jié)、64字節(jié)、128字節(jié)等數(shù)值,在此處選用16字節(jié)僅是為了示例的方便,而并不作為本發(fā)明的限定。步驟S305,將多個第一哈希值與第二哈希值按照順序分別進行比較,判斷二者是否相同。步驟S306,如果比較結(jié)果相同,則判斷第一文件和第二文件相同;以及步驟S307,如果比較結(jié)果不同,則判斷第一文件和第二文件不同。根據(jù)步驟S305-步驟S307,通過依次比較多個第一哈希值以及多個第二哈希值,對第一文件和第二文件的內(nèi)容按順序進行比較。當(dāng)多個第一哈希值與多個第二哈希值完全相同,則判斷第一文件和第二文件相同;當(dāng)判斷出某個第一哈希值與對應(yīng)順序的某個第二哈希值不同,則判斷第一文件和第二文件不同,并且后邊順序的多個第一哈希值與后邊順序的多個第二哈希值無需繼續(xù)比較。在本發(fā)明的一個實施例中,還進一步包括步驟:步驟S302中,如果判斷出構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量不相同,則判斷第一文件和第二文件不同。該步驟表明:若比較出第一文件和第二文件的大小不一致,則可以無需進行后續(xù)步驟,無需繼續(xù)比較其具體內(nèi)容,直接判斷第一文件和第二文件不同,進一步提高了比較效率。根據(jù)上述實施例的用于HDFS的文件比較方法,可以進一步節(jié)省網(wǎng)絡(luò)傳輸量,并且進一步提高文件比較的效率。舉例地,以比較兩個10G大小的文件A與文件B來說明本發(fā)明的優(yōu)點。若采用傳統(tǒng)的哈希值比較法,則需要將文件A與文件B從HDFS上下載后逐字節(jié)計算哈希值再作比較,故網(wǎng)絡(luò)傳輸數(shù)據(jù)量為10*2=20G,計算哈希值使用的數(shù)據(jù)量為20G,使用md5算法得到每個文件的哈希值,該哈希值為33字節(jié),然后逐字節(jié)對比兩個33字節(jié)的哈希值;若采用本發(fā)明上述實施例的文件比較方法,網(wǎng)絡(luò)傳輸數(shù)據(jù)量僅160k,計算哈希值使用的數(shù)據(jù)量為160k,每2k的校驗值根據(jù)crc32算法會轉(zhuǎn)換成16字節(jié)的哈希值,因而得到大小為640字節(jié)的兩個哈希值,然后逐字節(jié)對比兩個640字節(jié)的哈希值。根據(jù)本發(fā)明實施例的用于HDFS的文件比較裝置包括:信息獲取模塊,信息獲取模塊用于從HDFS的主節(jié)點獲取第一文件和第二文件的信息;第一比較模塊,第一比較模塊用于根據(jù)信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同;crc校驗值獲取模塊,crc校驗值獲取模塊用于在構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量相同的情況下,從HDFS的從節(jié)點獲取多個第一數(shù)據(jù)塊的多個第一crc校驗值以及多個第二數(shù)據(jù)塊的多個第二crc校驗值;第二比較模塊,第二比較模塊用于將多個第一crc校驗值以及多個第二crc校驗值按照順序分別進行比較;以及判斷模塊,判斷模塊用于在比較結(jié)果相同時判斷第一文件和第二文件相同,以及比較結(jié)果不同時判斷第一文件和第二文件不同。圖4是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較裝置的結(jié)構(gòu)框圖。如圖4所示,根據(jù)本發(fā)明實施例的用于HDFS的文件比較裝置,包括信息獲取模塊1、第一比較模塊2、crc校驗值獲取模塊3、第二比較模塊4和判斷模塊5。具體地,信息獲取模塊1用于用于從HDFS的主節(jié)點獲取第一文件和第二文件的信息。該信息包括構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)目及位置和構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)目及位置。在本發(fā)明的一個實施例中,多個第一數(shù)據(jù)塊和多個第二數(shù)據(jù)塊的大小是265M,只需已知某個文件的大小,即可求得構(gòu)成該文件的數(shù)據(jù)塊的數(shù)量。需要說明的是,數(shù)據(jù)塊的大小也可以設(shè)定為64M、128M、512M等數(shù)值,在此處選用256M僅是為了示例的方便,而并不作為本發(fā)明的限定。第一比較模塊2與信息獲取模塊1相連,用于根據(jù)信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同。crc校驗值獲取模塊3與第一比較模塊2相連,用于在構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量相同的情況下,從HDFS的從節(jié)點獲取多個第一數(shù)據(jù)塊的多個第一crc校驗值以及多個第二數(shù)據(jù)塊的多個第二crc校驗值。在本發(fā)明的一個實施例中,多個第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié),即2k。需要說明的是,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度也可以為1k、4k、8k等數(shù)值,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度取決于數(shù)據(jù)塊的大小以及選用的CRC校驗方法的種類,數(shù)據(jù)塊越大,對應(yīng)的crc校驗值越長,采用不同的crc校驗方法(例如crc12、crc16、crc32等)也會得出不同長度的校驗碼。本實施例中,確定第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié)僅是為了示例的方便,而并不作為本發(fā)明的限定。第二比較模塊4與crc校驗值獲取模塊3相連,用于將所述多個第一crc校驗值以及所述多個第二crc校驗值按照順序分別進行比較。判斷模塊5與第二比較模塊4相連,用于在第二比較模塊4的比較結(jié)果相同時判斷所述第一文件和所述第二文件相同,以及第二比較模塊4的比較結(jié)果不同時判斷所述第一文件和所述第二文件不同。根據(jù)本發(fā)明實施例的用于HDFS的文件比較裝置,耗費網(wǎng)絡(luò)傳輸少,文件比較效率高。圖5是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較裝置的結(jié)構(gòu)框圖。圖5所示的用于HDFS的文件比較裝置與圖4所示的用于HDFS的文件比較裝置結(jié)構(gòu)相同,兩者區(qū)別在于:本實施例中的判斷模塊5除了與第二比較模塊4相連外,還進一步與第一比較模塊2相連,具體地,在該實施例中,判斷模塊5還進一步用于在構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量不相同的情況下,直接判斷所述第一文件和所述第二文件不同。根據(jù)本實施例的用于HDFS的文件比較裝置,文件比較效率進一步得到提高。圖6是根據(jù)本發(fā)明一個實施例的用于HDFS的文件比較裝置的結(jié)構(gòu)框圖。如圖6所示,根據(jù)本發(fā)明實施例的用于HDFS的文件比較裝置,包括包括信息獲取模塊1、第一比較模塊2、crc校驗值獲取模塊3、哈希值生成模塊6、第二比較模塊4和判斷模塊5。具體地,信息獲取模塊1用于用于從HDFS的主節(jié)點獲取第一文件和第二文件的信息。該信息包括構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)目及位置和構(gòu)成第一文件的多個數(shù)據(jù)塊的數(shù)目及位置。在本發(fā)明的一個實施例中,多個第一數(shù)據(jù)塊和多個第二數(shù)據(jù)塊的大小是265M,只需已知某個文件的大小,即可求得構(gòu)成該文件的數(shù)據(jù)塊的數(shù)量。需要說明的是,數(shù)據(jù)塊的大小也可以設(shè)定為64M、128M、512M等數(shù)值,在此處選用256M僅是為了示例的方便,而并不作為本發(fā)明的限定。第一比較模塊2與信息獲取模塊1相連,用于根據(jù)信息比較構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量是否相同。crc校驗值獲取模塊3與第一比較模塊2相連,用于在構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量相同的情況下,從HDFS的從節(jié)點獲取多個第一數(shù)據(jù)塊的多個第一crc校驗值以及多個第二數(shù)據(jù)塊的多個第二crc校驗值。在本發(fā)明的一個實施例中,多個第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié),即2k。需要說明的是,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度也可以為1k、4k、8k等數(shù)值,每個數(shù)據(jù)塊對應(yīng)的crc校驗值的長度取決于數(shù)據(jù)塊的大小以及選用的CRC校驗方法的種類,數(shù)據(jù)塊越大,對應(yīng)的crc校驗值越長,采用不同的crc校驗方法(例如crc12、crc16、crc32等)也會得出不同長度的校驗碼。本實施例中,確定第一crc校驗值以及多個第二crc校驗值的長度是2048字節(jié)僅是為了示例的方便,而并不作為本發(fā)明的限定。哈希值生成模塊6與crc校驗值獲取模塊3相連,用于生成與多個第一crc校驗值對應(yīng)的多個第一哈希值以及與多個第二crc校驗值對應(yīng)的多個第二哈希值。具體地,哈希算法將任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值。哈希值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。如果散列一段明文非常敏感,而且哪怕只更改該段落的一個字母,隨后的哈希都將產(chǎn)生不同的值。在本發(fā)明的一個實施例中,多個第一哈希值和多個第二哈希值的長度是16字節(jié)。需要說明的是,哈希算法包括多種,根據(jù)不同算法得到的哈希值長度也可以為32字節(jié)、64字節(jié)、128字節(jié)等數(shù)值,在此處選用16字節(jié)僅是為了示例的方便,而并不作為本發(fā)明的限定。第二比較模塊4與哈希值生成模塊6相連,用于將所述多個第一哈希值以及所述多個第二哈希值按照順序分別進行比較。判斷模塊5與第二比較模塊4相連,用于在第二比較模塊4的比較結(jié)果相同時判斷所述第一文件和所述第二文件相同,以及第二比較模塊4的比較結(jié)果不同時判斷所述第一文件和所述第二文件不同。在本發(fā)明的一個實施例中,判斷模塊5還與第一比較模塊2相連,判斷模塊5還進一步用于在構(gòu)成第一文件的多個第一數(shù)據(jù)塊的數(shù)量與構(gòu)成第二文件的多個第二數(shù)據(jù)塊的數(shù)量不相同的情況下,直接判斷所述第一文件和所述第二文件不同。根據(jù)本發(fā)明實施例的用于HDFS的文件比較裝置,耗費網(wǎng)絡(luò)傳輸少,文件比較效率高。應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。盡管已經(jīng)示出和描述了本發(fā)明的實施例,對于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同限定。