1,hadoop 2.0 產生背景
2,hadoop 2.0 基本構成
3,HDFS 2.0
4 YARN
5 MapReduce On YARN
6 Hadoop 2.0初體驗
7 總結
1,hadoop 2.0產生背景:
兩個概念:
hadoop生態系統:由hadoop,hbase,hive,pig,sqoop,flume,mahout,zookeeper等構成。
hadoop:hadoop只是hadoop生態系統的一個組成部分,由分佈式文件系統hdfs和分佈式計算框架MapReduce組成。hadoop2.0由hdfs,yarn,mr組成
通俗的hadoop是指hadoop生態系統。
hdfs存在的問題:
NameNode單點故障,難以應用於在線場景(不能提供「服務」這樣的長期在線,程序一旦掛掉沒有備用方案)
NameNode壓力過大(全部通訊都經過namenode轉向其餘服務),且內存受限(元數據信息),影響系統擴展性(內存小,hdfs就不能隨意加datanode)。
MapReduce存在的問題:
JobTracker單點故障
JobTracker訪問壓力大,影響系統擴展性
難以支持除Mapreduce以外的計算框架,好比Spark,Storm,Tez(資源調度,和計算在一塊兒的架構很差)等
2 hadoop 2.0基本構成
註解1:MapReduce同時負責資源管理和任務調度,hadoop 2.0將資源管理獨立出來成爲yarn,mr2.0僅僅是運行在yarn上的框架之一。
Hadoop 2.0由HDFS,Mapreduce和Yarn三個分支構成;
HDFS:NN Federation(分目錄管理),HA(多個NameNode)
Mapreduce:運行在yarn上的mr
yarn:資源管理器。
下載地址:http://hadoop.apache.org/releases.html
svn:http://svn.apache.org/repos/asf/hadoop/common/branches/ 這裏只有源代碼,需編譯纔可以使用
3 HDFS2.0
解決單點故障
經過主備NameNode解決
若是主NameNode發生故障,則切換到備NameNode上。
解決內存受限問題,(含併發過大)
水平擴展,支持多個NameNode
每一個NameNode分管一部分目錄;(每一個namenode管理的文件數減小)
全部NameNode共享全部DataNode存儲資源
4 Yarn
Yet Another Resource Negotiator
核心思想:將mrv1中JobTracker的資源管理和任務調度兩個功能分開。分別由ResourceManager和ApplicationMaster進程實現。
ResourceManager:負責整個集羣的資源管理和調度
ApplicationMaster:負責應用程序相關的事務,好比任務調度,任務監控和容錯
Yarn的引入,使得多個計算框架可運行在一個集羣中;
:每一個應用程序對應一個ApplicationMaster
:目前多個計算框架能夠運行在yarn上,好比Mapreduce,spark,storm等
5 Mapreduce on yarn(mrv2)
將Mapreduce做業直接運行在yarn上,而不是由JobTracker和TaskTracker構建在MRv1系統中;
基本功能模塊:
yarn:負責資源管理和調度
MRAppMaster:負責任務切分,任務調度,任務監控和容錯等
MapTask/ReduceTask:任務驅動引擎,與MRv1一致
每一個應用程序對應一個MRAppMaster
單個應用程序運行失敗,不會影響其餘應用程序。
負責應用程序相關的事情,包括將yarn分配的資源二次分配給內部的任務,任務切分,監控容錯等。
HDSF 2.0 HA 架構圖
詳細解釋hdfs 2.0 -ha
1 主備namenode
主namenode對外提供服務,備namenode同步主nn元數據,以待切換
全部datanode同時向兩個namenode彙報數據塊信息
2 兩種切換選擇
手動切換:經過命令實現主備之間的切換,能夠用於hdfs(namenode升級)升級等場合
自動切換:基於zookeeper實現 (下降運維成本)
3 基於zookeeper切換方案:
zookeeper failover controller(簡稱zkfc,之後會常常遇到):監控namenode健康狀態,並向zookeeper註冊namenode
namenode掛掉後,zkfc爲namenode競爭鎖(競爭鎖,zookeeper用語),得到zkfc鎖的namenode變爲active
多種共享存儲系統可供選擇:
NFS
奇數個JournalNode構成集羣
Bookeeper(這個跟Journal差很少)
推薦Journal Node方案:
基本原理,數據同時寫入全部JournalNode,多數寫入成功,則認爲寫成功
通常配置奇數個JournalNode,越多,容錯性越好
好比3個JournalNode,只要兩個寫成功,則數據寫成功,最多容許一個JournalNode掛掉。若是是7臺電腦,最多容許3臺掛掉