1. 程式人生 > >hdfs1.0和2.0復習

hdfs1.0和2.0復習

sla 系統配置 一致性 slaves 負責 們的 -m 檢測 hadoop2.0

1、Namenode元數據兩種映射:
(1)文件名 -> block數據塊的映射
(2)block數據塊 -> datanode節點地址的映射
細節:(1)是持久化到NN的磁盤的(fsimage<-edits log<-NN內存變化),(2)通過心跳組織起來的(DN->NN)


2、就目前我們的環境(1個master,2個slaves):雖然默認3副本,其實2個副本
3、NN傾向存儲大數據原因:太小的話,block多,內存放不下,太大的話,MR任務執行慢
4、如果沒有SNN,fsimage多久加載一次?只有重啟時加載,如果有了SNN呢?
SNN存在意義?備份,數據恢復
editlog什麽時候會合並到fsimage中?(重啟、定期-後臺服務)
5、為什麽1.0只有一個NN?(在zookeeper誕生前)
6、數據完整性校驗的目的:檢測數據是否損壞
用的什麽校驗方法?(crc32算法產生的校驗和)
存在幾種校驗邏輯?(①client寫校驗和,DN檢驗 ②DatablockScanner後來進程)
7、hdfs可靠性保證有哪些?
(1)心跳:DN-NN
(2)塊報告:hdfs fsck /cb_uis.data -files -blocks -locations
(3)數據完整性:crc32
(4)空間回收:.Trash
(5)副本-數據冗余
(6)SNN
(7)塊照
8、同步和異步的區別?
9、計算框架和任務調度管理部署同一臺機器的好處?本地化,盡量減少數據移動的開銷

HDFS2.0:
1、為什麽HA?解決單點故障問題,1.0裏面有SNN,但不可靠,如何解決?(使用量NN,一個active NN,一個standby NN)
2、既然已經存在DN向兩個NN同時發送數據目的是保證數據一致性,那為什麽還需要JN呢?(同步的數據不同,文件名-block,block-DN)
3、在2.0中,Zookeeper的目的:故障轉移
4、ZKFC在2.0中的作用是對自己負責的NN進行健康檢查,前提是ZKFC會在ZK上註冊一個臨時節點,用於監控,當NN失效,那麽臨時節點消失,整個流程類似於獨占鎖申請的流程
5、JN通常要配置成奇數個(2n+1),如果超過n+1個,數據確定下來
6、JN的功能:讓Standby NN與Active NN保持數據同步
7、JN通常兩種:一種是NFS(需要額外的磁盤空間),另一種QJM(不需要空間)
8、QJM:最低法定人數管理機制,原理:用2n+1太JN機器存儲editlog,每次寫數據操作屬於大多數(>=n+1),返回成功就會認為該次寫成功,保證數據高可用
QJM:本質也是一個小集群
QJM的好處?
(1)不需要額外配置共享存儲,降低了復雜度、維護成本
(2)沒有單點問題
(3)JN不會因為某一個臺機器延遲,影響整體的延遲,也不會因為JN的數量增多而影響性能(NN向JN發送的日誌是並行的)
(4)系統配置
9、NN和JN通常配置不在同一個臺機器
FC和NN是同一臺機器
RM和NN配置一臺機器
NM和DN配置一臺機器
通常工業界,ZK是單獨維護的
10、聯邦的好處:減輕單一NN壓力,將一部分文件轉移到其他NN上管理
如果集群裏某一個目錄比較大,那麽用單獨的NN維護起來
命名空間精簡,橫向擴展,真正突破單臺NN的限制
性能的提升
資源的隔離

每個NN共享所有DN的數據
聯邦的本質:元數據管理和存儲進行解耦,但真實數據的存儲還是共享的

11、快照:數據備份、災備、快速恢復
快照的創建時瞬間完成的,高效!!!
快照本質只記錄block列表和大小,不涉及數據的復制

12、緩存:訪問速度快
集中式緩存:數據緩存在哪個節點?DN->真正緩存的數據,NN->數據path列表
# 創建緩存組
hdfs cacheadmin -addPool cache_badou -mode 0777
# 創建文件
dd if=/dev/zero of=badou.z bs=1M count=20
# 文件上傳
hadoop fs -mkdir /badou_cache
hadoop fs -put badou.z /badou_cache
# 生成緩存
hdfs cacheadmin -addDirective -path /badou_cache/badou.z -pool cache_badou -ttl 1d
# 查詢
hdfs cacheadmin -listPools -stats cache_badou
13、ACL權限控制——高級權限

Yarn:
1、定位:分布式操作系統
2、RM、AM、NM、Container
3、相當於對jobtracker的絕對權力進行肢解
(1)資源管理:RM
(2)作業調度、監控:AM
4、可插拔式的Scheduler,調度器,不關心應用監控和狀態跟蹤,不保證應用失敗和硬件故障
調度的具體內容是什麽?(Container——容器)
5、AM也是一個普通的Container
6、Container是NM啟動的還是AM啟動的?NM來啟動
7、Container資源問題:
hadoop1.0中,資源是slot,mapreduce中,map跑完不會釋放slot,只能等全部任務跑完
hadoop2.0中,資源是Container,map階段跑完可以釋放
通常:每兩個container使用一塊磁盤以及一個cpu核的時候可以使集群資源得到一個較好的利用
每臺機器最多有多少個container?
containers=min(2*cores, 1.8*disks, (機器總內存) / 最小容量 )

最小容量=container最小的容量大小,可配置

有兩類container:cpu和內存,這兩類container會分布在任意節點上,位置通常隨機

Yarn裏面core的概念等同於真實的cpu的核麽?(不一樣,yarn裏的core是虛擬的)
8、容錯:
(1)RM掛了怎麽辦?
(2)NM掛了怎麽辦?
(3)AM掛了怎麽辦?

9、Fair Scheduler

hdfs1.0和2.0復習