一、HDFS 架構、啓動過程

Hadoop Distributed File System

  • 易於拓展的分佈式文件系統
  • 運行在大量普通廉價機器上,提供容錯機制
  • 爲大量用戶提供性能不錯的文件存取服務

NameNode

  • Namenode是一箇中心服務器,==單一節點==(簡化系統的設計和實現),==負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問==。
  • 文件操做,==NameNode負責文件元數據的操做,DataNode負責處理文件內容的讀寫請求,跟文件內容相關的數據流不通過NameNode==,只會詢問他跟哪一個DataNode聯繫,不然NameNode會成爲系統的瓶頸。
  • 副本存放在那些DataNode上是由NameNode控制的,根據全局狀況做出塊放置決定,==讀取文件時NameNode儘可能讓用戶先讀取最近的副本==,下降帶塊消耗和讀取時延。
  • ==NameNode全權管理數據塊的賦值==,它週期性地從集羣中的==每一個DataNode接收心跳信號和塊狀態報告(Blockreport)==。接手到心跳信號意味着該DataNode節點工做正常。塊狀態報告包含了一個該==DataNode上全部數據塊==的列表。

DataNode

  • 一個==數據塊在DataNode以文件存儲在磁盤上==,包括兩個文件,一個是數據自己,一個是==元數據包括數據塊的長度,塊數據的校驗和,以及時間戳==。
  • DataNode啓動後向NameNode註冊,經過後,週期性(1小時)的向NameNode上報全部的塊信息。
  • 心跳是每3秒一次,心跳返回結果帶有NameNode給該DataNode的命令,如複製塊數據到另外一臺機器,或者刪除某個數據塊。若是超過10分鐘沒有收到某個DataNode的心跳,則認爲該節點不可用。
  • 集羣運行中能夠安全加入和退出一些機器。

文件

  • ==文件切分紅塊==(默認128M),以塊爲單位,==每一個塊有多個副本存儲在不一樣的機器上==,副本數可在文件生成時指定(默認3)。
  • NameNode是主節點,==存儲文件的元數據==如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件權限),以及每一個文件的快列表以及塊所在的DataNode等待。
  • DataNode在本地文件==系統存儲文件塊數據==,以及==塊數據的校驗和==。
  • ==能夠建立、刪除、移動或重命名文件,當文件建立、寫入和關閉以後不能修改文件內容==。

HDFS Architecture

image

Data Replication

image

副本放置策略

For the common case, when the replication factor is three, HDFS’s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack. This policy cuts the inter-rack write traffic which generally improves write performance. The chance of rack failure is far less than that of node failure; this policy does not impact data reliability and availability guarantees. However, it does reduce the aggregate network bandwidth used when reading data since a block is placed in only two unique racks rather than three. With this policy, the replicas of a file do not evenly distribute across the racks. One third of replicas are on one node, two thirds of replicas are on one rack, and the other third are evenly distributed across the remaining racks. This policy improves write performance without compromising data reliability or read performance.node


數據損壞(corruption)處理

  • 當DataNode讀取block的時候,它會計算checksum
  • 若是計算後的checksum,與block建立時值不同,說明該block已經損壞。
  • Client讀取其餘DataNode上的block
  • NameNode標記該塊已經損壞,而後複製block達到預期設置的文件備份數。
  • DataNode在其文件建立後三週驗證其checksum。
相關文章
相關標籤/搜索