(一)HDFS總體架構
阿新 • • 發佈:2018-12-18
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機制處理