Hive使用一段時間後Hadoop集羣佔用空間暴增的原因

我使用的是hive。

所有的數據也是在hive中 load data inpath 導入的

導入的數據時保存到虛擬路徑 hdfs:////user/hive/warehouse

以一個表一個文件夾的形式

兩天來一直面對着一個困惑

從hive中load進去的數據只有600G但是頁面顯示的DFS Used卻爲4.2T

這個數據時很不正常的

因爲簡單地算一下 600G dfs.replication = 3 那麼也在1.4T左右的空間。

通過查看 browse the file system 看到三個文件夾

/data   對應於 dfs.data.dir

/system

/user 對應於 hive.metastore.warehouse.dir


問題已經解決,空間容量已經下降到正常值了,可以正常使用運算了。

原因是:

運算過程產生的中間的數據並沒有刪除掉。因爲有些操作產生的結果並沒有放到warehouse中,那麼這部分數據就放到了/data目錄下,系統沒能夠自動刪除這部分數據,所以導致空間上漲很快。

例如;

create table test( ip string );

insert overwrite table test select ip from blog;

這樣結果是保存到hive中的;

但如果直接

select ip from blog;

那麼結果是臨時放在/data目錄下的,但是最終卻沒有釋放。

這個dfs.data.dir 默認目錄本爲/tmp由liunx系統定期自動刪除,路徑被覆蓋爲/data/hadoop-0.19.1/dfsdata後系統就找不到了,所以無法自動刪除。


不可以直接刪除這個目錄,否則會導致全部數據塊丟失。

必須進入hdfs刪除

方法如下

hadoop fs -rmr hdfs:////data/


hive中的操作並不是 實時執行的,會有一定的延遲,所以有時執行操作,並不會立即看的到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章