做者 | WenasWeihtml
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。充分利用集羣的威力進行高速運算和存儲。node
Hadoop的框架最核心的設計就是:HDFS1和MapReduce2。HDFS爲海量的數據提供了存儲,而MapReduce則爲海量的數據提供了計算。git
Apache Hadoop軟件庫是一個框架,該框架容許使用簡單的編程模型跨計算機集羣對大型數據集進行分佈式處理。它旨在從單個服務器擴展到數千臺機器,每臺機器都提供本地計算和存儲。庫自己不依賴於硬件來提供高可用性,而是被設計用來檢測和處理應用程序層的故障,所以能夠在計算機集羣的頂部提供高可用性服務,每臺計算機都容易出現故障。github
Hadoop 是一個可以對大量數據進行分佈式處理的軟件框架, 支持C++,Java開發語言,其帶有用Java語言編寫的框架,所以運行在 Linux 生產平臺上是很是理想的。apache
Hadoop 已經不僅是一個大數據框架,它逐漸演化成爲 Hadoop 生態系統。Hadoop 生態系統中涵蓋
了各類各樣的大數據處理技術,包括Hadoop、Storm、Spark、Hive、Zookeeper、Flume、Kafka等一系列技術和框架,已然成爲大數據處理的事實標準。編程
Hadoop的分佈式架構,將大數據處理引擎儘量的靠近存儲數據,對例如像 ETL3 這樣的批處理操做相對合適,由於相似這樣操做的批處理結果能夠直接走向存儲。Hadoop 的 MapReduce 功能實現了將單個任務打碎,並將碎片任務(Map)發送到多個節點上,以後再以單個數據集的形式加載(Reduce)到數據倉庫裏。服務器
hadoop主要的功能就是用來處理大數據:網絡
Hadoop的核心組件分別是:架構
MapReduce 編程模型借鑑了 "分而治之" 的思想,將一個大而複雜的計算問題分解成多個小的計算問題,由多個map()函
數對這些分解後的小問題進行並行計算,輸出中間計算結果,而後由 reduce() 函數對 map() 函數的輸出結果進行進一步合併,得出最終的計算結果。併發
Hadoop分佈式文件系統(HDFS)是指被設計成適合運行在通用硬件(commodity hardware)上的分佈式文件系統。並且是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,很是適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。
HDFS採用Java語言開發,所以任何支持Java的機器均可以部署Namenode或Datanode。
HDFS採用master/slave架構, 即主從模式。一個HDFS集羣是由一個Namenode和必定數目的Datanodes組成。Namenode是一箇中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。集羣中的Datanode通常是一個節點一個,負責管理它所在節點上的存儲。HDFS暴露了文件系統的名字空間,用戶可以以文件的形式在上面存儲數據。從內部看,一個文件其實被分紅一個或多個數據塊,這些塊存儲在一組Datanode上。Namenode執行文件系統的名字空間操做,好比打開、關閉、重命名文件或目錄。它也負責肯定數據塊到具體Datanode節點的映射。Datanode負責處理文件系統客戶端的讀寫請求。在Namenode的統一調度下進行數據塊的建立、刪除和複製。
YARN-資源調度框架是從Hadoop2.0版本開始引入的, 引入以前, MapReduce框架的核心 Job Tracker(做業跟蹤者), JobTracker 須要與集羣中的機器定時通訊 (heartbeat), 須要管理哪些程序應該跑在哪些機器上,須要管理全部 job 失敗、重啓等操做,還須要和數據元數據中心通信,瞭解數據分佈等等, 既當爹又當媽的意思,即既作資源管理又作任務調度/監控。Task Tracker資源劃分過粗放,二大部分工做是能夠高度一致的監控任務。
Job Tracker 存在的問題:
YARN 框架中將 JobTracker 資源分配和做業控制分開,分爲 Resource Manager(RM) 以及 Application Master(AM)。
資源調度管理器最核心是
Yarn的主要組件以下:
Resource Manager:ResourceManager包含兩個主要的組件:定時調用器(Scheduler)以及應用管理器(ApplicationManager)。
Yarn框架做爲一個通用的資源調度和管理模塊,同時支持多種其餘的編程模型,好比最出名的Spark。
Hadoop 的 Common 工做理解起來比較簡單, 就是封裝了一些經常使用的底層工具,供其餘
Hadoop 模塊使用。其主要包括配置工具 Configuration、 遠程過程調用(Remote Procedure
Cal.RPC)、序列化工具和 Hadoop 的抽象文件系統工具 FileSystem 等,爲其餘 Hadoop 模塊的運行提供基本服務,併爲開 發Hadoop 程序提供了必要的 API。
Hadoop 在物理架構上會採用 Master/Slave模式。NameNode 服務器存放集羣的元數據信息,負責整個數據集羣的管理。DataNode 分佈在不一樣的物理機架上,保存具體的數據塊並按期向 NameNode 發送存儲的數據塊信息,以心跳的方式告知 NameNode。客戶端與 Hadoop 交互時,首先要向 NameNode 獲取元數據信息,根據 NameNode 返回的元數據信息,到具體的 DataNode 服務器上獲取數據或寫入數據。
Hadoop 提供了默認的副本存放策略,每一個 DataNode 默認保存了3個副本,其中2個副本會保存在同一個機架的不一樣節點,另外一個副本會保存在不一樣機架的節點上。