大數據概況與 Hadoop 生態圈

前言

 

1、什麼是大數據

大數據
大數據是指無法在一定時間內用常規軟件工具對其內容進行抓取、管理和處理的數據集合。是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。
 

2、大數據的特徵

4V + 1O 特徵

  • Volume(大數據量)
    採集、存儲和計算的數據量大。大數據的起始計量單位至少是 PB 量級的。
  • Variety(類型繁多)
    數據種類和來源多樣化。數據的種類包括結構化數據,半結構化數據,非結構化數據,具體表現爲日誌,音頻,視頻,圖片,地理位置信息等。
  • Value(價值密度低)
    數據價值密度較低,如何從海量的數據中挖掘數據價值,是大數據時代亟需解決的問題。
  • Velocity(速度快、時效高)
    數據增長速度快、處理速度快,時效性要求高。
  • Online(數據在線)
    數據永遠是在線的,是隨時能調用和計算的,這是大數據區別於傳統數據最大的特點。

固有特徵

  • 時效性
    數據在某一時間段內具有對決策有價值的屬性,也就是說,同一信息在不同的時間具有很大的性質上的差異,這個差異就是數據的時效性。信息的時效性決定了決策在哪些時間內有效。

  • 不可變性
    已產生的數據不會改變,大數據的變化可看作是新數據條目的產生,而不是對現有條目的更新。
     

3、分佈式計算比較

大數據時代給以往的技術帶來了新的挑戰,由於傳統的分佈式架構存在弊端:無法實現大數據的計算要求,所以產生了新的分佈式計算架構,基於 Hadoop 集羣的分佈式計算。

傳統分佈式計算 新的分佈式計算 - Hadoop
計算方式 將數據複製到計算節點 在不同數據節點並行計算
可處理數據量 小數據量 大數據量
CPU性能限制 受CPU限制較大 受單臺設備限制小
提升計算能力 提升單臺機器計算能力 擴展低成本服務器集羣

 

一、Hadoop 介紹

 
Hadoop-log

1、Hadoop 是什麼

Hadoop 就是一個開源分佈式系統架構

Hadoop 是由 Java 語言編寫的,在分佈式服務器集羣上存儲海量數據並運行分佈式分析應用的開源框架,其核心是 HDFSMapReduce,主要包括以下三部分:

  • 分佈式文件系統 HDFS —— 用於數據的分佈式存儲和高吞吐量訪問。
  • 分佈式計算框架 MapReduce —— 用於大數據集的並行處理和計算。
  • 分佈式資源管理系統 YARN —— 用於集羣資源管理和作業調度。

Hadoop 是目前處理海量數據的架構首選,它能夠非常快的完成大數據計算的任務,且對硬件要求相對較低,已逐漸發展成爲一個完善的 Hadoop 生態圈。
 

2、Hadoop 能幹什麼

大數據存儲:分佈式存儲

日誌處理:擅長日誌分析

ETL:數據抽取到 Oracle、MYSQL、DB2、mongdb 等主流數據庫

機器學習:Apache Mahout 項目

搜索引擎:Hadoop + lucene 實現

數據挖掘:精準內容推送,個性化廣告推薦

Hadoop是專爲離線和大規模數據分析而設計的,並不適合那種對幾個記錄隨機讀寫的在線事務處理模式
 

3、Hadoop 發展及版本

Hadoop 起源於搜索引擎 Apache Nutch

  • 創始人:Doug Cutting
  • 2004年 - 最初版本實施
  • 2008年 - 成爲Apache頂級項目

Hadoop 發行版本

  • 社區版:Apache Hadoop
    這是最原始版本,所有的發行版都是基於這個版本進行改進的。
  • Cloudera 發行版:CDH
    完全開源,比起 Apache Hadoop,在兼容性、安全性和穩定性上均有所增強。
  • Hortonworks 發行版:HDP
    百分百開源,版本和社區版完全一致,但是集成了開源監控方案。

Hadoop 發展時間線

2003-2004 年,Google 發表了 GFS 和 MapReduce 兩篇論文,受此啓發的 Doug Cutting 等人用 2 年的業餘時間實現了 DFS 和 MapReduce 機制,使 Nutch 性能飆升。

2005 年,Hadoop 作爲 Lucene 的子項目 Nutch 的一部分正式引入 Apache 基金會。

2006 年 2 月,Hadoop 被分離出來,成爲一套完整獨立的軟件,並起名爲 Hadoop 。

2008 年 1 月,Hadoop 成爲 Apache 頂級項目,同年 4 月,Hadoop 打破世界紀錄,成爲最快的 1TB 數據排序系統,在 900 個節點上用時 209 秒。

Hadoop 名字不是一個縮寫,而是一個生造出來的詞。是 Hadoop 之父 Doug Cutting 以兒子的毛絨玩具象命名的。
 

4、Hadoop 特點

1. 高可靠性

多副本機制,容錯高。能自動維護數據的多份複製,並且在任務失敗後能自動地重新部署(redeploy)計算任務。當丟失一個節點時,系統會自動將工作重定向到數據的另一個副本,並在不中斷的情況下繼續處理。

2. 高擴展性

伸縮性強,可以根據需要添加新節點,而不需要更改現有的數據分佈,也不需要更改作業和應用程序。

3. 低成本

Hadoop 可通過普通廉價的機器組成服務器集羣來分發以及處理數據,以至於成本很低,當然這是相對於傳統單機作業而言。

4. 無共享架構

可在不同系統的主機上運行,且不同機器上的不同分塊的數據處理相不干擾。

5. 開源社區活躍

社區活躍、參與者衆多。實際工作中遇到的問題可以在社區得到很好的解決。
 

5、Hadoop VS RDBMS

在許多場景下,Hadoop 能夠被視爲 RDBMS(關係型數據庫管理系統)的一種補充。兩個系統之間的對比如下表所示。Hadoop 很適合那些需要分析(尤其是自主分析)整個數據集的問題,以批處理的方式進行,而 RDBMS 適合於點查詢和更新。Hadoop 適合數據被一次寫入和多次讀取的應用,而 RDBMS 適合持續更新的數據集。

RDBMS HADOOP
格式 寫數據時要求 讀數據時要求
速度 讀數據速度快 寫數據速度快
更新 多次讀寫 一次寫入、多次讀取
數據類型 結構化數據 結構化、半結構化、非架構化
數據大小 GB TB
數據處理 有限的處理能力 強大的處理能力
應用場景 交互式OLAP分析
ACID事務處理
企業業務系統
處理非結構化數據
海量數據存儲和計算

 

二、Hadoop 生態圈

 
Hadoop 自出現以後,得到快速發展,大量與其相關的應用也被開發出來,共同服務於 Hadoop 工程。現在 Hadoop 已經成爲一個龐大的架構系統,只要是與大數據相關的,都會出現 Hadoop 的身影。這些相關組件系統與 Hadoop 一起構成 Hadoop 生態圈,如圖所示。
Hadoop-生態圈

1、核心構成

Hadoop 的核心包括用於分佈式存儲的 HDFS、用於分佈式計算得 MapReduce,以及用於分佈式資源管理的 YARN
 

2、數據查詢分析

Impala: 開源的查詢引擎。與 Hive 相同的元數據,SQL語法,ODBC 驅動程序和用戶接口,可以直接在 HDFS 上提供快速交互式 SQL 查詢。Impala 不再使用緩慢的 Hive + MapReduce 批處理,而是通過與商用並行關係數據庫中類似的分佈式查詢引擎。

Presto:分佈式的查詢引擎,本身並不存儲數據,但是可以接入多種數據源,並且支持跨數據源的級聯查詢。Presto 的查詢速度比 Hive 快 5-10 倍。

Hive:建立在 Hadoop 之上的數據倉庫基礎框架,可以將結構化的數據文件映射爲一張數據庫表,並定義了一種類 SQL 語言(HQL),讓不熟悉 MapReduce 的開發人員也能編寫數據查詢語句來對大數據進行分析統計操作。Hive 的出現極大地降低了大數據技術的學習門檻,同時提高了開發效率。

Pig:基於 Hadoop 的大規模數據分析平臺,它有一套叫做 Pig Latin 的類 SQL 語言,該語言的編譯器會把類 SQL 的數據分析請求轉換成一系列經過優化處理的 MapReduce 運算,處理的對象是 HDFS 上的文件。
 

3、數據遷移

在數據應用中,通常會有不同系統間的數據遷移操作。在 Hadoop 生態圈中,Sqoop 和 Flume 框架可以很好地解決不同系統間的數據收集和傳輸。

Sqoop一款開源的工具,主要用在關係型數據庫、數據倉庫和 Hadoop 之間進行數據遷移。在實際應用中,可以使用 Sqoop 完成關係型數據庫到 HDFS 、Hive 等框架的數據導入導出操作。

Flume:Cloudera 提供的一個高可用、高可靠、分佈式的框架,主要用於分佈式海量日誌數據的高效蒐集、聚合和傳輸。Flume 支持在日誌系統中定製各類數據發送方,用於收集數據,同時 Flume 提供對數據進行簡單處理並寫入各種數據接收方的能力。
 

4、NoSQL

HBase:在 Hadoop 生態圈中,HBase 提供了 NoSQL 數據庫的功能,用於滿足大數據應用中快速隨機訪問大數據量(PB 量級)數據並及時響應用戶的需求。

HBase 是建立在 HDFS 上的面向列的 NoSQL 數據庫,可以對大規模數據進行隨機、實時讀/寫訪問。HBase 具有可伸縮、高可靠、高性能的特點。
 

5、機器學習

目前,機器學習已經發展成爲一個熱門話題,Hadoop 生態圈中提供了 Mahout 庫來完成機器學習功能。

Mahout 提供了一些可擴展的機器學習領域經典算法的實現,目的是幫助開發人員方便快捷地開發智能應用程序。Mahout 是一個機器學習和數據挖掘庫,包括聚類、分類、推薦引擎(協同過濾)等數據挖掘方法,用戶可以通過調用算法包來縮短編程時間。
 

6、協調管理

Ambari:是一種基於 Web 的工具,支持 Apache Hadoop 集羣的供應、管理和監控。Ambari 已支持大多數 Hadoop 組件,包括 HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop 和 Hcatalog 等。

HCatalog:Hadoop 的表存儲管理工具。它將 Hive Metastore 的表格數據公開給其他 Hadoop 應用程序。使得具有不同數據處理工具(Pig,MapReduce)的用戶能夠輕鬆將數據寫入網格。它確保用戶不必擔心數據存儲在何處或以何種格式存儲。

ZooKeeper:在 Hadoop 生態圈中,使用 ZooKeeper 框架來解決分佈式環境下的數據管理問題,比如統一命名、狀態同步和配置同步等。Hadoop 的大多數組件都依賴於 ZooKeeper,比如 HBase 的高可用就是通過 ZooKeeper 來實現的。
 

7、任務調度

大數據實際應用中,通常會遇到多個作業協同完成一個業務分析的場景。這就需要一個能合理管理作業調度的框架,在 Hadoop 生態圈中,由 Oozie 負責解決任務調度問題。

Ooize 是一個工作流引擎,是基於 Hadoop 的調度器,可以調度 MapReduce、Pig、Hive、Spark 等不同類型的單一或者具有依賴性的作業。當一個作業中需要調度幾個作業時,就可以使用 Ooize 將任務串聯,再通過 Oozie 調度整個任務進程。
 

三、Hadoop 架構

Hadoop 框架包括三個部分:分佈式文件系統 HDFS分佈式計算框架 MapReduce資源管理系統 YARN
Hadoop-架構

1、分佈式文件系統 HDFS

HDFS (Hadoop Distributed File System)是谷歌 GFS 的克隆版,是對谷歌 2003 年 10 月發表的 GFS 論文的開源實現。作爲大數據領域的數據存儲,HDFS 的設計目標就是提供一個具有高可靠性、高容錯性、高吞吐量以及能運行在通用硬件上的分佈式文件存儲系統。

HDFS 的設計思想是將數據文件以指定的大小切分成數據塊,將數據塊以多副本的方式存儲在多臺機器上。這樣的設計使 HDFS 可以更方便地做數據負載均衡以及容錯,而且數據文件的切分、數據負載均衡和容錯這些功能對用戶都是透明的,用戶在使用的時候,可以把 HDFS 當作普通的本地文件系統使用。
 

2、分佈式計算框架 MapReduce

MapReduce 是 Hadoop 的核心計算框架,用於 PB 量級數據的並行計算。MapReduce 是一種簡化應用程序開發的編程模型,模型中主要包括 Map(映射)和Reduce(規約)兩項核心操作。MapReduce 編程模型爲應用開發者隱藏了系統層實現細節,允許用戶不必關注並行計算底層實現,只需按照 MapReduce API 的編程模型即可實現相應業務邏輯的開發。

當啓動一個 MapReduce 任務時,作業會將輸入的數據集切分成若干獨立的數據塊,由 Map 端將數據映射成需要的鍵值對類型,然後對 Map 的輸出進行排序,再把結果輸入 Reduce 端;Reduce 端接收 Map 端傳過來的鍵值對類型的數據,根據不同鍵分組,對每一組鍵相同的數據進行處理,得到新的鍵值對並輸出,這就是 MapReduce 的核心思想。通常 MapReduce 任務的輸入和輸出都是使用 HDFS 進行存儲,也就是說,MapReduce 處理數據的大部分場景都存儲在 HDFS 上。
 

3、資源管理系統 YARN

YARN(Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器。在 Hadoop 1.x 版本中還沒有 YARN,它的出現解決了 Hadoop 1.x 版本中 MapReduce 架構中 JobTracker 負載壓力過大的問題,它將 JobTracker 的資源管理和作業調度拆分成兩個獨立的服務,分別爲全局的資源管理器(ResourceManager)和每個應用程序特有的 ApplicationMaster。其中,ResourceManager 負責整個系統的資源管理和分配,而 ApplicationMaster 負責單個應用程序的管理。

YARN 是隨着 Hadoop 的不斷髮展而催生的新框架,它的引入不僅解決了JobTracker 負載壓力過大的問題,同時也解決了 Hadoop 1.x 中只能運行 MapReduce 作業的限制。YARN 作爲一個通用的資源管理系統,允許在其上運行各種不同類型的作業,比如 MapReduce、Spark、Tez 等。

YARN 的引入,爲 Hadoop 集羣在利用率、資源統一管理和數據共享等方面帶來了極大地提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章