1. 程式人生 > >大資料之Hadoop生態系統概述

大資料之Hadoop生態系統概述

一、什麼是大資料        

首先,我們來了解一下,什麼是大資料?大資料(BigData)是指無法在一定時間內用常規軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率、多樣化的資訊資產。由IBM提出的大資料的五個特徵(5V):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(價值)、Veracity(真實性)。

        大資料的核心是Hadoop生態系統。我們通常可能會根據特定的用特來描述軟體工具,比如:Oracle是資料庫、Apache Tomcat 是 Web 伺服器。不過,Hadoop就有些複雜,Hadoop 是大量工具集合,這些工具可以協同工作來完成特定的任務。可以說Hadoop是一個數據管理系統,將海量的結構化和非結構化資料聚集在一起,這些資料涉及傳統企業資料棧的幾乎每一個層次,其定位是在資料中心佔據核心地位。也可以說,Hadoop 是大規模並行執行框架,把超級計算機的能力帶給大眾,致力於加速企業級應用的執行。由於 Hadoop 提供如此廣泛的功能,可以適用於解決大量問題,也可以說,Hadoop 是基礎框架。Hadoop 提供所有這些功能,因此應該將 Hadoop 歸類為一個生態系統,它包含大量的元件,從資料儲存到資料整合、資料處理以及資料分析師的專用工具。

二、Hadoop生態系統概述

下圖是Hadoop生態系統的核心元件

        

Hadoop 框架中最核心設計就是:HDFS 和 MapReduce。HDFS 提供了海量資料的儲存,  MapReduce 提供了對資料的計算。

  • HDFS  :Hadoop 生態系統的基礎元件是 Hadoop 分散式檔案系統(HDFS)HDFS的機制是將大量資料分佈到計算機叢集上,資料一次寫入,但可以多次讀取用於分析。它是其他一些工具的基礎,例如 HBase

  • MapReduce  :Hadoop 的主要執行框架即 MapReduce,它是一個用於分散式並行資料處理的程式設計模型,將job分為 mapping 階段和 reduce

    階段(因此而得名)。開發人員為 Hadoop 編寫 MapReduce Job,並使用 HDFS 中儲存的資料,而 HDFS 可以保證快速的資料訪問。鑑於 MapReduce 的特性,Hadoop 以並行的方式將處理過程移向資料,從而實現快速處理。

  • HBase  :一個構建在 HDFS 之上的面向列的 NoSQL 資料庫,HBase 用於對大量資料進行快速讀取/寫入。HBase Zookeeper 用於自身的管理,以保證其所有元件都正在執行。

  • Zookeeper  :Zookeeper Hadoop 的分散式協調服務。Zookeeper 被設計成可以在機器叢集上執行,是一個具有高度可用性的服務,用於 Hadoop

    操作的管理,而且很多 Hadoop 元件都依賴它。

  • Pig  :MapReduce 程式設計複雜性的抽象,Pig 平臺包含用於分析 Hadoop 資料集的執行環境和指令碼語言(Pig Latin)。它的編譯器將 Pig Latin 翻譯為 MapReduce 程式序列。

  • Hive  :類似於 SQL 的高階語言,用於執行對儲存在 Hadoop 中資料的查詢,Hive允許不熟悉MapReduce的開發人員編寫資料查詢語句,它會將其翻譯為Hadoop中的 MapReduce Job。類似於 PigHive 是一個抽象層,但更傾向於面向較熟悉 SQL而不是 Java 程式設計的資料庫分析師。

  • Oozie  :一個可擴充套件的 Workflow 系統,Oozie 已經被整合到 Hadoop 軟體棧中,用於協調多個 MapReduce Job的執行。它能夠處理大量的複雜性,基於外部事件(包括定時和所需資料是否存在)來管理執行。

        Hadoop 生態系統還包含一些用於與其他企業級應用進行整合的框架:

  • Sqoop 是一個連通性工具,用於在關係型資料庫和資料倉庫與 Hadoop 之間移動資料。Sqoop 利用資料庫來描述匯入/匯出資料的模式,並使用 MapReduce 實現並行操作和容錯。

  • Flume 是一個分散式的、具有可靠性和高可用性的服務,用於從單獨的機器上將大量資料高效地收集、聚合並移動到 HDFS 中。它基於一個簡單靈活的架構,提供流式資料操作。它藉助於簡單可擴充套件的資料模型,允許將來自企業中多臺機器上的資料移至 Hadoop

三、概念上Hadoop企業級應用