Hadoop回收站是Hadoop文件系統(tǒng)的重要功能,可以恢復(fù)誤刪除的文件和目錄。本文為您介紹Hadoop回收站的使用方法。

背景信息

回收站是Hadoop Shell或部分應(yīng)用(Hive等)對Hadoop FileSystem API在客戶端的封裝,當(dāng)客戶端配置或者服務(wù)端配置打開回收站功能后,Hadoop Shell會調(diào)用FileSystem的rename操作,把待刪除的文件或者目錄移動(dòng)到/user/<username>/.Trash/Current目錄中,否則會調(diào)用FileSystem的delete操作。

以hadoop rm命令為例,Hadoop回收站流程圖如下所示。trash

開啟回收站

如流程圖所示,只需配置fs.trash.interval大于0,就會開啟回收站,在hdfs\oss\oss-hdfs\jfs上執(zhí)行rm時(shí),都會放置到回收站目錄中。

關(guān)閉回收站

一旦關(guān)閉回收站后,執(zhí)行rm便無法再次找回,通常不建議關(guān)閉,如果需要關(guān)閉可以修改fs.trash.interval為0(HDFS需要重啟NameNode組件)。

訪問回收站

默認(rèn)回收站的目錄為/user/<username>/.Trash/Current,如果要訪問對應(yīng)到HDFS或者其他存儲的回收站目錄,可以加上對應(yīng)前綴,例如hdfs://hdfs-cluster/user/<username>/.Trash/Currentoss://bucket/user/<username>/.Trash/Current等。

清理回收站目錄

EMR主要有HDFS、OSS-HDFS、OSS和JindoFS Block模式 (jfs://)四種存儲方式,對應(yīng)的清理規(guī)則如下:
  • HDFS:EMR通常默認(rèn)1440分鐘,即放入1天后會自動(dòng)清理。您可以通過參數(shù)fs.trash.interval修改檢查點(diǎn)被刪除的分鐘數(shù)。
  • OSS-HDFS:服務(wù)端目前固定為7天,即放入7天后會自動(dòng)清理,暫不支持修改。雖然服務(wù)端會自動(dòng)清理回收站過期數(shù)據(jù),但還是建議您定期監(jiān)測和治理回收站,避免因?yàn)槲粗驕魯?shù)據(jù)占用存儲空間。
  • OSS:不支持自動(dòng)清理,可以通過配置OSS所使用的回收站目錄的生命周期來輔助清理回收站,關(guān)于如何設(shè)置OSS生命周期,請參見基于最后一次修改時(shí)間的生命周期規(guī)則
  • JindoFS Block 模式:不支持自動(dòng)清理,需要手動(dòng)清理。