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

背景信息

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

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

開啟回收站

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

關閉回收站

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

訪問回收站

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

清理回收站目錄

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