您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關HDFS體系結構及優缺點是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
HDFS體系結構簡介及優缺點
體系結構簡介
HDFS是一個主/從(Master、Slave)體系結構,從最終用戶的角度來看,它就像傳統的文件系統一樣,可以通過目錄路徑對文件執行CRUD(創建,讀取,修改,刪除)等操作。但由于分布式存儲的性質,HDFS集群擁有一個NameNode和多個DataNode。NameNode管理文件系統的元數據,DataNode存儲實際的數據。客戶端通過同NameNode和DataNode的交互訪問文件系統。客戶端聯系NameNode以獲取文件的元數據,而真正的文件I/O操作是直接和DataNode進行交互的。
NameNode:
NameNode是整個文件系統的管理節點.
作用:
1、負責管理文件系統的命名空間、集群配置信息和存儲塊的復制;
2、維護著整個文件系統的文件目錄樹和文件根目錄的元信息和每個文件對應的數據塊列表;
3、接收用戶的操作請求;
4、管理文件與block之間的關系,block與DataNode之間的關系;
NameNode會將文件系統的Meta-Data存儲在內存中,這些信息主要包括了文件信息、每一個文件對應的文件塊的信息和每一個文件塊在DataNode的信息等。沒有NameNode,文件系統將無法使用。實現上,如果運行NameNode服務的機器毀壞,文件系統上所有的文件將會丟失,因為我們不知道如果根據DataNode的塊來重建文件。因此,對NameNode實現容錯非常重要,Hadoop為此提供了2種機制:
第一種機制:備份哪些組成文件系統元數據持久狀態的文件。Hadoop可以通過配置使NameNode在多個文件系統上保存元數據的持久狀態,這些寫操作是實時同步的,是原子操作,一般的配置是將持久狀態寫入本地磁盤的同時,寫入一個遠程掛載的網絡文件系統(NFS)。
第二種機制:運行一個輔助NameNode,但它不能被用作NameNode.這個輔助NameNode的重要作用是定期通過編輯日志合并命名空間鏡像,以防止編輯日志過大。這個輔助NameNode一般在另一臺單獨的物理計算機上運行,因為它需要占用大量CPU時間與NameNode相同容量的內存來執行合并操作。它會報出合并后的命名空間鏡像的副本,并在NameNode發送故障時啟用,但是,輔助NameNoDE報錯的狀態總數滯后于主節點,所以在主節點全部失效時,難免會丟失部分數據。在這種情況下,一般把存儲在NFS上的NameNode元數據復制到輔助NameNode并作為新的主NameNode運行。
NameNode中的文件:
fsimage:元數據鏡像文件。存儲某一時段NameNode內存中的元數據信息。
edits:操作日志文件。
fstime:保存最近一次checkpoint的時間。
SecondaryNameNode:
HA(雙機集群系統簡稱)的一個解決方案,并非NameNode的熱備。
作用:
1、輔助NameNode分擔其工作量;
2、定期合并fsimage和edits,并推送給NameNode;
3、減少NameNode啟動時間;
4、在緊急情況下,可輔助恢復NameNode;
執行過程:
從NameNode上下載元數據信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并將其推送到NameNode,同時重置NameNode的edits。
DataNode:
DataNode是提供真實文件數據的存儲服務,是文件存儲的基本單元,它將Block存儲在本地文件系統中,保存了Block的Meta-data,同時周期性地將所有存在的Block信息發送給NameNode。
DataNode也是文件系統的工作節點,它們根據需要存儲并檢索數據庫(受客戶端或NameNode調度),并且定期向NameNode發送它們所在存儲的塊的列表。
塊(Block)是DataNode中最基本的存儲單位。
數據塊的概念:
對于文件內存而言,一個文件的長度大小是size,那么從文件的0偏移開始,按照固定的大小,順序對文件進行劃分并編號,劃分好的每一個塊稱為一個Block。
在HDFS中,HDFS默認Block大小是64MB,不同于普通文件系統的是,HDFS中,如果一個文件小于一個數據塊的大小,并不會占用整個block的存儲空間。
為什么HDFS中的數據塊如此之大?
HDFS的塊比磁盤塊大,其目的是為了最小化尋址開銷。如果塊設置得足夠大,從磁盤傳輸數據的時間可以明顯大于這個快開始位置所需的時間。這樣,傳輸一個由多個塊組成的文件的時間取決于磁盤傳輸速率。
在很多情況下HDFS使用128MB的設置。但是該參數也不會設置得過大,MapReduce中的map任務通常一次處理一個塊中的數據,因此如果任務數太少(少于集群中的節點數據),作業的運行速度就會比較慢。
每個文件有多個復本,HDFS中默認是3個。可在hdfs-site.xml中配置(dfs.replication屬性)。
HDFS中的Master:
在Hadoop中的conf下的Master配置文件中,在此文件中的節點主要的作用:
1、管理HDFS的名稱空間;
2、管理數據塊映射信息;
3、配置復本策略;
4、處理客戶端讀寫請求;
HDFS中的Slave:
配置在Hadoop中conf目錄下的Slaves文件中的節點主要作用:
1、存儲實際的數據塊;
2、執行數據塊讀/寫;
HDFS中的Client:
作用:
1、文件切分與NameNode交互,獲取文件位置信息;
2、與DataNode交互,讀取或者寫入數據;
3、管理HDFS;
4、訪問HDFS;
關于“HDFS體系結構及優缺點是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。