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機制處理