Hadoop-離線批處理技術

Hadoop-離線批處理技術

Hadoop-LOGO

做者 | WenasWeihtml

一 Hadoop

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。充分利用集羣的威力進行高速運算和存儲。node

Hadoop的框架最核心的設計就是:HDFS1和MapReduce2。HDFS爲海量的數據提供了存儲,而MapReduce則爲海量的數據提供了計算。git

Apache Hadoop軟件庫是一個框架,該框架容許使用簡單的編程模型跨計算機集羣對大型數據集進行分佈式處理。它旨在從單個服務器擴展到數千臺機器,每臺機器都提供本地計算和存儲。庫自己不依賴於硬件來提供高可用性,而是被設計用來檢測和處理應用程序層的故障,所以能夠在計算機集羣的頂部提供高可用性服務,每臺計算機都容易出現故障。github

二 Hadoop特色

Hadoop 是一個可以對大量數據進行分佈式處理的軟件框架, 支持C++,Java開發語言,其帶有用Java語言編寫的框架,所以運行在 Linux 生產平臺上是很是理想的。apache

2.1 Hadoop的優勢

  • 1.高可靠性: Hadoop按位存儲和處理數據的能力值得人們信賴, 假設計算元素和存儲會失敗,它維護的多個工做數據副本,確保可以針對失敗的節點從新分佈處理。
  • 2.高擴展性: Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇能夠方便地擴展到數以千計的節點中。
  • 3.高效性: Hadoop可以在節點之間動態地移動數據,並保證各個節點的動態平衡,所以處理速度很是快,且並行的方式工做,經過並行處理加快處理速度。
  • 4.高容錯性: Hadoop可以自動保存數據的多個副本,而且可以自動將失敗的任務從新分配。
  • 5.低成本:與一體機、商用數據倉庫以及其餘的數據集市相比,hadoop是開源的,項目的軟件成本所以會大大下降。

2.2 Hadoop的缺點

  • 一、不能作到低延遲: 高數據吞吐量作了優化,犧牲了獲取數據的延遲。
  • 二、不適合大量的小文件存儲。
  • 三、文件修改效率低: 不支持任意修改文件和不支持多人同時進行寫操做, HDFS 適合一次寫入,屢次讀取的場景。

三 Hadoop的意義

Hadoop 已經不僅是一個大數據框架,它逐漸演化成爲 Hadoop 生態系統。Hadoop 生態系統中涵蓋
了各類各樣的大數據處理技術,包括Hadoop、Storm、Spark、Hive、Zookeeper、Flume、Kafka等一系列技術和框架,已然成爲大數據處理的事實標準。編程

Hadoop的分佈式架構,將大數據處理引擎儘量的靠近存儲數據,對例如像 ETL3 這樣的批處理操做相對合適,由於相似這樣操做的批處理結果能夠直接走向存儲。Hadoop 的 MapReduce 功能實現了將單個任務打碎,並將碎片任務(Map)發送到多個節點上,以後再以單個數據集的形式加載(Reduce)到數據倉庫裏。服務器

hadoop主要的功能就是用來處理大數據:網絡

  • 首先,大數據能夠對顧客羣體細分而後對每一個羣體量體裁衣般的採起獨特的行動。
  • 第二點,運用大數據模擬實境,發掘新的需求和提升投入的回報率。如今愈來愈多的產品中都裝有傳感器,汽車和智能手機的普及使得可收集數據呈現爆炸性增加。
  • 第三點,提升大數據成果在各相關部門的分享程度,提升整個管理鏈條和產業鏈條的投入回報率。大數據能力強的部門能夠經過雲計算、互聯網和內部搜索引擎把大數據成果和大數據能力比較薄弱的部門分享,幫助他們利用大數據創造商業價值。
  • 第四點,進行商業模式產品和服務的創新。大數據技術使公司能夠增強已有的產品和服務,創造新的產品和服務,甚至打造出全新的商業模式。

四 Hadoop的總體架構

4.1 Hadoop的核心組件

Hadoop的核心組件分別是:架構

  • MapReduce: 分佈式計算框架
  • HDFS:hadoop的數據存儲工具
  • YARN4:Hadoop 的資源管理器
  • Common 工具: 封裝的一些經常使用底層工具

Hadoop組件

(1) MapReduce-分佈式計算框架

MapReduce 編程模型借鑑了 "分而治之" 的思想,將一個大而複雜的計算問題分解成多個小的計算問題,由多個map()函
數對這些分解後的小問題進行並行計算,輸出中間計算結果,而後由 reduce() 函數對 map() 函數的輸出結果進行進一步合併,得出最終的計算結果。併發

MapReduce-簡單模型

(2) HDFS-數據存儲工具

Hadoop分佈式文件系統(HDFS)是指被設計成適合運行在通用硬件(commodity hardware)上的分佈式文件系統。並且是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,很是適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。

HDFS採用Java語言開發,所以任何支持Java的機器均可以部署Namenode或Datanode。

HDFS 架構

HDFS採用master/slave架構, 即主從模式。一個HDFS集羣是由一個Namenode和必定數目的Datanodes組成。Namenode是一箇中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。集羣中的Datanode通常是一個節點一個,負責管理它所在節點上的存儲。HDFS暴露了文件系統的名字空間,用戶可以以文件的形式在上面存儲數據。從內部看,一個文件其實被分紅一個或多個數據塊,這些塊存儲在一組Datanode上。Namenode執行文件系統的名字空間操做,好比打開、關閉、重命名文件或目錄。它也負責肯定數據塊到具體Datanode節點的映射。Datanode負責處理文件系統客戶端的讀寫請求。在Namenode的統一調度下進行數據塊的建立、刪除和複製。

(3) YARN-資源管理器

YARN-資源調度框架是從Hadoop2.0版本開始引入的, 引入以前, MapReduce框架的核心 Job Tracker(做業跟蹤者), JobTracker 須要與集羣中的機器定時通訊 (heartbeat), 須要管理哪些程序應該跑在哪些機器上,須要管理全部 job 失敗、重啓等操做,還須要和數據元數據中心通信,瞭解數據分佈等等, 既當爹又當媽的意思,即既作資源管理又作任務調度/監控。Task Tracker資源劃分過粗放,二大部分工做是能夠高度一致的監控任務。

Job Tracker 存在的問題:

  • 單點故障: 依舊是單點故障問題,若是JobTracker掛掉了會致使MapReduce做業沒法執行
  • 資源浪費: JobTracker完成了太多的任務,形成了過多的資源消耗,當map-reduce job很是多的時候,會形成很大的內存開銷,潛在來講,也增長了JobTracker失效的風險,這也是業界廣泛總結出老Hadoop的Map-Reduce只能支持4000節點主機的上限
  • 侷限性: 只支持簡單的MapReduce編程模型, 要使用Hadoop進行編程的話只能使用基礎的MapReduce,而沒法使用諸如 Spark 這些計算模型。而且它也不支持流式計算和實時計算

YARN 框架中將 JobTracker 資源分配和做業控制分開,分爲 Resource Manager(RM) 以及 Application Master(AM)。

資源調度管理器最核心是

  • 管理集羣資源,原則上能夠包括任何硬件資源,當前 YARN 管理粒度是 CPU 和內存——解決物理資源透明化
  • 基於資源狀況和任務進行狀態,調度任務隊列——解決併發任務調度透明化

YARN框架執行流程架構

Yarn的主要組件以下:

  • Resource Manager:ResourceManager包含兩個主要的組件:定時調用器(Scheduler)以及應用管理器(ApplicationManager)。

    • 定時調度器(Scheduler):定時調度器負責嚮應用程序分配資源,它不作監控以及應用程序的狀態跟蹤,而且它不保證會重啓因爲應用程序自己或硬件出錯而執行失敗的應用程序。
    • 應用管理器(ApplicationManager):應用程序管理器負責接收新任務,協調並提供在ApplicationMaster容器失敗時的重啓功能。
  • Application Master:每一個應用程序的ApplicationMaster負責從Scheduler申請資源,以及跟蹤這些資源的使用狀況以及任務進度的監控。
  • Node Manager:NodeManager是ResourceManager在每臺機器的上代理,負責容器的管理,並監控他們的資源使用狀況(cpu,內存,磁盤及網絡等),以及向ResourceManager/Scheduler提供這些資源使用報告。
  • Contain: 爲資源申請和任務運行的容器, 會向 Application Master 上報 MapReduce 狀態。

Yarn框架做爲一個通用的資源調度和管理模塊,同時支持多種其餘的編程模型,好比最出名的Spark。

(4) Common-底層工具

Hadoop 的 Common 工做理解起來比較簡單, 就是封裝了一些經常使用的底層工具,供其餘
Hadoop 模塊使用。其主要包括配置工具 Configuration、 遠程過程調用(Remote Procedure
Cal.RPC)、序列化工具和 Hadoop 的抽象文件系統工具 FileSystem 等,爲其餘 Hadoop 模塊的運行提供基本服務,併爲開 發Hadoop 程序提供了必要的 API。

4.2 Hadoop的物理架構

Hadoop 在物理架構上會採用 Master/Slave模式。NameNode 服務器存放集羣的元數據信息,負責整個數據集羣的管理。DataNode 分佈在不一樣的物理機架上,保存具體的數據塊並按期向 NameNode 發送存儲的數據塊信息,以心跳的方式告知 NameNode。客戶端與 Hadoop 交互時,首先要向 NameNode 獲取元數據信息,根據 NameNode 返回的元數據信息,到具體的 DataNode 服務器上獲取數據或寫入數據。

Hadoop的物理架構

Hadoop 提供了默認的副本存放策略,每一個 DataNode 默認保存了3個副本,其中2個副本會保存在同一個機架的不一樣節點,另外一個副本會保存在不一樣機架的節點上。

參考文檔:

  1. HDFS: Hadoop 分佈式文件系統, Hadoop Distributed File System, 簡稱HDFS
  2. MapReduce: 一種編程模型,用於大規模數據集的並行運算, 主要思想: "Map(映射)"和"Reduce(歸約)"
  3. ETL: 數據倉庫技術, Extract-Transform-Load, 用來描述將數據歷來源端通過抽取(extract)、轉換(transform)、加載(load)至目的端的過程
  4. YARN: 另外一種資源協調者, Yet Another Resource Negotiator
相關文章
相關標籤/搜索