HDFS的高級特性
安全模式
安全模式是HDFS所處的一種特殊狀態(tài),在這種狀態(tài)下,文件系統(tǒng)只接受讀數(shù)據(jù)請求,而不接受刪除、修改等變更請求。在NameNode主節(jié)點啟動時,HDFS首先進(jìn)入安全模式,DataNode在啟動的時候會向namenode匯報可用的block等狀態(tài),讓NameNode得到塊的位置信息,并對每一個文件對應(yīng)的數(shù)據(jù)塊副本進(jìn)行統(tǒng)計,當(dāng)最小副本條件滿足時HDFS自動離開安全模式。如果HDFS出于安全模式下,則文件block不能進(jìn)行任何的副本復(fù)制操作,如果HDFS出于安全模式下,則文件block不能進(jìn)行任何的副本復(fù)制操作,因此達(dá)到最小的副本數(shù)量要求是基于datanode啟動時的狀態(tài)來判定的,啟動時不會再做任何復(fù)制(從而達(dá)到最小副本數(shù)量要求)
假設(shè)我們設(shè)置的副本數(shù)即(參數(shù)dfs.replication是5),那么在datanode上應(yīng)該有5個副本存在,假設(shè)只存在3個副本那么比例就是3/5=0.6,默認(rèn)的最小的副本率是0.999.因此系統(tǒng)會自動復(fù)制副本到其他的dataNode,使得副本率不小于0.99.
安全模式的相關(guān)命令:
查看當(dāng)前狀態(tài)
hdfs dfsadmin ? -safemode get
進(jìn)入安全模式
hdfs dfsadmin ? -safemode enter
強(qiáng)制離開安全模式
hdfs dfsadmin -safemode ?leave
一直等待直到安全模式結(jié)束
hdfs dfsadmin -safemode wait
Web查看啟動過程 端口50070
回收站
HDFS會為每一個用戶創(chuàng)建一個回收站目錄:/user/用戶名/.Trash/,每一個被用戶通過Shell刪除的文件/目錄,在系統(tǒng)回收站中都一個周期,也就是當(dāng)系統(tǒng)回收站中的文件/目錄在一段時間之后沒有被用戶恢復(fù)的話,HDFS就會自動的把這個文件/目錄徹底刪除,之后,用戶就永遠(yuǎn)也找不回這個文件/目錄了。在HDFS內(nèi)部的具體實現(xiàn)就是在NameNode中開啟了一個后臺線程Emptier,這個線程專門管理和監(jiān)控系統(tǒng)回收站下面的所有文件/目錄,對于已經(jīng)超過生命周期的文件/目錄,這個線程就會自動的刪除它們,不過這個管理的粒度很大。另外,用戶也可以手動清空回收站,清空回收站的操作和刪除普通的文件目錄是一樣的,只不過HDFS會自動檢測這個文件目錄是不是回收站,如果是,HDFS當(dāng)然不會再把它放入用戶的回收站中了。
設(shè)置trashtrash選項
hadoop中的trash選項默認(rèn)關(guān)閉,如果生效,需要更改conf中的core-site.xml
執(zhí)行 Hadoop fs -rm -f /文件路徑,將文件刪除時,文件并不是直接消失在系統(tǒng)中,而是被從當(dāng)前目錄move到了所屬用戶的回收站中。保留時間(1440分鐘=24小時),24小時內(nèi),用戶可以去回收站找到這個文件,并且恢復(fù)它。24小時過后,系統(tǒng)會自動刪除這個文件,于是這個文件徹底被刪除了。
fs.trash.checkpoint.interval則是指的是檢查垃圾回收的檢查間隔,應(yīng)該是小于或者等于fs.trash.checkpoint.。想要恢復(fù)數(shù)據(jù)只需要把數(shù)據(jù)移動到要恢復(fù)的數(shù)據(jù)即可。
快照
Hadoop 2.x HDFS新特性
基于某時間點的數(shù)據(jù)的備份復(fù)制.利用快照,可以針對基本的目錄或者整個文件系統(tǒng),讓HDFS在數(shù)據(jù)損壞時恢復(fù)到過去一個正確的時間點,快照比較常見的應(yīng)用場景書數(shù)據(jù)備份,以防止一些用戶錯誤或者災(zāi)難.
快照功能默認(rèn)禁用,開啟或者禁用快照功能需要針對目錄進(jìn)行操作命令如下
hdfs dfsadmin -allowSnapshot
hdfs dfsadmin -disallowSnapshot
hdfs dfs -createSnapshot
hdfs dfs -deleteSnapshot
hdfs dfs -renameSnapshot
hdfs snapshotDiff
hdfs lsSnapshottableDir ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##查看快錄
開啟快照
[hadoop@datanode1 ~]$ hdfs dfsadmin -allowSnapshot /input
Allowing snaphot on /input succeeded
創(chuàng)建快照
hdfs dfs -createSnapshot /input input_2018-12-19
Created snapshot /input/.snapshot/input_2018-12-19
上傳文件
[hadoop@datanode1 ~]$ hadoop fs -put bigtable /input
創(chuàng)建快照
[hadoop@datanode1 ~]$ hdfs dfs -createSnapshot /input input_2018-12-19_2
Created snapshot /input/.snapshot/input_2018-12-19_2
對比快照
[hadoop@datanode1 ~]$ hdfs snapshotDiff /input input_2018-12-19 input_2018-12-19_2
Difference between snapshot input_2018-12-19 and snapshot input_2018-12-19_2 under directory /input:
M ? ? ? .
+ ? ? ? ./bigtable
Web查看
恢復(fù)數(shù)據(jù)
恢復(fù)數(shù)據(jù)的方法就是拷貝
[hadoop@datanode1 ~]$ hdfs dfs -cp /input/.snapshot/input_2018-12-19 /input
[hadoop@datanode1 ~]$ hdfs dfs -ls /input/input_2018-12-19
Found 2 items
-rw-r--r-- ? 3 hadoop supergroup ? ? ? ? 51 2018-12-19 10:17 /input/input_2018-12-19/test
-rw-r--r-- ? 3 hadoop supergroup ? ? ? ? 12 2018-12-19 10:17 /input/input_2018-12-19/write.txt
配額
setQuota 針對HDFS中的某個目錄設(shè)置文件和目錄數(shù)量之和的最大值
[hadoop@datanode1 ~]$ hdfs dfsadmin -setQuota 5 /input ?# 該目錄下目錄數(shù)之和不超過5
#超過5個情況下put文件
#put: The NameSpace quota (directories and files) of directory /input is exceeded: quota=5 file count=8
setSoaceQuota
[hadoop@datanode1 ~]$ hdfs dfsadmin -setSpaceQuota 134217728 /input #設(shè)置input的存儲空間為128M
清除配額命令
[hadoop@datanode1 ~]$ hdfs dfsadmin -clrQuota /input
[hadoop@datanode1 ~]$ hdfs dfsadmin -clrSpaceQuota /input
聯(lián)邦
Federation即為“聯(lián)邦”,該特性允許一個HDFS集群中存在多個NameNode同時對外提供服務(wù),這些NameNode分管一部分目錄(水平切分),彼此之間相互隔離,但共享底層的DataNode存儲資源。
【單機(jī)namenode的瓶頸大約是在4000臺集群,而后則需要使用聯(lián)邦機(jī)制】
什么是Federation機(jī)制
Federation是指HDFS集群可使用多個獨(dú)立的NameSpace(NameNode節(jié)點管理)來滿足HDFS命名空間的水平擴(kuò)展 ,這些NameNode分別管理一部分?jǐn)?shù)據(jù),且共享所有DataNode的存儲資源。
NameSpace之間在邏輯上是完全相互獨(dú)立的(即任意兩個NameSpace可以有完全相同的文件名)。在物理上可以完全獨(dú)立(每個NameNode節(jié)點管理不同的DataNode)也可以有聯(lián)系(共享存儲節(jié)點DataNode)。一個NameNode節(jié)點只能管理一個Namespace
Federation機(jī)制解決單NameNode存在的以下幾個問題
(1)HDFS集群擴(kuò)展性。每個NameNode分管一部分namespace,相當(dāng)于namenode是一個分布式的。
(2)性能更高效。多個NameNode同時對外提供服務(wù),提供更高的讀寫吞吐率。
(3)良好的隔離性。用戶可根據(jù)需要將不同業(yè)務(wù)數(shù)據(jù)交由不同NameNode管理,這樣不同業(yè)務(wù)之間影響很小。
(4)Federation良好的向后兼容性,已有的單Namenode的部署配置不需要任何改變就可以繼續(xù)工作。
Federation是簡單魯棒的設(shè)計
魯棒性(健壯和強(qiáng)壯):在輸入錯誤、磁盤故障、網(wǎng)絡(luò)過載或有意攻擊情況下,能否不死機(jī)、不崩潰
由于聯(lián)盟中各個Namenode之間是相互獨(dú)立的:Federation整個核心設(shè)計大部分改變是在Datanode、Config和Tools,而Namenode本身的改動非常少,這樣Namenode原先的魯棒性不會受到影響。比分布式的Namenode簡單,雖然擴(kuò)展性比真正的分布式的Namenode要小些,但是可以迅速滿足需求。
另外一個原因是Federation良好的向后兼容性,可以無縫的支持目前單Namenode架構(gòu)中的配置。已有的單Namenode的部署配置不需要任何改變就可以繼續(xù)工作。
Federation不足之處
HDFS Federation并沒有完全解決單點故障問題。雖然namenode/namespace存在多個,但是從單namenode/namespace看,仍然存在單點故障。因此 Federation中每個namenode配置成HA高可用集群,以便主namenode掛掉一下,用于快速恢復(fù)服務(wù)。
HA
通常一個集群只有一個NameNode,所有的元數(shù)據(jù)由唯一的NameNode負(fù)責(zé)管理,如果機(jī)器或者進(jìn)程變得不可用,整個集群都會無法工作。知道NameNode恢復(fù)工作為止。影響集群的可用性,HDFS高可用通過提供同一集群中運(yùn)行兩個NameNode的方法來解決問題,一臺保持活躍(Active)狀態(tài)對外提供服務(wù),一臺處于備用(Standby)狀態(tài),兩個節(jié)點保持?jǐn)?shù)據(jù)同步。為了實時同步兩個NameNode上的元數(shù)據(jù)需要一個共享存儲系統(tǒng),可以是NFS QJM 或者Zookeeper,Active的NameNode將共享數(shù)據(jù)寫入到共享系統(tǒng)中去,而Standby監(jiān)聽該系統(tǒng)與ActiveNameNode基本保持一致因此在一個NameNode不能對外提供服務(wù)的情況下,可以快速故障轉(zhuǎn)移到另外一個NameNode。
Hadoop 大數(shù)據(jù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。