Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。具備可靠、高效、可伸縮的特色。node
Hadoop生態圈:數據庫
MapReduce:分佈式計算框架windows
Yarn:集羣資源管理和調度平臺服務器
Hdfs:分佈式文件系統網絡
Hive:數據倉庫數據結構
HBase:實時分佈式數據庫架構
Flume:日誌收集工具框架
Sqoop:數據庫ETL工具jvm
Zookeeper:分佈式協做服務socket
Mahout:數據挖掘庫
Hadoop由4個主要構成部分:
1) 基礎核心:提供基礎的通用的功能,一組分佈式文件系統和通用I/O的組件與接口(序列化、Java RPC和持久化數據結構)
2) HDFS:分佈式存儲,高容錯性適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,適合那些有着超大數據集(large data set)的應用程序,HDFS塊的默認大小64 MB
3) MapReduce:分佈式計算
4) YARN:資源分配(多個任務是排隊執行仍是同時執行)
HDFS由3種主要的節點構成:
1) NameNode :用來存儲數據的存放位置等元數據(不存放數據)(如文件名、文件大小、文件所在目錄、全部者名稱、讀寫執行權限等)
2) DataNode :只用來存儲數據
3) SecondaryNameNode :輔助NameNode運行,將NameNode產生的元數據持久化到磁盤上,與NameNode進行通訊,以便按期地保存HDFS元數據的 快照,若是NameNode發生問題,SecondaryNameNode能夠及時地做爲備用NameNode使用。HDFS目前使用zookeeper來確保僅有一個活動namenode。
HDFS適用於高吞吐量,一次寫入,屢次讀取的應用場景,不適合大量小文件的存儲,低時間延遲,多用戶讀寫操做的場景。
HDFS 文件讀取
1. 首先建立RPC鏈接;
2. 從namenode 中獲取文件數據塊的位置;
3. 客戶端與datanode之間創建socket連接,選擇與客戶端最近的datanode節點;
4. 下載文件的數據塊
HDFS 文件寫入
1. 建立RPC鏈接;
2. 建立文件元數據;
3. 爲文件分配塊;
4. 客戶端與DataNode,DataNode之間創建socket(4,5,6),而且幾者之間socket均創建成功纔算成功,才能進行數據塊的寫入操做;
5. 每一個DataNode接收完某個塊會向NameNode進行報告;
6. 若是一個文件的每一個塊的三個副本中,只要有一個副本報告給NameNode,客戶端發送消息給NameNode確認文件完成;
MapReduce 並行計算框架
主從結構,一個JobTracker和多個TaskTracker
JobTracker:1做業調度2分配任務、監控任務執行進度3監控TaskTracker的狀態
TaskTracker:一、執行任務 二、彙報任務狀態
1) MapReduce是由一個單獨運行在主節點上的JobTacker和運行在每一個集羣從節點上的TaskTracker共同組成的。JobTacker負責調度構成一個做業的全部任務,這些任務分佈在不一樣的從節點上。總結點監控他們的執行狀況,而且從新執行以前失敗的任務;從節點僅負責由主節點指派的任務。
2) MapReduce模型原理是利用一個輸入的key/value對集合來產生一個輸出的key/value隊集合,使用Map和Reduce函數來計算
3) MapReduce將大數據分解爲成百上千小數據集,每一個數據集分別由集羣中的一個節點(通常是一臺計算機)並行處理生成中間結果,而後這些中間結果又由大量的節點合併,造成最終結果。
hadoop集羣三種模式
本地模式(單機模式),僞分佈模式,全分佈式模式
單機模式:沒有守護進程,全部東西運行在jvm上,使用的是本地文件系統, 沒有dfs,使用開發過程當中運行mapreduce程序,是使用最少的一種模式
僞分佈模式:在一臺服務器上模擬集羣安裝環境, 即多個進程運行在一個服務器上;使用與開發和測試環境,全部 守護進程在同一臺機子上
全分佈式模式:N臺主機組成一個Hadoop集羣,Hadoop守護進程運行在每一臺主機上;分佈式模式中,主節點和從節點會分開
網絡鏈接方式
host-only:宿主機(windows)與客戶機(虛擬機中的客戶機)單獨組網,與主機當前的網絡是隔離的
bridge:宿主機和客戶機網絡是鏈接的,在同一個局域網中,能夠相互訪問
NAT(network address translation): 虛擬機不佔用主機所在局域網ip,經過使用主機的NAT功能訪問區域網和互聯網,此種方式虛擬機不用設置靜態ip,只須要使用DHCP功能自動獲取ip便可(絕大多數上網使用此種方式)