Hadoop學習(一)——HDFS分佈式文件系統

其餘更多java基礎文章:
java基礎學習(目錄)html


學習資料
深刻理解HDFS:Hadoop分佈式文件系統java

HDFS概述

HDFS是Hadoop Distribute File System 的簡稱,也就是Hadoop的一個分佈式文件系統。
分佈式文件系統(DistributedFileSystem) 是指文件系統管理的物理存儲資源不必定直接鏈接在本地節點上,而是經過計算機網絡與節點相連。分佈式文件系統的設計基於客戶機/服務器模式。一個典型的網絡可能包括多個供多用戶訪問的服務器。node

HDFS重要概念

Block數據塊

在HDFS系統中,爲了便於文件的管理和備份,引入分塊概念(block)。這裏的塊是HDFS存儲系統當中的最小單位,HDFS默認定義一個塊的大小在Hadoop1.0中爲64MB,Hadoop2.0中爲128MB。當有文件上傳到HDFS上時,若文件大小大於設置的塊大小,則該文件會被切分存儲爲多個塊,多個塊能夠存放在不一樣的DataNode上。但值得注意的是若是某文件大小沒有到達64/128MB,該文件並不會佔據整個塊空間 。(例如當一個1MB的文件存儲在128MB的塊中,文件只使用1MB的硬盤空間,而不是128MB)。默認副本數爲3。服務器

namenode

namenode是管理文件系統的命名空間。它維護者文件系統樹及整顆樹內全部的文件和目錄。這些信息以兩個文件形式永久保存在本地磁盤上:fsimage命名空間鏡像文件和edits編輯日誌文件。namenode也記錄着每一個文件中各個塊所在的數據節點信息,但它並不永久保存塊的位置信息,由於這些信息會在系統啓動時根據數據節點信息重建。網絡

datanode

datanode是文件系統的工做節點。它們根據須要存儲並檢索數據塊,並按期向namenode發送它們所存儲的塊的列表。架構

secondnamenode

secondnamenode又稱爲輔助namenode。secondnamenode不能被用做namenode,它的重要做用是按期合併namenode編輯日誌與命名空間鏡像,以防編輯日誌過大。可是,secondnamenode保存的狀態老是滯後於主節點namenode。分佈式

Client

客戶端,系統使用者,調用HDFS API操做文件;與NN交互獲取文件元數據;與DN交互進行數據讀寫。oop

hdfs細節

datatnode副本存儲邏輯

hadoop的默認佈局策略是在運行客戶端的節點上放第1個複本(若是客戶端運行在集羣以外,就隨機的選擇一個節點,可是系統會避免挑選那些存儲太滿或太忙的節點)。第2個複本放在與第1個不一樣且是隨機選擇的另外的機架中的節點上。第3個複本與第2個複本放在同一個機架上面,且是隨機選擇的一個節點,其餘的複本放在集羣中隨機選擇的節點上面,可是系統會盡可能避免在相同的機架上面放太多的複本。 佈局

secondnamenode合併namenode日誌過程

hadoop SecondNamenode詳解post

  1. 初始化檢查點
  2. secondnamenode通知Namenode啓用新的edits文件
  3. 從Namenode下載fsimage和edits文件
  4. 調用loadFSImage裝載fsimage
  5. 調用loadFSEdits應用edits日誌
  6. 保存合併後的目錄樹信息到新的image文件中
  7. 將新產生的image上傳到Namenode中,替換原來的image文件
  8. 結束檢查點

hdfs寫入寫出過程

www.cnblogs.com/zhangyinhua…

在學習過程當中,發現這篇文章寫得很全面,這個部分很是重要,但願你們好好閱讀這篇文章。

hdfs的容錯機制

www.cnblogs.com/zhangyinhua…

hadoop HA高可用

對於分佈式文件系統HDFS ,NN是系統的核心節點,存儲了各種元數據信息,並負責管理文件系統的命名空間和客戶端對文件的訪問。可是,在HDFS1.0中,只存在一個NN,一旦發生「單點故障」,就會致使整個系統失效。

HDFS2.0採用了HA(High Availability)架構。在HA集羣中,通常設置兩個NN,其中一個處於「活躍(Active)」狀態,另外一個處於「待命(Standby)」狀態。處於Active狀態的NN負責對外處理全部客戶端的請求,處於Standby狀態的NN做爲熱備份節點,保存了足夠多的元數據,在Active節點發生故障時,當即切換到活躍狀態對外提供服務。

因爲Standby NN是Active NN的「熱備份」,所以Active NN的狀態信息必須實時同步到StandbyNN。針對狀態同步,能夠藉助一個共享存儲系統來實現,如NFS(NetworkFile System)、QJM(Quorum Journal Manager)或者Zookeeper。Active NN將更新數據寫入到共享存儲系統,Standby NN會一直監聽該系統,一旦發現有新的寫入,就當即從公共存儲系統中讀取這些數據並加載到本身內存中,從而保證與Active NN狀態一致。

此外,NN保存了數據塊到實際存儲位置的映射信息,即每一個數據塊是由哪一個DN存儲的。當一個DN加入到集羣中時,它會把本身所包含的數據塊列表給NN,按期經過心跳方式,以確保NN中的塊映射是最新的。所以,爲了實現故障時的快速切換,必須保證StandbyNN中也包含最新的塊映射信息,爲此須要給DN配置Active和Standby兩個NN的地址,把塊的位置和心跳信息同時發送到兩個NN上。爲了防止出現「兩個管家」現象,還要保證在任什麼時候刻都只有一個NN處於Active狀態,須要Zookeeper實現。

www.cnblogs.com/qcloud1001/…

hadoop Federation聯邦機制

雖然HDFS HA解決了「單點故障」問題,可是在系統擴展性、總體性能和隔離性方面仍然存在問題。

  1. 系統擴展性方面,元數據存儲在NN內存中,受內存上限的制約。
  2. 總體性能方面,吞吐量受單個NN的影響。
  3. 隔離性方面,一個程序可能會影響其餘運行的程序,如一個程序消耗過多資源致使其餘程序沒法順利運行。HDFS HA本質上仍是單名稱節點。

HDFS聯邦能夠解決以上三個方面問題。

blog.csdn.net/beidiqiuren…

相關文章
相關標籤/搜索