分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法、裝置、設(shè)備及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)倉(cāng)庫(kù)管理領(lǐng)域,特別涉及一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方 法、裝置、設(shè)備及系統(tǒng)。
【背景技術(shù)】
[0002] Hadoop是一種分布式系統(tǒng)基礎(chǔ)架構(gòu),能夠充分利用集群高速運(yùn)算和存儲(chǔ),Hadoop 實(shí)現(xiàn)了一個(gè)分布式系統(tǒng)(HDFS,Hadoop Distributed File System)。該HDFS的架構(gòu)中可以 包含一個(gè)管理節(jié)點(diǎn)NameNode和多個(gè)數(shù)據(jù)節(jié)點(diǎn)DataNode,存儲(chǔ)在HDFS中的文件會(huì)被分成多 個(gè)數(shù)據(jù)塊,這些數(shù)據(jù)塊被分布存儲(chǔ)至不同的DataNode中。
[0003] 現(xiàn)有的Hadoop為了防止用戶對(duì)文件誤刪除時(shí)引發(fā)的文件丟失,在NameNode中設(shè) 置了回收站(Trash)的功能,當(dāng)用戶刪除某一文件時(shí),NameNode將該文件的目錄修改至回 收站目錄下,此時(shí)DataNode并沒(méi)有在物理上刪除該文件,但由于該文件的目錄被修改至回 收站目錄下,NameNode不會(huì)向用戶反饋該文件的元數(shù)據(jù)以及塊映射關(guān)系,因此用戶也是無(wú) 法查看到該文件的;如果用戶發(fā)現(xiàn)該刪除為誤操作,想要恢復(fù)該文件,NameNode會(huì)將該文 件名從回收站目錄下移動(dòng)至原目錄下,完成對(duì)該文件的恢復(fù),這樣,當(dāng)客戶端需要查看該文 件時(shí),客戶端根據(jù)NameNode反饋的該文件的元數(shù)據(jù)以及相關(guān)的塊映射關(guān)系,就能到相關(guān)的 DataNode中讀取該文件所對(duì)應(yīng)的數(shù)據(jù)塊。
[0004] 在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問(wèn)題:在NameNode中 設(shè)置的回收站對(duì)某些情況下的誤刪除操作無(wú)法進(jìn)行修復(fù),比如,當(dāng)用戶對(duì)該回收站進(jìn)行了 清理操作時(shí),NameNode會(huì)確定出回收站中的文件所包含的存儲(chǔ)在DataNode中的數(shù)據(jù)塊, NameNode會(huì)向DataNode下發(fā)用于刪除這些數(shù)據(jù)塊的刪除指令,DataNode則根據(jù)刪除指令 刪除這些數(shù)據(jù)塊;還比如,在集群?jiǎn)?dòng)前,如果NameNode中的元數(shù)據(jù)被誤刪除或損壞,此時(shí) 啟動(dòng)NameNode時(shí),NameNode的內(nèi)存中不包含元數(shù)據(jù),當(dāng)DataNode啟動(dòng)之后,DataNode向 Namenode上報(bào)數(shù)據(jù)塊信息,由于NameNode中并不存在這些數(shù)據(jù)塊信息,因此NameNode會(huì) 向DataNode下發(fā)對(duì)這些數(shù)據(jù)塊進(jìn)行刪除的刪除指令,DataNode則刪除這些數(shù)據(jù)塊。由于 DataNode在接收到刪除指令之后會(huì)直接刪除了相關(guān)數(shù)據(jù)塊,因此即便用戶在短時(shí)間內(nèi)發(fā)現(xiàn) 出現(xiàn)誤刪除,也無(wú)法對(duì)這些刪除的數(shù)據(jù)塊進(jìn)行恢復(fù),降低了 Hadoop系統(tǒng)的數(shù)據(jù)安全性。
【發(fā)明內(nèi)容】
[0005] 為了解決現(xiàn)有技術(shù)中NameNode中設(shè)置的回收站對(duì)某些情況下的誤刪除操作無(wú)法 進(jìn)行修復(fù),降低了Hadoop系統(tǒng)的數(shù)據(jù)安全性的問(wèn)題,本發(fā)明實(shí)施例提供了一種分布式數(shù)據(jù) 倉(cāng)庫(kù)中刪除文件的方法、裝置及電子設(shè)備。所述技術(shù)方案如下:
[0006] 第一方面,提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法,所述方法包括:
[0007] 數(shù)據(jù)節(jié)點(diǎn)向管理節(jié)點(diǎn)發(fā)送心跳上報(bào),所述心跳上報(bào)包括所述數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)的所有 數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識(shí),所述心跳上報(bào)用于使得所述管理節(jié)點(diǎn)根據(jù)所述心跳上報(bào)確定所述數(shù) 據(jù)塊標(biāo)識(shí)到所述數(shù)據(jù)節(jié)點(diǎn)的映射;
[0008] 接收心跳返回,從接收到的心跳返回中獲取所述管理節(jié)點(diǎn)發(fā)送的攜帶有數(shù)據(jù)塊標(biāo) 識(shí)的刪除指令;
[0009] 將所述數(shù)據(jù)塊標(biāo)識(shí)存入至延遲隊(duì)列中并記錄存入的時(shí)間;
[0010] 在指定條件下刪除所述延遲隊(duì)列中存儲(chǔ)的所述數(shù)據(jù)塊標(biāo)識(shí)所對(duì)應(yīng)的所述數(shù)據(jù)節(jié) 點(diǎn)中的數(shù)據(jù)塊。
[0011] 第二方面,提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法,所述方法包括:
[0012] 管理節(jié)點(diǎn)接收客戶端發(fā)送的用于指示刪除指定文件的文件刪除指令;
[0013] 接收數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳上報(bào),根據(jù)所述心跳上報(bào)確定所述數(shù)據(jù)塊標(biāo)識(shí)到所述數(shù) 據(jù)節(jié)點(diǎn)的映射,所述心跳上報(bào)包括所述數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)的所有數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識(shí);
[0014] 對(duì)于每一個(gè)數(shù)據(jù)節(jié)點(diǎn),根據(jù)預(yù)存的文件與數(shù)據(jù)塊標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系以及根據(jù)所 述心跳上報(bào)確定的所述數(shù)據(jù)塊標(biāo)識(shí)到所述數(shù)據(jù)節(jié)點(diǎn)的映射,確定出存儲(chǔ)在所述數(shù)據(jù)節(jié)點(diǎn)中 屬于所述指定文件的數(shù)據(jù)塊;
[0015] 在向所述數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳返回中添加攜帶有所述數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識(shí)的刪 除指令,以便所述數(shù)據(jù)節(jié)點(diǎn)接收所述刪除指令;將所述數(shù)據(jù)塊標(biāo)識(shí)存入至延遲隊(duì)列中;在 指定條件下刪除所述延遲隊(duì)列中存儲(chǔ)的所述數(shù)據(jù)塊標(biāo)識(shí)所對(duì)應(yīng)的數(shù)據(jù)塊。
[0016] 第三方面,提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法,所述方法包括:
[0017] 客戶端向管理節(jié)點(diǎn)發(fā)送用于指示刪除指定文件的文件刪除指令,以便所述管理節(jié) 點(diǎn)在接收到所述文件刪除指令之后,對(duì)于每一個(gè)數(shù)據(jù)節(jié)點(diǎn),根據(jù)預(yù)存的文件與數(shù)據(jù)塊標(biāo)識(shí) 之間的對(duì)應(yīng)關(guān)系以及根據(jù)數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳上報(bào)確定的數(shù)據(jù)塊標(biāo)識(shí)到數(shù)據(jù)節(jié)點(diǎn)的映射, 確定出存儲(chǔ)在所述數(shù)據(jù)節(jié)點(diǎn)中屬于所述指定文件的數(shù)據(jù)塊;在向所述數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳 返回中添加攜帶有所述數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識(shí)的刪除指令,以便所述數(shù)據(jù)節(jié)點(diǎn)接收所述刪除 指令;將所述數(shù)據(jù)塊標(biāo)識(shí)存入至延遲隊(duì)列中;在指定條件下刪除所述延遲隊(duì)列中存儲(chǔ)的所 述數(shù)據(jù)塊標(biāo)識(shí)所對(duì)應(yīng)的數(shù)據(jù)塊。
[0018] 第四方面,提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的裝置,應(yīng)用于數(shù)據(jù)節(jié)點(diǎn)中,所 述裝置包括:
[0019] 心跳發(fā)送模塊,用于向管理節(jié)點(diǎn)發(fā)送心跳上報(bào),所述心跳上報(bào)包括所述數(shù)據(jù)節(jié)點(diǎn) 存儲(chǔ)的所有數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識(shí),所述心跳上報(bào)用于使得所述管理節(jié)點(diǎn)根據(jù)所述心跳上報(bào) 確定所述數(shù)據(jù)塊標(biāo)識(shí)到所述數(shù)據(jù)節(jié)點(diǎn)的映射;
[0020] 獲取模塊,用于接收心跳返回,從心跳返回中獲取所述管理節(jié)點(diǎn)發(fā)送的攜帶有數(shù) 據(jù)塊標(biāo)識(shí)的刪除指令;
[0021] 存入模塊,用于將所述數(shù)據(jù)塊標(biāo)識(shí)存入至延遲隊(duì)列中并記錄存入的時(shí)間;
[0022] 刪除模塊,用于在指定條件下刪除所述延遲隊(duì)列中存儲(chǔ)的所述數(shù)據(jù)塊標(biāo)識(shí)所對(duì)應(yīng) 的所述數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)塊。
[0023] 第五方面,提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的裝置,應(yīng)用于管理節(jié)點(diǎn)中,所 述裝置包括:
[0024] 第三接收模塊,用于接收客戶端發(fā)送的用于指示刪除指定文件的文件刪除指令;
[0025] 第四接收模塊,用于接收數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳上報(bào),根據(jù)所述心跳上報(bào)確定所述 數(shù)據(jù)塊標(biāo)識(shí)到所述數(shù)據(jù)節(jié)點(diǎn)的映射,所述心跳上報(bào)包括所述數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)的所有數(shù)據(jù)塊的 數(shù)據(jù)塊標(biāo)識(shí);
[0026] 第二確定模塊,用于對(duì)于每一個(gè)數(shù)據(jù)節(jié)點(diǎn),根據(jù)預(yù)存的文件與數(shù)據(jù)塊標(biāo)識(shí)之間的 對(duì)應(yīng)關(guān)系以及根據(jù)所述心跳上報(bào)確定的所述數(shù)據(jù)塊標(biāo)識(shí)到所述數(shù)據(jù)節(jié)點(diǎn)的映射,確定出存 儲(chǔ)在所述數(shù)據(jù)節(jié)點(diǎn)中屬于所述指定文件的數(shù)據(jù)塊;
[0027] 第二發(fā)送模塊,用于在向所述數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳返回中添加攜帶有所述數(shù)據(jù)塊 的數(shù)據(jù)塊標(biāo)識(shí)的刪除指令,以便所述數(shù)據(jù)節(jié)點(diǎn)接收所述刪除指令;將所述數(shù)據(jù)塊標(biāo)識(shí)存入 至延遲隊(duì)列中;在指定條件下刪除所述延遲隊(duì)列中存儲(chǔ)的所述數(shù)據(jù)塊標(biāo)識(shí)所對(duì)應(yīng)的數(shù)據(jù) 塊。
[0028] 第六方面,提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的裝置,應(yīng)用于客戶端中,所述 裝置包括:
[0029] 第三發(fā)送模塊,用于向管理節(jié)點(diǎn)發(fā)送用于指示刪除指定文件的文件刪除指令,以 便所述管理節(jié)點(diǎn)在接收到所述文件刪除指令之后,對(duì)于每一個(gè)數(shù)據(jù)節(jié)點(diǎn),根據(jù)預(yù)存的文件 與數(shù)據(jù)塊標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系以及根據(jù)數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳上報(bào)確定的數(shù)據(jù)塊標(biāo)識(shí)到數(shù) 據(jù)節(jié)點(diǎn)之間的映射,確定出存儲(chǔ)在所述數(shù)據(jù)節(jié)點(diǎn)中屬于所述指定文件的數(shù)據(jù)塊;在向所述 數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳返回中添加攜帶有所述數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識(shí)的刪除指令,以便所述數(shù) 據(jù)節(jié)點(diǎn)接收所述刪除指令;將所述數(shù)據(jù)塊標(biāo)識(shí)存入至延遲隊(duì)列中;在指定條件下刪除所述 延遲隊(duì)列中存儲(chǔ)的所述數(shù)據(jù)塊標(biāo)識(shí)所對(duì)應(yīng)的數(shù)據(jù)塊。
[0030] 第七方面,提供了一種數(shù)據(jù)節(jié)點(diǎn),所述數(shù)據(jù)節(jié)點(diǎn)包括如第四方面所述的分布式數(shù) 據(jù)倉(cāng)庫(kù)中刪除文件的裝置。
[0031] 第八方面,提供了一種管理節(jié)點(diǎn),所述管理節(jié)點(diǎn)包括第五方面所述的分布式數(shù)據(jù) 倉(cāng)庫(kù)中刪除文件的裝置。
[0032] 第九方面,提供了一種客戶端,所述客戶端包括第六方面所述的分布式數(shù)據(jù)倉(cāng)庫(kù) 中刪除文件的裝置。
[0033] 第十方面,提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的系統(tǒng),所述系統(tǒng)包括客戶端、 管理節(jié)點(diǎn)和至少一個(gè)數(shù)據(jù)節(jié)點(diǎn);
[0034] 所述客戶端包括第六方面所述的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的裝置;
[0035] 所述管理節(jié)點(diǎn)包括第五方面所述的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的裝置;
[0036] 所述數(shù)據(jù)節(jié)點(diǎn)包括第四方面所述的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的裝置。
[0037] 本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:
[0038] 通過(guò)在數(shù)據(jù)節(jié)點(diǎn)中接收管理節(jié)點(diǎn)發(fā)送的攜帶有數(shù)據(jù)塊標(biāo)識(shí)的刪除指令,將所述數(shù) 據(jù)塊標(biāo)識(shí)存入至延遲隊(duì)列中,在指定條件下刪除該延遲隊(duì)列中存儲(chǔ)的數(shù)據(jù)塊標(biāo)識(shí)所對(duì)應(yīng)的 數(shù)據(jù)塊;解決了現(xiàn)有技術(shù)中NameNode中設(shè)置的回收站對(duì)某些情況下的誤刪除操作無(wú)法進(jìn) 行修復(fù),降低了Hadoop系統(tǒng)的數(shù)據(jù)安全性的問(wèn)題;由于數(shù)據(jù)節(jié)點(diǎn)在接收到刪除指令之后, 并沒(méi)有直接刪除指定的數(shù)據(jù)塊,而是延遲了一段時(shí)間,因此在這段時(shí)間,如果用戶發(fā)現(xiàn)進(jìn)行 了誤刪除操作,則可以對(duì)這些數(shù)據(jù)塊進(jìn)行恢復(fù),達(dá)到了可以很大程度上保證了Hadoop系統(tǒng) 中數(shù)據(jù)的安全性的效果。
【附圖說(shuō)明】
[0039] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使 用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于 本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0040] 圖1是本發(fā)明部分實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法所涉及的 實(shí)施環(huán)境的示意圖;
[0041] 圖2是本發(fā)明一個(gè)實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法的流程圖;
[0042] 圖3是本發(fā)明另一個(gè)實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法的流程 圖;
[0043] 圖4A是本發(fā)明再一個(gè)實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法的流程 圖;
[0044] 圖4B是本發(fā)明部分實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法的示意 圖;
[0045] 圖5是本發(fā)明還一個(gè)實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的方法的流程 圖;
[0046] 圖6是本發(fā)明一個(gè)實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的系統(tǒng)的結(jié)構(gòu)示 意圖;
[0047] 圖7是本發(fā)明另一個(gè)實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文件的系統(tǒng)的結(jié)構(gòu) 示意圖。
【具體實(shí)施方式】
[0048] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。
[0049] 請(qǐng)參見(jiàn)圖1所示,其示出了本發(fā)明部分實(shí)施例中提供的分布式數(shù)據(jù)倉(cāng)庫(kù)中刪除文 件的方法所涉及的實(shí)施環(huán)境的示意圖。該實(shí)施環(huán)境即為一個(gè)Hadoop集群,該Hadoop集群 可以包括客戶端102、管理節(jié)點(diǎn)104和至少一個(gè)數(shù)據(jù)節(jié)點(diǎn)106。
[0050] 客戶端102可以向管理節(jié)點(diǎn)104或數(shù)據(jù)節(jié)點(diǎn)106下發(fā)保存、刪除、恢復(fù)文件等相關(guān) 指令。
[0051] 管理節(jié)點(diǎn)104即為Hadoop集群中的NameNode,該NameNode用來(lái)管理文件系統(tǒng) 的命名空間,將文件系統(tǒng)中的所有文件和文件夾的元數(shù)據(jù)保存在一個(gè)文件系統(tǒng)樹(shù)中,這些 元數(shù)據(jù)也會(huì)在硬盤上保存成命名空間鏡像文件FSImage和編輯日志文件EditLog,同時(shí), NameNode通過(guò)塊映射BlocksMAP記錄每個(gè)文件中各個(gè)數(shù)據(jù)塊所在的DataNode的信息,塊映 射是NameNode根據(jù)D