定義:hdfs(hadoop distributed file system),它是乙個檔案系統,用於儲存檔案,通過目錄樹來定位檔案,它是分布式的,由很多伺服器聯合起來實現其功能。
場景:適合一次寫入,多次讀出的場景,且不支援檔案的修改,適合用來做資料分析,不適合做網盤應用。
優點:1. 高容錯性(資料儲存多個副本,某個副本丟失後,可自動恢復),2. 適合處理大資料,3. 可構建在廉價的機器上,通過多副本,提高可靠性。
缺點:1. 不適合做低延時資料訪問。2. 無法高效的對大量小檔案進行儲存。3. 不支援併發寫入和檔案的隨機修改。
1.1 hdfs寫入流程
1)客戶端通過distributed filesystem模組向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。
2)namenode返回是否可以上傳。
3)客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。
4)namenode返回3個datanode節點,分別為dn1、dn2、dn3。
5)客戶端通過fsdataoutputstream模組請求dn1上傳資料,dn1收到請求會繼續呼叫dn2,然後dn2呼叫dn3,將這個通訊管道建立完成。
6)dn1、dn2、dn3逐級應答客戶端。
7)客戶端開始往dn1上傳第乙個block(先從磁碟讀取資料放到乙個本地記憶體快取),以packet為單位,dn1收到乙個packet就會傳給dn2,dn2傳給dn3;dn1每傳乙個packet會放入乙個應答佇列等待應答。
8)當乙個block傳輸完成之後,客戶端再次請求namenode上傳第二個block的伺服器。(重複執行3-7步)。
1.2 hdfs讀取流程
1.3 namenode和secondary namenode 工作原理
fsimage檔案:hdfs系統元資料的乙個永久性檢查點,包含hdfs的所有目錄和檔案inode序列化資訊。
edits檔案:存放hdfs檔案系統的所有更新操作的路徑,檔案系統客戶端執行的所有操作首先會被記錄到edits檔案中。
第一階段:namenode啟動
(1)第一次啟動namenode格式化後,建立fsimage和edits檔案。如果不是第一次啟動,直接載入編輯日誌和映象檔案到記憶體。
(2)客戶端對元資料進行增刪改的請求。
(3)namenode記錄操作日誌,更新滾動日誌。
(4)namenode在記憶體中對元資料進行增刪改。
第二階段:secondary namenode工作
(1)secondary namenode詢問namenode是否需要checkpoint。直接帶回namenode是否檢查結果。
(2)secondary namenode請求執行checkpoint。
(3)namenode滾動正在寫的edits日誌。
(4)將滾動前的編輯日誌和映象檔案拷貝到secondary namenode。
(5)secondary namenode載入編輯日誌和映象檔案到記憶體,並合併。
(6)生成新的映象檔案fsimage.chkpoint。
(7)拷貝fsimage.chkpoint到namenode。
(8)namenode將fsimage.chkpoint重新命名成fsimage。
1.4 datanode工作原理
1.5 服役新資料節點
1)為節點配置集群環境
2)啟動datanodesbin/hadoop-daemon.sh start datanode
3)啟動nodemanagersbin/yarn-daemon.sh start nodemanager
1.6 退役舊資料節點
白名單方式:
在namenode的hdfs-site.xml配置檔案中增加dfs.hosts屬性,white.hosts檔案中為主機名稱
dfs.hosts
/opt/module/hadoop-2.7.2/etc/hadoop/white.hosts
重新整理namenode節點
hdfs dfsadmin -refreshnodes
黑名單方式:
在namenode的hdfs-site.xml配置檔案中增加dfs.hosts.exclude屬性,black.hosts檔案中為要移除的主機名稱
dfs.hosts.exclude
/opt/module/hadoop-2.7.2/etc/hadoop/black.hosts
重新整理namenode節點
hdfs dfsadmin -refreshnodes
如果資料不均衡,可以用命令實現集群的再平衡
sbin/start-balancer.sh
1.7 hdfs副本節點擊擇
第乙個副本在client所在節點上,若客戶端在集群外,則隨機選擇乙個
第二個副本和第乙個副本位於相同機架,隨機節點
第三個副本位於不同機架,隨機節點
1.8 hadoop集群常用命令
1. 啟動hadoop集群
sbin/start-dfs.sh
# 開啟hdfs
sbin/start-yarn.sh
# 開啟yarn
2. fs的基本命令同linux類似
hadoop學習筆記(HDFS)
hdfs的設計基礎與目標 1 硬體錯誤是常態,因此需要冗餘。2 為大資料而生,流式讀寫,批量讀取而非隨機讀寫。擅長資料分析而不是事務處理。3 大規模資料集。4 一次寫多次讀邏輯設計,即一旦寫入,只能讀,不能修改。5 程式才用 資料就近 原則分配節點執行。hdfs的可靠性 冗餘副本策略 機架策略 心跳...
Hadoop學習(二) HDFS介紹
隨著資料量越來越大,在乙個作業系統存不下所有的資料,那麼就分配到更多的作業系統管理的磁碟中,但是不方便管理和維護,迫切需要一種系統來管理多台機器上的檔案,這就是分布式檔案管理系統。hdfs只是分布式檔案管理系統中的一種。hadoop分布式檔案系統,主要用來解決海量資料的儲存問題 它是乙個檔案系統,用...
HADOOP學習筆記(一) HDFS
hdfs,它是乙個檔案系統,用於儲存檔案,通過目錄樹來定位檔案 其次,它是分布式的,由很多伺服器聯合起來實現其功能,集群中的伺服器有各自的角色。hdfs的設計適合一次寫入,多次讀出的場景,且不支援檔案的修改。適合用來做資料分析,並不適合用來做網盤應用。namenode 它維護著整個檔案系統的檔案資料...