硬盤掛載:將Hadoop集群中部分文件掛載到B服務器上(B服務器有足夠的空間去存儲集群服務器上的文件)
應用場景:
由於hdfs數據量過多,導致磁盤可用空間不足,需要刪除過期的數據騰出空間,同時又要將被刪除的數據進行備份處理,以免后期復用
需要刪除的文件的hdfs目錄:bin/hdfs dfs -ls /ibc/datalogs/apachelogs/archive/2018/201801*
刪除的文件需要掛載備份到此目錄下:/home/bigdata/mnt/backup
解釋:
/ibc/datalogs/apachelogs/archive/2018/201801* ---此目錄為將要刪除的hdfs文件目錄
/home/bigdata/mnt/backup --文件掛載的目錄
1.首先在bigdata用戶下,創建目錄mnt/backup -- 即為 /home/bigdata/mnt/backup
2.切換到root用戶,cd /home/bigdata/mnt/backup目錄后,輸入mount 10.10.3.201:/vol/bd_backup .
解釋:
10.10.3.201:/vol/bd_backup --即為B服務器的目錄地址,也就是掛載的服務器地址目錄
3.掛載完之后,輸入命令 df -h
去驗證是否已經掛載成功,以及實時的查看掛載情況,磁盤使用以及剩余量
4.由於使用的是root用戶去掛載的,所以此時該目錄 /home/bigdata/mnt/backup 所屬用戶以及用戶組為root,下一步將mnt目錄的用戶或用戶組權限改為nobody,同時賦予777權限,此時backup目錄的權限依然是root
5.再次切換到bigdata用戶下,切換到hdfs目錄執行命令:
bin/hdfs dfs -get /ibc/datalogs/apachelogs/archive/2018/201801* /home/bigdata/mnt/backup
此時控制台會打印“WARN hdfs.DFSClient: DFSInputStream has been closed already”,說明掛載備份已經開始了
6.這時切換到/home/bigdata/mnt/backup目錄下,可以看到hdfs數據已經加載進來了
7.配置B服務器重啟后,掛載的數據不會丟失,這里是將掛載的路徑寫進去,重啟后自動加載
8.由於我們執行掛載操作的目的是為了清理A服務器上過期的文件,此時過期的文件是hdfs上的2018年1月到6月的日志數據,需要使用命令去刪除:
[bigdata]: bin/hdfs dfs -rm -r /ibc/datalogs/apachelogs/archive/2018/201801*
[bigdata]: bin/hdfs dfs -rm -r /ibc/datalogs/apachelogs/archive/2018/201802*
[bigdata]: bin/hdfs dfs -rm -r /ibc/datalogs/apachelogs/archive/2018/201803*
[bigdata]: bin/hdfs dfs -rm -r /ibc/datalogs/apachelogs/archive/2018/201804*
[bigdata]: bin/hdfs dfs -rm -r /ibc/datalogs/apachelogs/archive/2018/201805*
9.刪除完成后,確認一下文件是否成功從磁盤上刪除,可以去網頁上查看一下節點信息,發現集群中的磁盤空間並沒有增加,實際上我們刪除的文件還存在磁盤上,只是數據存在回收站
10.進入回收站,找到刪除的文件徹底從回收站移除
bin/hdfs dfs -ls /user/bigdata/.Trash/191025092901/ibc/datalogs/apachelogs/archive
11.再次確認磁盤空間是否增加,發現集群中各服務器磁盤空間可用量增到90G左右,但是發現10.10.4.3這台服務器只有11.2G可用,此時還需做一下負載均衡操作
12.hdfs負載均衡,執行命令:sbin/start-balancer.sh -threshold 5
--此處的‘5’代表閾值 5%,意思就是每台機器的磁盤可用量相差在5%以內
13.執行完之后再次查看確認,發現原先只有11G空間的服務器現在已經有70多G可用了
總結:徹底刪除hdfs上的文件,需要注意的是由於集群啟動了回收站功能,由於設置的是7天內自動清理回收站,所以想要立馬清理出內存,需要去回收站清理刪除文件,目錄為/user/bigdata/.Trash