我的問題是:hadoop回收站為什么會保留多個過期時間的數據
我們知道hadoop的回收站是在我們刪除數據后能恢復的目錄,但是我們並不希望在回收站保存太久的數據,我們可以使用如下參數進行配置。
在core-site.xml中配置如下參數
<property>
<name>fs.trash.interval</name>
<value>5</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>5</value>
</property>
參數介紹:
fs.trash.interval=0
以分鍾為單位的垃圾回收時間,垃圾站中數據超過此時間,會被刪除。如果是0,垃圾回收機制關閉。
可以配置在服務器端和客戶端。
如果在服務器端配置trash無效,會檢查客戶端配置。如果服務器端配置有效,客戶端配置會忽略。
建議開啟,建議4320(3天)
垃圾回收站,如有同名文件被刪除,會給文件順序編號,例如:a.txt,a.txt(1)
fs.trash.checkpoint.interval=0
以分鍾為單位的垃圾回收檢查間隔。應該小於或等於fs.trash.interval。如果是0,值等同於fs.trash.interval。每次檢查器運行,會創建新的檢查點。
建議設置為60(1小時)
我遇到的情況:
測試環境,只配置了fs.trash.interval參數,參數內容如下
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
checkpoint並沒有配置,那檢測點應該是按天來檢測,我們可以在namenode的日志中看到
這樣就會導致我回收站里會存放兩天的數據,現在集群的空間不是很足,不希望保存那么久的數據在回收站里
原因分析:
導致上面的問題所在是因為,日志過期時間為1天,數據監測間隔沒有設置,默認值是跟過期時間一樣也是一天,這樣就是當我日志在晚上18:56刪除的時候,早上檢測點是8點,由於時間沒有過期,所以會保留昨天18:56的數據,然后今天晚上的18:56也會刪除數據,所以最后導致會存兩天的垃圾數據。
應該怎么解決了,可以如下解決:
修改檢測點,調整fs.trash.checkpoint.interval為2小時
<property>
<name>fs.trash.checkpoint.interval</name>
<value>120</value>
</property>
