hadoop進階---hadoop性能優化(一)---hdfs空間不足的管理優化


Hadoop 空間不足,hive首先就會沒法跑了,進度始終是0%。

將HDFS備份數降低

將默認的備份數3設置為2。 
步驟:CDH–>HDFS–>配置–>搜索dfs.replication–>設置為2 

刪除無用HDFS數據和Hbase表格

主要使用命令hadoop fs -du,hadoop fs -ls,hadoop fs -rm 
空間不足根本的解決辦法自然是清理空間。但是清理空間也要有步驟。 
檢查總體情況

hadoop dfsadmin -report

檢查每個目錄

hdfs dfs -du-h/

刪除表 
先清理數據表,去hive,impala里刪除表 
進入hive shell; 
使用命令

droptable tablename;

清理完表之后,刪除文件 使用命令 hadoop fs -rm -skipTrash filename; hadoop fs -rmr -skipTrash directoryname; 刪除的時候要注意使用-skipTrash選項,否則不會馬上刪除,而是轉到垃圾桶了

刪除本機linux無用文件

使用命令找出大於1G的文件看看哪些是可以刪除的

find /hadoop/dfs1 -size +1000M -execls -lh {} \;

清理Trash回收站

使用命令

hadoop fs -rmr-skipTrash /user/root/.Trash;

或者

hdfs dfs -expunge ;

執行完-expunge命令后,回收站的數據不會立即被清理,而是先打了一個checkpoint。顯示的是一分鍾后清除。 實際驗證,11T的數據需要好幾分鍾….. 和Linux系統的回收站設計一樣,HDFS會為每一個用戶創建一個回收站目錄:/user/用戶名/.Trash/,每一個被用戶通過Shell刪除的文件/目錄,在系統回收站中都一個周期,也就是當系統回收站中的文件/目錄在一段時間之后沒有被用戶回復的話,HDFS就會自動的把這個文件/目錄徹底刪除,之后,用戶就永遠也找不回這個文件/目錄了。在HDFS內部的具體實現就是在NameNode中開啟了一個后台線程Emptier,這個線程專門管理和監控系統回收站下面的所有文件/目錄,對於已經超過生命周期的文件/目錄,這個線程就會自動的刪除它們,不過這個管理的粒度很大。另外,用戶也可以手動清空回收站,清空回收站的操作和刪除普通的文件目錄是一樣的,只不過HDFS會自動檢測這個文件目錄是不是回收站,如果是,HDFS當然不會再把它放入用戶的回收站中了 根據上面的介紹,用戶通過命令行即HDFS的shell命令刪除某個文件,這個文件並沒有立刻從HDFS中刪除。相反,HDFS將這個文件重命名,並轉移到操作用戶的回收站目錄中(如/user/hdfs/.Trash/Current, 其中hdfs是操作的用戶名)。如果用戶的回收站中已經存在了用戶當前刪除的文件/目錄,則HDFS會將這個當前被刪除的文件/目錄重命名,命名規則很簡單就是在這個被刪除的文件/目錄名后面緊跟一個編號(從1開始知道沒有重名為止)。 Balancer重新平衡 集群運行一段時間后各個節點的磁盤使用率可能會產生較大的差異,這時可以用balancer來重新平衡各個節點。 首先調大balancer的帶寬這里設置為50MB。默認的帶寬較小,防止占用太多資源。若需要快速平衡可以將帶寬調為一個較大的值。 管理后台–HDFS—配置–搜索bandwidth 接着啟動balancer。在管理后台中操作,步驟 hdfs-狀態-操作-重新平衡

調整回收站的清理時間

Hadoop回收磁盤空間通過在core-site.xml進行設置實現。 
在xml文檔內添加:

<property> 

<name>fs.trash.interval</name> 

<value>1440</value> 

<description>Number of minutes between trash checkpoints. If zero, the trash feature is disabled. </description> 

</property>

</code>

通過修改value的值來設定回收磁盤空間的時間間隔。如果value是0,默認是關閉此項功能的

 

調整自動清除回收站

HADOOP-HDFS需要有一個Auto-Emptier 線程來自動清除trash, 以釋放HDFS的總使用空間, 該功能可以配置為可選項, 可以在Configuration下增加這兩個參數以供配置.

 

fs.trash.autoemptier.interval 執行空間檢查的時間時間隔, 設置為0時, 禁用該功能, 默認為20 Seconds. 

fs.trash.max.percentused 當已使用空間率大於該值, 執行回收以釋放空間. 默認為0.8f

 

調整kafka的日志時間

步驟:管理后台–>kafka–>配置–>搜索log.retention.hours–>設置為30天

 

調整hbase的TTL時間

設置TTL為2592000,30天

./hbase shellhbase> desc 'ns1:t1'hbase> disable 'ns1:t1'hbase> alter 'ns1:t1', {NAME => 'n1', TTL => '2592000'}, {NAME => 'n2', TTL => '2592000'}hbase> enable 'ns1:t1'

設置成功后,hbase自動將過期數據刪除,進行合並region操作。磁盤空間得以釋放。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM