一、Hadoop是什麼
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構
主要解決,海量資料的存儲和海量資料的分析計算問題
廣義上來說,Hadoop通常是指一個更廣泛的概念——Hadoop生态圈

二、Hadoop發展曆史
1)Lucene--Doug Cutting開創的開源軟體,用java書寫代碼,實作與Google類似的全文搜尋功能,它提供了全文檢索引擎的架構,包括完整的查詢引擎和索引引擎
2)2001年年底成為apache基金會的一個子項目辦法;
3)對于大數量的場景,Lucene面對與Google同樣的困難
4)學習和模仿Google解決這些問題的辦法 :微型版Nutch
5)Hadoop的思想之源:Google在大資料方面的三篇論文
6)2003-2004年,Google公開了部分GFS和Mapreduce思想的細節,以此為基礎Doug Cutting等人用了2年業餘時間實作了DFS和Mapreduce機制,使Nutch性能飙升
7)2005 年Hadoop 作為 Lucene的子項目 Nutch的一部分正式引入Apache基金會。2006 年 3 月份,Map-Reduce和Nutch Distributed File System (NDFS) 分别被納入稱為 Hadoop 的項目中
8)名字來源于Doug Cutting兒子的玩具大象
9)Hadoop就此誕生并迅速發展,标志這雲計算時代來臨
三、Hadoop思想
1、思考案例
1T的資料如何實作秒級别的計算?
回答:分布式并行計算,資料向計算移動
2、Hadoop思想之源:Google
主要是面對海量的資料和計算難題
2.1 Google三駕馬車
1)存儲:GFS
核心功能
- 存儲資料-分布式檔案系統
- 并發寫入-順序寫入
不足與缺陷
- 缺乏高可用性
- “至少一次”的弱一緻性
2)計算:MapReduce
核心功能
- 資料本地化的并行計算
- 系統容錯和自動恢複
不足與缺陷
- 計算模型簡單
- 海量硬碟讀寫
3)線上服務:Bigtable
核心功能
- 線上服務
- 高性能随機讀寫
- 自動排程和分片
2.2 開源技術
1)GFS對應HDFS
分布式存儲系統
提供了高可靠性、高擴充性和高吞吐率的資料存儲服務
2)Map-Reduce對應MapReduce
分布式計算架構(計算向資料移動)
具有易于程式設計、高容錯性和高擴充性等優點
3)Bigtable對應HBase
四、Hadoop設計思想
分布式存儲和計算
分而治之:并行計算
計算向資料移動
五、Hadoop三大發行版本
1)Apache、Cloudera、Hortonworks
2)Apache版本最原始(最基礎)的版本,對于入門學習最好
3)Cloudera在大型網際網路企業中用的較多
4)Hortonworks文檔較好
六、Hadoop優勢
高可靠性:Hadoop底層維護多個資料副本,是以即使Hadoop某個計算元素或存儲出現故障,也不會導緻資料的丢失
高擴充性:在叢集間配置設定任務資料,可友善的擴充數以千計的節點
高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任務處理速度
高容錯性:能夠自動将失敗的任務重新配置設定
七、Hadoop組成
1、概述
1.1 Hadoop 1.X組成
- HDFS
- MapReduce
- Common
1.2 Hadoop 2.X和Hadoop 3.X組成
- HDFS
- MapReduce
- YARN
- Common
1.3 HDFS
一個高可靠、高吞吐量的分布式檔案系統
1.4 MapReduce
一個分布式的離線并行計算架構
1.5 YARN
資源排程平台,負責作業排程與叢集資源管理的架構
1.6 Common
Hadoop體系最底層的一個子產品,為Hadoop各子項目提供支援其他子產品的工具子產品,如:配置檔案和日志操作等。
2、HDFS架構概述
NameNode(nn):存儲檔案的中繼資料,如檔案名,檔案目錄結構,檔案屬性(生成時間、副本數、檔案權限),以及每個檔案的塊清單和塊所在的DataNode等。
DataNode(dn):在本地檔案系統存儲檔案塊資料,以及塊資料的校驗和。
Secondary NameNode(2nn):用來監控HDFS狀态的輔助背景程式,每隔一段時間擷取HDFS中繼資料的快照。
3、MapReduce架構概述
MapReduce将計算過程分為兩個階段:Map和Reduce
1)Map階段并行處理輸入資料
2)Reduce階段對Map結果進行彙總
4、YARN架構概述
ResourceManager(RM):處理用戶端請求、啟動/監控ApplicationMaster、監控NodeManager、資源配置設定與排程