1. 程式人生 > >(一)HDFS總體架構

(一)HDFS總體架構

1、背景

海量的非結構化資料,幾乎沒法梳理成一個個的欄位,來儲存在關係型資料庫中。所以實際應用中,對於這類資料需要考慮資料如何儲存。資料如何計算的問題。

2、hadoop兩個核心

  • HDFS(以分散式方式來儲存海量資料)
  • MapReduce(以HDFS上的資料為基礎進行計算)

3、大資料特點

  • Volume(大量)
  • Velocity(持續高速增長)
  • Variety(多樣性)
  • value(價值密度低,資料很多但真正有價值的資料少)
  • Veracity(真實性)

4、Hadoop版本

hadoop有第一代和第二代,第二代與第一代最顯著的特點是:第二代比第一代多了一個資源排程框架(yarn)。

hadoop第二代上可以跑多種計算框架,例如spark,MapReduce等。

目前3.0版本已經發布。

5、HDFS架構

如圖:

  • 分散式儲存資料:一個檔案拆分成了四塊,分別儲存在機架1中的四臺伺服器中(datanode
  • 引入namenode:若要獲取檔案,需要知道該檔案拆成哪些塊,分別儲存在哪等。namenode就是專門管理檔案塊資訊。
  • 避免namenode單點故障:有一個SecondaryNameNode服務作為namenode的備用。
  • 引入副本冗餘機制:此處採用三副本機制(磁碟利用率1/3),以黃色塊為例,在機架1的第四臺伺服器上保本一個副本,在機架2的第一臺伺服器上儲存了一個副本,以防機架1全部宕機。

namenode作用:

  • namenode資料在記憶體中,供客戶端快速查詢。為防資料丟失,也會在磁碟儲存映象檔案。
  • 管理整個分散式檔案系統的元資料資訊,一個檔案多大,有幾塊,每個塊多大,分別儲存在那些節點等。
  • 管理整個叢集的狀態,比如所有datanode時間間隔會向namenode發起一個心跳包,namenode時間間隔內沒有收到心跳包,則判定為該datanode宕機。

1.0版本namenode單點故障解決方案:

  • SecondaryNameNode是1.0版本的方案
  • 針對hdfs的操作,會有對應的操作記錄。每時間間隔,SecondaryNameNode會把操作記錄和當前映象檔案合併,生成最新的映象檔案。同時把資料同步給自己
  • SecondaryNameNode不是實時熱備,可能會造成元資料的丟失。

2.0版本namenode單點故障解決方案

  • 考慮到1.0版本的弊端,2.0版本提供實時熱備,解決方案如下圖
  • 但是使用偽分佈模式搭建hadoop,還是會使用SecondaryNameNode機制處理