天天看點

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

Hadoop生态系統

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

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産生了。

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 是分布式資料處理模型和執行環境。

在一個寬泛而不斷變化的分布式計算領域,Hadoop憑借什麼優勢能脫穎而出呢? 

1. 運作友善:Hadoop是運作在由一般商用機器構成的大型叢集上。Hadoop在雲計算服務層次中屬于PaaS(Platform-as-a- Service):平台即服務。 

2. 健壯性:Hadoop緻力于在一般的商用硬體上運作,能夠從容的處理類似硬體失效這類的故障。 

3. 可擴充性:Hadoop通過增加叢集節點,可以線性地擴充以處理更大的資料集。 

4. 簡單:Hadoop允許使用者快速編寫高效的并行代碼。

Hadoop的生态系統

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 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時代的生态系統如下:

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

Hadoop2.0時代的生态系統如下:

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

Hadoop的核心

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 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. 自帶了多種使用者排程器,适合共享叢集環境
Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

MapReduce(分布式計算架構)

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

此處隻是MapReduce的概述,如果想了解MapReduce詳情,請檢視MapReduce詳解這篇文章。

MapReduce具有如下特點:

  1. 适合PB級以上海量資料的離線處理
Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

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)
Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

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的比較

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

Mahout(資料挖掘庫)

Mahout是基于Hadoop的機器學習和資料挖掘的分布式計算架構。它實作了三大算法:推薦、聚類、分類。

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

HBase(分布式資料庫)

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

HBase可以使用shell、web、api等多種方式通路。它是NoSQL的典型代表産品。

此處隻是HBase的概述,如果想了解HBase詳情,請檢視HBase詳解這篇文章。

HBase的特點

  1. 高可靠性
  2. 高性能
  3. 面向列

HBase的資料模型

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

下面簡要介紹一下:

  • 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的容錯性。

Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

此處隻是Sqoop的概述,如果想了解Sqoop詳情,請檢視Sqoop詳解這篇文章。

Flume(日志收集工具)

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

Flume的特點

  1. 分布式
  2. 易于定制與擴充

Flume OG與Flume NG的對比

  • Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent、collector、master等元件構成。
Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹
  • Flume NG:Flume next generation ,即Flume 1.x版本,它由Agent、Client等元件構成。一個Agent包含Source、Channel、Sink和其他元件。
Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹
Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

Oozie(作業流排程系統)

目前計算架構和作業類型種類繁多:如MapReduce、Stream、HQL、Pig等。這些作業之間存在依賴關系,周期性作業,定時執行的作業,作業執行狀态監控與報警等。如何對這些架構和作業進行統一管理和排程?

解決方案有多種:

  1. Linux Crontab
  2. 自己設計排程系統(淘寶等公司)
  3. 直接使用開源系統(Oozie)
Hadoop生态系統Hadoop生态系統 Hadoop的起源 Hadoop是什麼 Hadoop的生态系統 Hadoop生态系統的特點 Hadoop生态系統的各組成部分詳解 Hadoop發行版(開源版)介紹

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,因為它們經過內建測試,不會面臨版本相容性問題。

微信公衆号【黃小斜】大廠程式員,網際網路行業新知,終身學習踐行者。關注後回複「Java」、「Python」、「C++」、「大資料」、「機器學習」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「筆試」、「面試」、「面經」、「計算機基礎」、「LeetCode」 等關鍵字可以擷取對應的免費學習資料。 

                     ​