hadoop學習筆記(二) HDFS

2021-09-29 04:57:10 字數 2986 閱讀 9798

定義: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 它維護著整個檔案系統的檔案資料...