Hadoop生態系統

原文地址:http://blog.csdn.net/u010270403/article/details/51493191html

首先咱們先了解一下Hadoop的起源。而後介紹一些關於Hadoop生態系統中的具體工具的使用方法。如:HDFS、MapReduce、Yarn、Zookeeper、Hive、HBase、Oozie、Mahout、Pig、Flume、Sqoop。web

Hadoop的起源

Doug Cutting是Hadoop之父 ,起初他開創了一個開源軟件Lucene(用Java語言編寫,提供了全文檢索引擎的架構,與Google相似),Lucene後來面臨與Google一樣的錯誤。因而,Doug Cutting學習並模仿Google解決這些問題的辦法,產生了一個Lucene的微縮版Nutch。算法

後來,Doug Cutting等人根據2003-2004年Google公開的部分GFS和Mapreduce思想的細節,利用業餘時間實現了GFS和Mapreduce的機制,從而提升了Nutch的性能。由此Hadoop產生了。shell

Hadoop於2005年秋天做爲Lucene的子項目Nutch的一部分正式引入Apache基金會。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分別被歸入Hadoop的項目中。
關於Hadoop名字的來源,是Doug Cutting兒子的玩具大象。數據庫

Hadoop是什麼

Hadoop是一個開源框架,可編寫和運行分佈式應用處理大規模數據。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分佈式文件系統,MapReduce 是分佈式數據處理模型和執行環境。apache

在一個寬泛而不斷變化的分佈式計算領域,Hadoop憑藉什麼優點能脫穎而出呢?
1. 運行方便:Hadoop是運行在由通常商用機器構成的大型集羣上。Hadoop在雲計算服務層次中屬於PaaS(Platform-as-a- Service):平臺即服務。
2. 健壯性:Hadoop致力於在通常的商用硬件上運行,可以從容的處理相似硬件失效這類的故障。
3. 可擴展性:Hadoop經過增長集羣節點,能夠線性地擴展以處理更大的數據集。
4. 簡單:Hadoop容許用戶快速編寫高效的並行代碼。api

Hadoop的生態系統

  • 2) Nutch,互聯網數據及Nutch搜索引擎應用
  • 3) HDFS,Hadoop的分佈式文件系統
  • 5) MapReduce,分佈式計算框架
  • 6) Flume、Scribe,Chukwa數據收集,收集非結構化數據的工具。
  • 7) Hiho、Sqoop,講關係數據庫中的數據導入HDFS的工具
  • 8) Hive數據倉庫,pig分析數據的工具
  • 10)Oozie做業流調度引擎
  • 11)Hue,Hadoop本身的監控管理工具
  • 12)Avro 數據序列化工具
  • 13)mahout數據挖掘工具
  • 14)Hbase分佈式的面向列的開源數據庫

Hadoop生態系統的特色

  • 源代碼開源
  • 社區活躍、參與者衆多
  • 涉及分佈式存儲和計算的方方面面
  • 已獲得企業界驗證

Hadoop生態系統的各組成部分詳解

上面的圖可能有些亂,下面咱們用一個簡易的Hadoop生態系統圖譜來描述Hadoop生態系統中出現的各類數據工具。架構

Hadoop1.0時代的生態系統以下:負載均衡

Hadoop2.0時代的生態系統以下:框架


Hadoop的核心


由上圖能夠看出Hadoop1.0與Hadoop2.0的區別。Hadoop1.0的核心由HDFS(Hadoop Distributed File System)和MapReduce(分佈式計算框架)構成。而在Hadoop2.0中增長了Yarn(Yet Another Resource Negotiator),來負責集羣資源的統一管理和調度。


HDFS(分佈式文件系統)


HDFS源自於Google發表於2003年10月的GFS論文,也便是說HDFS是GFS的克隆版。

此處只是HDFS的概述,若是想了解HDFS詳情,請查看HDFS詳解這篇文章。

HDFS具備以下特色:

  1. 良好的擴展性
  2. 高容錯性
  3. 適合PB級以上海量數據的存儲

HDFS的基本原理

  • 將文件切分紅等大的數據塊,存儲到多臺機器上
  • 將數據切分、容錯、負載均衡等功能透明化
  • 可將HDFS當作容量巨大、具備高容錯性的磁盤

HDFS的應用場景

  • 海量數據的可靠性存儲
  • 數據歸檔

Yarn(資源管理系統)


Yarn是Hadoop2.0新增的系統,負責集羣的資源管理和調度,使得多種計算框架能夠運行在一個集羣中。

此處只是Yarn的概述,若是想了解Yarn詳情,請查看Yarn詳解這篇文章。

Yarn具備以下特色:

  1. 良好的擴展性、高可用性
  2. 對多種數據類型的應用程序進行統一管理和資源調度
  3. 自帶了多種用戶調度器,適合共享集羣環境


MapReduce(分佈式計算框架)


MapReduce源自於Google發表於2004年12月的MapReduce論文,也就是說,Hadoop MapReduce是Google MapReduce的克隆版。

此處只是MapReduce的概述,若是想了解MapReduce詳情,請查看MapReduce詳解這篇文章。

MapReduce具備以下特色:

  1. 良好的擴展性
  2. 高容錯性
  3. 適合PB級以上海量數據的離線處理


Hive(基於MR的數據倉庫)


Hive由facebook開源,最初用於解決海量結構化的日誌數據統計問題;是一種ETL(Extraction-Transformation-Loading)工具。它也是構建在Hadoop之上的數據倉庫;數據計算使用MR,數據存儲使用HDFS。

Hive定義了一種相似SQL查詢語言的HiveQL查詢語言,除了不支持更新、索引和實物,幾乎SQL的其餘特徵都能支持。它一般用於離線數據處理(採用MapReduce);咱們能夠認爲Hive的HiveQL語言是MapReduce語言的翻譯器,把MapReduce程序簡化爲HiveQL語言。但有些複雜的MapReduce程序是沒法用HiveQL來描述的。

Hive提供shell、JDBC/ODBC、Thrift、Web等接口。

此處只是Hive的概述,若是想了解Hive詳情,請查看Hive詳解這篇文章。

Hive應用場景

  1. 日誌分析:統計一個網站一個時間段內的pv、uv ;好比百度。淘寶等互聯網公司使用hive進行日誌分析
  2. 多維度數據分析
  3. 海量結構化數據離線分析
  4. 低成本進行數據分析(不直接編寫MR)

Pig(數據倉庫)


Pig由yahoo!開源,設計動機是提供一種基於MapReduce的ad-hoc數據分析工具。它一般用於進行離線分析。

Pig是構建在Hadoop之上的數據倉庫,定義了一種相似於SQL的數據流語言–Pig Latin,Pig Latin能夠完成排序、過濾、求和、關聯等操做,能夠支持自定義函數。Pig自動把Pig Latin映射爲MapReduce做業,上傳到集羣運行,減小用戶編寫Java程序的苦惱。

Pig有三種運行方式:Grunt shell、腳本方式、嵌入式。

此處只是Pig的概述,若是想了解Pig詳情,請查看Pig詳解這篇文章。

Pig與Hive的比較


Mahout(數據挖掘庫)


Mahout是基於Hadoop的機器學習和數據挖掘的分佈式計算框架。它實現了三大算法:推薦、聚類、分類。


HBase(分佈式數據庫)


HBase源自Google發表於2006年11月的Bigtable論文。也就是說,HBase是Google Bigtable的克隆版。

HBase可使用shell、web、api等多種方式訪問。它是NoSQL的典型表明產品。

此處只是HBase的概述,若是想了解HBase詳情,請查看HBase詳解這篇文章。

HBase的特色

  1. 高可靠性
  2. 高性能
  3. 面向列
  4. 良好的擴展性

HBase的數據模型

下面簡要介紹一下:

  • Table(表):相似於傳統數據庫中的表
  • Column Family(列簇):Table在水平方向有一個或者多個Column Family組成;一個Column Family 中能夠由任意多個Column組成。
  • Row Key(行健):Table的主鍵;Table中的記錄按照Row Key排序。
  • Timestamp(時間戳):每一行數據均對應一個時間戳;也能夠當作版本號。

Zookeeper(分佈式協做服務)


Zookeeper源自Google發表於2006年11月的Chubby論文,也就是說Zookeeper是Chubby的克隆版。

Zookeeper解決分佈式環境下數據管理問題:

  1. 統一命名
  2. 狀態同步
  3. 集羣管理
  4. 配置同步

Zookeeper的應用

  • HDFS
  • Yarn
  • Storm
  • HBase
  • Flume
  • Dubbo
  • Metaq

Sqoop(數據同步工具)


Sqoop是鏈接Hadoop與傳統數據庫之間的橋樑,它支持多種數據庫,包括MySQL、DB2等;插拔式,用戶能夠根據須要支持新的數據庫。

Sqoop實質上是一個MapReduce程序,充分利用MR並行的特色,充分利用MR的容錯性。

此處只是Sqoop的概述,若是想了解Sqoop詳情,請查看Sqoop詳解這篇文章。


Flume(日誌收集工具)


Flume是Cloudera開源的日誌收集系統。

Flume的特色

  1. 分佈式
  2. 高可靠性
  3. 高容錯性
  4. 易於定製與擴展

Flume OG與Flume NG的對比

  • Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent、collector、master等組件構成。

  • Flume NG:Flume next generation ,即Flume 1.x版本,它由Agent、Client等組件構成。一個Agent包含Source、Channel、Sink和其餘組件。


Oozie(做業流調度系統)


目前計算框架和做業類型種類繁多:如MapReduce、Stream、HQL、Pig等。這些做業之間存在依賴關係,週期性做業,定時執行的做業,做業執行狀態監控與報警等。如何對這些框架和做業進行統一管理和調度?

解決方案有多種:

  1. Linux Crontab
  2. 本身設計調度系統(淘寶等公司)
  3. 直接使用開源系統(Oozie)

Hadoop發行版(開源版)介紹

  • Apache Hadoop

推薦使用2.x.x版本

下載地址:http://hadoop.apache.org/releases.html

  • CDH(Cloudera Distributed Hadoop)

推薦使用CDH5版本

下載地址:http://archive.cloudera.com/cdh5/cdh/5/

詳細安裝步驟查看文章:搭建5個節點的hadoop集羣環境(CDH5)

  • HDP(HortonWorks Data Platform)

推薦使用HDP2.x版本

下載地址:http://zh.hortonworks.com/downloads/#data-platform

最後建議:關於不一樣發行版在架構、部署和使用方法一致,不一樣之處僅在於內部實現。建議選擇公司發行版,好比CDH或者HDP,由於它們通過集成測試,不會面臨版本兼容性問題。

相關文章
相關標籤/搜索