本文內容還是**自--吳超沉思錄裡的,還是挺佩服吳超老師的o(∩_∩)o~
以下介紹namenode和datanode所扮演的角色:
(1)namenode
namenode的作用是管理檔案目錄結構,是管理資料節點的。namenode維護兩套資料:一套是檔案目錄與資料塊之間的關係,另一套是資料塊與節點間的關係。前一套是靜態的,是存放在磁碟上的,通過fsimage和edits檔案來維護;後一套資料是動態的,不持久化到磁碟,每當集群啟動的時候,會自動建立這些資訊。
(2)datanode
datanode是hdfs中真正儲存資料的。hdfs中有個資訊叫block(資料塊)。假設檔案大小是100gb,從位元組位置0開始,每(3)部署情況
集群中的乙個專門機器用來執行namenode,集群中的其他機器各執行乙個datanode。(當然,也可以在執行namenode的機器上同時執行datanode,或者乙個機器行執行多個datanode)。
(4)hdfs中的資料存放
1.冗餘備份:
hdfs將每個檔案儲存成一系列的資料塊(block),預設快大小為64mb(可以自定義設定)。為了容錯,檔案的多有資料塊都可以死有副本(預設為3個,這個可以自定義設定,但一般3個是最佳選擇了,個人認為)。當datanode啟動的時候,它會遍歷本地檔案系統,產生乙份hdfs資料塊和本地檔案對應關係的列表,並把這個報告傳送給namenode,這就是報告塊(blockreport),報告塊包含了datanode上所有塊的列表。
2.副本存放:
hdfs集群一般執行在多個機架上,不同機架上機器的通訊需要交換機。通常情況下,副本的存放策略較關鍵,機架內節點之間的頻寬比跨機架之間的頻寬要大,它能影響hdfs的可靠性和效能。hdfs採用一種稱為機架感知(rack-aware)的策略來改進資料的可靠性、可用性和網路頻寬的利用率。一般情況下:hdfs的存放策略是將乙個副本存放在本地機架節點上,乙個副本存放在同乙個機架的另乙個節點上,最後乙個副本存放在不同機架的節點上。這種策略減少了機架間的資料傳輸,提高了寫操作的效率。機架的錯誤遠遠比節點的錯誤少,所以這種策略不會影響到資料的可靠性和可用性。
3.心跳檢測:
namenode周期性地從集群中的每個datanode接受心跳包和塊報告,namenode可以根據這個報告驗證對映和其他檔案系統元資料。燒到心跳包,說明該datanode工作正常。如果datanode不能傳送心跳資訊,namenode會標記最近沒有心跳的datanode為宕機,並不會給他們傳送任何i/o請求。
簡單搞定NameNode和DataNode執行機制
namenode secondary namenode 工作機制 文字總結 1 第一階段 namenode啟動 1 第一次啟動 namenode 格式化後,建立 fsimage 和edits 檔案。如果不是第一次啟動,直接載入編輯日誌和映象檔案到記憶體。2 客戶端對元資料進行增刪改查的請求 3 na...
namenode和datanode執行原理
hdfs集群中有兩類節點 工作節點datanode 管理節點namenode namenode管理檔案系統的命名空間,它維護著檔案系統樹以及該樹所有的檔案和目錄。這些資訊以兩個檔案形式永久儲存在本地磁碟上,分別是命名空間映象檔案和編輯日誌檔案。namenode記錄著每個檔案系統中各個塊所在的資料節點...
NameNode中的Fsimage和Edits解析
在在 opt module hadoop 2.7.2 data tmp dfs name current 目錄下 1.fsimage檔案 hdfs檔案系統元資料的乙個永久性的檢查點,其中包含hdfs檔案系統的所有目錄和檔案idnode的序列化資訊 2.fsimage.md5檔案 是映象檔案的 md5...