HDFS原理綜述篇
概述
HDFS即Hadoop分散式檔案系統,主要用於支援海量資料的分散式儲存管理,適合一次寫,多次讀取資料的應用場景。在HDFS檔案系統中有幾個重要的守護程序協調的執行來提供服務:
- 名稱節點程序
- 輔助名稱節點程序
- 資料節點程序
HDFS也是主從架構的。執行名稱節點程序的伺服器我們稱之為主節點,執行資料節點程序的伺服器稱之為從節點。HDFS向外提供一個統一的檔案系統名稱空間,使用者就像使用一個檔案系統一樣來存取叢集節點上的資料。
儲存方式及策略
儲存方式
HDFS中檔案的儲存方式為塊儲存,即在HDFS檔案系統中,每個檔案被分割為多個數據塊進行儲存,一般典型的資料塊的大小為64MB,也可以將其配置為32MB或者128MB。一個大檔案會被分割為多個數據塊進行儲存,且如果檔案的大小小於一個塊的大小,是不會佔據整個塊空間的。
儲存策略
檔案按照資料塊形式儲存在資料節點上,為了防止節點故障,這些資料是有備份的,預設的備份數量為3.具體的備份策略如下圖所示:
- 第一個block是放置在client所在的節點中,如果client不在叢集範圍內,那麼第一個block儲存的節點是隨機選取的,一般會選擇性的選取那些資源佔用較少的node節點
- 第二個block會放置在與第一個節點不同的機架中,節點node是隨機選取的
- 第三個block與第二個block在同一個機架但是不同的節點node上,節點node隨機選取
這三個資料塊的放置是有一定講究的。
- 為什麼不將這三個資料塊放置在同一個節點上或者同一個機架的不同節點上呢?顯而易見這樣做的話資料的可靠性不高,因為如果節點損壞或者機架故障的話,那麼這部分資料就會丟失。
- 為什麼不講這三個資料塊放置在三個不同的機架上呢?這樣做的話資料抵禦機架故障的能力更強豈不是更好。其實機架故障的概率遠遠低於節點故障的概率,而把資料備份到不同的機架上會導致Hadoop系統寫檔案的效能大幅度下降。
- 折中方案就是就是上述實際採用的備份策略,既保證資料儲存備份的可靠性,也在一定程度上保證了Hadoop系統寫效能的提升。
名稱節點與輔助名稱節點
名稱節點
名稱節點主要功能:
- 管理檔案系統的名稱空間,維護著所有檔案的元資料資訊,這些資訊以兩個檔案形式永久的 儲存在本地磁碟上:名稱空間映象和編輯日誌檔案
- namenode同時也記錄著每個檔案中各個資料塊所在節點的資訊,但並不永久儲存這些資訊,這些資訊會在系統啟動時由資料節點重新建立
- 負責與客戶端互動,管理所有的檔案操作,包括檔案/目錄的開啟,關閉,移動,重新命名等
名稱節點儲存的元資料包括以下幾個方面:
- 檔案/目錄名稱及相對於其父目錄的位置
- 檔案和目錄的所有權及許可權
- 各個資料塊的檔名。所有的資料塊以檔案的形式存放在資料節點的本地檔案系統的目錄中
名稱節點維護的元資料儲存在名稱節點的本地磁碟上,為了能夠快速訪問,一般把元資料載入到記憶體,很大程度上提高了Hadoop系統的操作效能,同時也是Hadoop系統的一個瓶頸(特別對於小檔案儲存)
資料節點 負責儲存實際的檔案資料
輔助名稱節點
下面介紹一下檔案系統映象與編輯日誌
名稱節點上儲存元資料的檔案為fsimage,fsimage檔案是檔案系統元資料的一個永久性檢查點,然而並非每一個寫操作都會更新該檔案,因為fsimage檔案是一個大型檔案(可能為幾個GB),如果頻繁的執行寫操作的話會使得系統執行的極為緩慢,影響效能。而Hadoop系統執行期間任何涉及對元資料修改的操作都儲存在記憶體中,並且被持久化到一個名為edits(編輯日誌)的檔案中。這樣會造成一個問題,edits檔案將會無限增長。當namenode需要重啟的時候,由於需要恢復edits檔案中的各項操作,會使得重啟非常緩慢,為了解決這個問題從而引入了輔助名稱節點。
輔助名稱節點主要為主節點記憶體中的檔案系統元資料建立檢查點,具體步驟如下所示:
- 輔助名稱節點請求名稱節點namenode停止使用edits檔案,暫時將新的寫操作記錄到一個新的檔案,這個新的檔名稱叫做edits.new
- 輔助namenode從namenode獲取fsimage和edits檔案
- 輔助namenode將fsimage檔案載入記憶體,逐一執行edits檔案中的操作,建立新的fsimage檔案
- 輔助namenode將新的fsimage檔案傳送回namenode
- namenode接收新的fsimage,並使用新的fsimage檔案替換舊的fsimage檔案,用步驟1產生的edits.new檔案中的內容替換原edits檔案中的內容
- 更新fstime檔案來記錄檢查點執行的時間
執行完成後,namenode就擁有最新的fsimage檔案和一個較小的edits檔案,可以避免之前說的問題。
上述步驟執行流程圖如下所示:
namenode容錯機制
從上述內容可以看出,在Hadoop1.x系統中很容易發生單點故障,因為如果fsimage檔案和edits檔案資料損壞了,存放在HDFS系統上的所有資料都會丟失,針對這一個問題,採用了兩種機制來對namenode實現容錯:
- 第一種方法就是備份那些組成檔案系統元資料持久狀態的檔案。一般在將持久狀態寫入本地磁碟的同時,再寫入到一個遠端掛載的網路檔案系統(NFS)中。
- 第二個方法是執行一個輔助namenode,過程如上所述,但是其狀態總是滯後於namenode,難免會丟失資料,一般結合NFS上的元資料進行恢復,作為新的namenode
Hadoop2.x實現HDFS的高可用性:
- 引入高可用名稱節點的概念,使用兩個相同的名稱節點,一個處在活動模式,一個處在待機模式,處在活動模式的名稱節點為系統提供服務,處在待機模式的名稱節點需要實時同步活動名稱節點的資料,這樣當活動節點宕機時,可以快速的進行故障切換。
- 兩個名稱節點共享同一個儲存裝置,通過NFS實現,活動節點的任何修改都會記錄到共享儲存裝置的edits日誌檔案中去
相關推薦
HDFS原理綜述篇
概述 HDFS即Hadoop分散式檔案系統,主要用於支援海量資料的分散式儲存管理,適合一次寫,多次讀取資料的應用場景。在HDFS檔案系統中有幾個重要的守護程序協調的執行來提供服務: 名稱節點程序 輔助名稱節點程序 資料節點程序 HDFS也是主從架構的。執
HDFS原理
image 通知 發現 data- 紅顏 不為 保存 隨機選擇 流量 有一個文件FileA,100M大小。Client將FileA寫入到HDFS上。 HDFS按默認配置。 HDFS分布在三個機架上Rack1,Rack2。Rack3。 a. Client將Fi
HDFS原理剖析
gpo body 剖析 bdb x86 ade ref xiv .html 燒m6孟顆掛菜ws刎戳雌換戀榷挪禾岸乓屹27廢儀俅http://blog.sina.com.cn/s/blog_172ce15720102xhzg.html玖sk鹵粱構招yy境媒誌氯市趴徹譖罷迅墜c
Nodejs的運行原理-生態篇
生態圈 返回值 port develop evel 分享 工作 介紹 light 前言 這裏是重點:Nodejs 是由v8 engine,libuv和內置模塊組成,可以將v8 engine和 libuv看成一個庫,兩者是以源碼的方式直接編譯執行node中去的。 這是一個廣
CoreCLR源碼探索(七) JIT的h5牛牛源碼出售工作原理(入門篇)
流程實例 算法和數據結構 www ... ext 結構 cal space net 很多C#的初學h5牛牛源碼出售Q1446595067官網:h5.haozibbs.com者都會有這麽一個疑問, .Net程序代碼是如何被機器加載執行的? 最簡單的解答是, C#會通過編譯器(
大數據之---hadoop偽分布式部署(HDFS)全網終極篇
偽分布式部 hadoop 1、軟件環境RHEL6 jdk-8u45 hadoop-2.8.1.tar.gz ssh xx.xx.xx.xx ip地址 hadoop1 xx.xx.xx.xx ip地址 hadoop2 xx.xx.xx.xx ip地址 hadoop3 xx.xx.xx.xx ip地址 h
網監利器鏡像——原理配置篇
接口 aik ike 所有 num 存儲 網絡設備 指定端口 處理異常 鏡像是指將經過指定端口(鏡像端口)或者指定VLAN(鏡像VLAN)的報文復制一份到另一個指定端口(觀察端口),然後轉發到網絡監控設備,供網絡管理員進行網絡監控與故障管理。 看官們可以通過下面的這張圖了
初識HDFS原理及框架
大量 用法 執行 nod tro lds hba 配置參數 管理數據 目錄 HDFS是什麽 HDFS的優缺點 HDFS的框架 HDFS的讀寫流程 HDFS命令 HDFS參數 1. HDFS是什麽 HDFS(Hadoop Dist
Java操作HDFS(Linux) 學習篇(二)
java操作Linux系統上的HDFS檔案系統 一、首先:在Linux上搭建HDFS偽分散式環境,啟動命令 ------>sh start-all.sh,顯示啟動成功介面如下: 二 、win 上Java開發環境使用的是IDEA ,Java遠端操作H
大資料技術 分散式儲存 HDFS原理
大資料基礎知識 一、什麼是大資料 短時間內快速產生的海量的多種多樣的有價值的資料。 大資料的技術: 1、分散式儲存: 2、分散式計算: 1)分散式批處理: 當資料積累一定的時間後(假設一個月),進行統一的處理。 2)分散式流處理 分散式流處理是一個實時
HDFS叢集優化篇
HDFS叢集優化篇 作者:尹正傑 版權宣告:原創作品,謝絕轉載!否則將追究法律責任。 一.作業系統級別優化 1>.優化
Hadoop生態叢集hdfs原理(轉) 初步掌握HDFS的架構及原理
初步掌握HDFS的架構及原理 原文地址:https://www.cnblogs.com/codeOfLife/p/5375120.html 目錄 HDFS 是做什麼的 H
【綜述篇】鵝廠大劇拉開帷幕,“一條河”、“兩張網”……等等!還有啥?
我是一條河 流經時間與空間 連線永珍與未來 …… 走進猶如梵高畫作般的劇院,開場一部官宣主題片《河流》將騰訊二十年始終未變的“連線力”以及“行萬里、利萬物”的理念展現給世人,這就是此時此刻正在上演的鵝廠大劇——2018騰訊合作伙伴大會! 在南京,我們是觀眾;未來
《在飛Android Kotlin快速入門-apply{}、with{}及原理分析篇3》
hi各位親,這章主要說下開發中常用到apply()、with()。 這幾個方法在Android開發中經常用到的地方是:使用同一個物件的多個方法的時候。可以不用分開寫,全部放到apply{}with{}中。 一:apply{} &
編譯原理--第一篇
編譯原理---第一篇: 1.1編譯器的結構分為兩個部分:分析部分和綜合部分. 分析部分:把源程式分解成為多個組成要素,並在這些要素智商加上語法結構。然後,他使用這個結構來建立該源程式中的一箇中間表示。如果分析部分檢查出源程式沒有按照正確的語法構成,或者語義上不一致,並把資
服務端Http請求Request和response原理解析篇(1)
什麼是servlet? .Sun(oracle)公司制定的一種用來擴充套件Web伺服器功能的元件規範. 元件:在軟體開發行業,符合一定規範,實現部分功能,並且需要部署到容器中才能執行的軟體模組 容器:符合一定規範,提供元件執行環境的一個程式 什麼是HTTP協議? Hype
編譯原理-第二篇
2.詞法分析 詞法分析的目的是什麼呢? 是把一長串的字元分解成一個個的詞素,並且生成(id,2)這種作為語法分析的基礎。 首先是詞法單元,詞素等的定義。 然後是如何輸入。 三是輸入後如何識別。 識別後如何組成中間式子。 1.三個關鍵詞 詞法單元,詞素,模式
人工智慧中卷積神經網路基本原理綜述
人工智慧Artificial Intelligence中卷積神經網路Convolutional Neural Network基本原理綜述人工智慧(Artificial Intelligence,簡稱AI)的Deep Learning(深度學習)通過機器學習,把某一層的輸出ou
Hadoop 之 HDFS原理
HDFS原理概述 HDFS叢集分為兩大角色:NameNode、DataNode (Secondary Namenode) NameNode負責管理整個檔案系統的元資料 DataNode 負責管理使用者的檔案資料塊 檔案會按照固定的大小(blocksize)切成
hadoop學習之路----HDFS原理與基本架構總結(第二講)
第二講主要內容如下1.HDFS特點(也就是HDFS適用什麼場景)2.HDFS缺點(也就是HDFS不適用什麼場景)3.HDFS基本架構4.HDFS工作原理5.下一代HDFS介紹下面主要聊聊其中的各個部分1.HDFS特點(主要出自PPT)主要有以下五點高容錯性 資料自動儲存多個副本