官术网_书友最值得收藏!

  • 大數據基礎與應用
  • 趙國生 王健 宋一兵主編
  • 3076字
  • 2021-12-15 16:00:28

3.1 HDFS概念

分布式文件系統是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。分布式文件系統的設計基于客戶機/服務器模式。HDFS提供了一個高度容錯性和高吞吐量的海量數據存儲解決方案,是Apache Hadoop Core項目的一部分,也是GFS提出之后出現的另外一種文件系統。它有一定高度的容錯性,而且提供了高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS就是將多臺機器的存儲當作一個文件系統來使用,因為在大數據的情景下,單機的存儲量已經完全不夠用了,所以采取分布式的方法來擴容,解決本地文件系統在文件大小、文件數量、打開文件數等方面的限制問題。

3.1.1 HDFS簡介

HDFS是Hadoop的一個分布式文件系統,被設計成適合運行在通用硬件(Commodity Hardware)上的分布式文件系統。它和現有的分布式文件系統有很多共同點,但同時和其他分布式文件系統的區別也很明顯。HDFS是一個高度容錯性的系統,適合部署在廉價機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,以實現流式讀取文件系統數據的目的。HDFS在最開始是作為Apache Nutch搜索引擎項目基礎架構而開發的。

HDFS(Hadoop Distributed File System)是Hadoop項目的核心子項目,是分布式計算中數據存儲管理的基礎。Hadoop整合了眾多文件系統,在其中有一個綜合性的文件系統抽象,它提供了文件系統實現的各類接口,HDFS只是這個抽象文件系統的一個實例;提供了一個高層的文件系統抽象類org.apache.hadoop.fs.FileSystem,這個抽象類展示了一個分布式文件系統,并有幾個具體實現,如表3-1所示。

表3-1 Hadoop的文件系統

(續)

3.1.2 HDFS相關概念

HDFS采用master/slave架構。一個HDFS集群是由一個NameNode(NN)和一定數目的DataNode(DN)組成。NameNode是一個中心服務器,負責管理文件系統的名字空間(Namespace)以及客戶端對文件的訪問。集群中的DataNode一般是一個節點一個,負責管理它所在節點上的存儲。HDFS暴露了文件系統的名字空間,用戶能夠以文件的形式在上面存儲數據。從內部看,一個文件其實被分成一個或多個數據塊,這些塊存儲在一組DataNode上。NameNode執行文件系統的名字空間操作,比如打開、關閉、重命名文件或目錄,它也負責確定數據塊到具體DataNode節點的映射。DataNode負責處理文件系統客戶端的讀寫請求。在NameNode的統一調度下進行數據塊的創建、刪除和復制。

1.數據塊(Block)

大文件會被分割成多個塊進行存儲,塊大小默認為64MB。每一個塊會在多個DataNode上存儲多份副本,默認是3份。HDFS被設計成支持大文件,適用HDFS的是那些需要處理大規模數據集的應用。這些應用都是只寫入數據一次,但卻讀取一次或多次,并且讀取速度應能滿足流式讀取的需要。HDFS支持文件的“一次寫入、多次讀取”語義。一個典型的數據塊大小是64MB。因而,HDFS中的文件總是按照64MB被切分成不同的塊,每個塊盡可能地存儲于不同的DataNode中。

2.HDFS數據存放策略

分塊存儲+副本存放,副本存儲結構如圖3-1所示。

圖3-1 數據塊多副本存儲結構

3.數據拓撲結構即數據備份

默認存放3份,可以通過修改配置文件hdfs-site.xml修改備份數量,如果本機在集群中,第一份就會存放到本節點即本機上,如果不在集群中,就通過負載均衡存放到一個相應的隨機節點上,第二份存放在同機柜的不同節點上,第三份存放在不同機柜的某個節點上。

4.數據查找

就近原則,先在本節點上查找,再從本機柜上查找,最后再去不同機柜上查找。

5.單點故障

在Hadoop1中,一個集群只有NameNode,一旦NameNode宕機,整個集群就無法使用。

6.RPCRemote-Procedure-Call遠程過程調用

RPC是Hadoop構建的基礎,一種協議通過網絡從遠程計算機程序上請求服務,采用客戶機/服務器客戶機/服務機模式,客戶端發送請求,結果返回給客戶端而不是服務器端,RPC機制如圖3-2所示。

圖3-2 RPC機制

7.安全模式

安全模式是HDFS所處的一種特殊狀態,在這種狀態下,文件系統只接受讀數據請求,而不接受刪除、修改等變更請求。在NameNode主節點啟動時,HDFS首先進入安全模式,DataNode在啟動的時候會向NameNode匯報可用的block等狀態,當整個系統達到安全標準時,HDFS自動離開安全模式。如果HDFS處于安全模式下,則文件block不能進行任何的副本復制操作,因此達到最小的副本數量要求是基于DataNode啟動時的狀態來判定的,啟動時不會再做任何復制(從而達到最小副本數量要求),NameNode啟動時會進入該模式進行檢測,檢查數據塊的完整性,處于該模式下的集群無法對HDFS進行操作,可以手動離開安全模式,操作如下。

而進入安全模式操作是:

進入安全模式整體流程如圖3-3所示。

圖3-3 安全模式流程圖

8.負載均衡

讓DataNode處于均衡狀態,可以調整數據塊、DataNode的工作任務等。例如,現有一個任務要分配給從節點運行,但是有些slave內存比較小,有些內存比較大,又有些slave正在執行別的任務,有些是空閑的,為了讓各個slave既要飽和又要性能最好,就需要調整;再例如,原本有8個子節點,現在擴充了2個子節點,原先的8個子節點都要數據存儲,也有相應的任務需要執行,而后加的2個子節點是空的,此時也需要負載均衡進行重新分配數據的存儲和任務的執行。手動啟動該機制運行,操作如下。

9.機架感知

機架之間的交互用機架感知來進行。機架之間是通過交換機、路由器、光纖等進行通信的,需要通過機架感知來交互。不同機架之間相互訪問網絡耗費較大且延遲也較高,所以理想狀態下要查找數據剛好就在本機上,就不用耗費資源查找了,這就需要通過機架感知。大型Hadoop集群通過機架形式組織,而且同一機架上不同節點間的網絡狀況比不同機架之間的更為理想。

10.心跳機制

1)HDFS是master/slave結構,master包括NameNode和resourcemanager,slave包括DataNode和nodemanager。

2)master啟動時會開啟一個IPC服務,等待slave連接。

3)slave啟動后,會主動連接IPC服務,并且每隔3秒連接一次,這個時間是可以調整的,設置heartbeat,這個每隔一段時間連接一次的機制,稱為心跳機制。slave通過心跳給master匯報自己的信息,master通過心跳下達命令。

4)NameNode通過心跳得知DataNode狀態,resourcemanager通過心跳得知nodemanager狀態。

5)當master長時間沒有收到slave信息時,就認為slave掛掉了。

超長時間計算:默認為630s,而默認的heartbeat.recheck.interval大小為5min,dfs.heartbeat.interval默認的大小為3s。recheck的時間單位為ms,heartbeat的時間單位為s。計算公式為2×recheck+10×heartbeat。

11.HAHigh Availablity高可用性機制

Hadoop2.x版本中用于解決NameNode的單點故障問題。通過配置active/standby兩個NameNode解決熱備份問題。active(動作)NN對外提供服務,standby(備用)NN只做備份,active NN將數據寫入共享存儲系統(NFS-NetWorkSystem、QJM、BooKeeper等)中,而standby NN負責監聽,一旦有新數據寫入,standby NN會讀取這些數據寫入自己的內存,保證和active NN保持同步,當active NN發生故障,standby NN可以立即頂替。每個節點上都有一個ZooKeeper。DN不斷向active NN和standby NN發送心跳,ZooKeeper會檢測兩個NN,active NN和standby NN通過共享存儲系統保持一致,當ZooKeeper監測到active NN出現故障時,會立即通過故障轉移控制器切換standby NN為激活狀態,HA機制的示意圖如圖3-4所示。

圖3-4 HA機制

注意:SecondaryNameNode不是HA,只是階段性合并edits和fsimage,用以縮短NN啟動的時間,NN失效時SecondaryNN不能立即提供服務,而且也不能保證數據和NN的一致性。

12.Federation機制

Federation機制也是用來解決NN的單點故障的,但是并非是最佳方案。Federation機制是指集群中存在多個NN,各NN分別管理一部分命名空間,但共享DN的存儲資源,各NN負責不同元數據的存儲,隔離性較好,當NN啟動時會把所有元數據信息加載到內存中,對裝有NN的機器內存壓力比較大,Federation機制提供了多個NN來存儲元數據,但并不能根本上解決單點故障的問題,因為多個NN的其中一個宕機,元數據信息還是會丟失,這就意味著需要為每個NN部署一個備份NN應對宕機的問題,Federation機制如圖3-5所示。

13.QJMQurom Journal Manager共享存儲系統

QJM管理的節點為JournalNode(日志節點),NameNode往這些JournalNode上讀/寫editlog信息。在每次的寫操作過程中,這些信息會發送到所有的JournalNode中,關鍵的一點是,它并不需要所有節點成功地回復信息,只需要多數以上(這里指半數以上)的成功信息即可。

14.JournalNode

QJM存儲段進程,提供日志讀寫、存儲、修復等服務。

圖3-5 Federation機制

例3-1如果heartbeat.recheck.interval設置為5000ms),dfs.heartbeat.interval設置為3s默認),則總的超時時間為多少

根據公式2?rechek+10?heartbet得總的超時時間為40s。

主站蜘蛛池模板: 蕉岭县| 葫芦岛市| 延边| 武威市| 新宁县| 定边县| 富源县| 洛川县| 佛教| 萨迦县| 海晏县| 宜君县| 双桥区| 赣州市| 姚安县| 错那县| 东乌珠穆沁旗| 将乐县| 射洪县| 和硕县| 土默特左旗| 安庆市| 大同市| 佛学| 邵阳市| 宾阳县| 新宁县| 合川市| 肃北| 安泽县| 广丰县| 仁布县| 乐安县| 文成县| 长宁区| 平江县| 沐川县| 天津市| 虹口区| 乃东县| 迁西县|