1. 程式人生 > >Hadoop 簡介以及其生態系統概況

Hadoop 簡介以及其生態系統概況

(1)HDFS:

是Hadoop體系中資料儲存管理的基礎。它是一個高度容錯的系統,能檢測和應對硬體故障,用於在低成本的通用硬體上執行。HDFS 簡化了檔案的一致性模型,通過流式資料訪問,提供高吞吐量應用程式資料訪問功能,適合帶有大型資料集的應用程式

(2)MapReduce

是一種計算模型,用以進行大資料量的計算。其中 Map 對資料集上的獨立元素進行指定的操作,生成鍵-值對形式中間結果。Reduce 則對中間結果中相同“鍵”的所有“值”進行規約,以得到最終結果。MapReduce 這樣的功能劃分,非常適合在大量計算機組成的分散式並行環境裡進行資料處理。

(3)Hive:

資料倉庫基礎設施,提供資料彙總和特定查詢。這個系統支援使用者進行有效的查詢,並實時得到返回結果,定義了一種類似 SQL 的查詢語言(HQL),將 SQL 轉化為 MapReduce 任務在 Hadoop 上執行。通常用於離線分析。

(4)Spark

Spark 是提供大資料集上快速進行資料分析的計算引擎。它建立在HDFS 之上,卻繞過了 MapReduce 使用自己的資料處理框架。Spark 常用於實時查詢、流處理、迭代演算法、複雜操作運算和機器學習。

(5)Ambari:

Ambari 用來協助管理 Hadoop。它提供對 Hadoop 生態系統中許多工具的支援,包括 Hive、HBase、Pig、 Spooq 和 ZooKeeper。這個工具提供叢集管理儀表盤,可以跟蹤叢集執行狀態,幫助診斷效能問題。

(4)Pig:

Pig 是一個整合高階查詢語言的平臺,可以用來處理大資料集。

(5)HBase:

HBase 是一個非關係型資料庫管理系統,以zookeeper做協同服務,執行在 HDFS 之上。它用來處理大資料工程中稀疏資料集。是一個針對結構化資料的可伸縮、高可靠、高效能、分散式和麵向列的動態模式資料庫。和傳統關係資料庫不同,HBase 採用了 BigTable 的資料模型:增強的稀疏排序對映表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。HBase 提供了對大規模資料的隨機、實時讀寫訪問,同時,HBase 中儲存的資料可以使用 MapReduce 來處理,它將資料儲存和平行計算完美地結合在一起。資料模型:Schema-->Table-->Column Family-->Column-->RowKey-->TimeStamp-->Value。

(6)Zookeeper

解決分散式環境下的資料管理問題:統一命名,狀態同步,叢集管理,配置同步等。

(7)Sqoop(資料同步工具)

Sqoop 是 SQL-to-Hadoop 的縮寫,主要用於傳統資料庫和 Hadoop 之前傳輸資料。資料的匯入和匯出本質上是 Mapreduce 程式,充分利用了 MR 的並行化和容錯性。

(8)Pig:

基於 Hadoop 的資料流系統設計動機是提供一種基於 MapReduce 的 ad-hoc(計算在 query 時發生)資料分析工具定義了一種資料流語言—Pig Latin,將指令碼轉換為 MapReduce 任務在 Hadoop 上執行。通常用於進行離線分析。

(9)Mahout (資料探勘演算法庫)

Mahout 起源於 2008 年,最初是 Apache Lucent 的子專案,它在極短的時間內取得了長足的發展,現在是 Apache 的頂級專案。Mahout 的主要目標是建立一些可擴充套件的機器學習領域經典演算法的實現,旨在幫助開發人員更加方便快捷地建立智慧應用程式。Mahout 現在已經包含了聚類、分類、推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的資料探勘方法。除了演算法,Mahout 還包含資料的輸入/輸出工具、與其他儲存系統(如資料庫、MongoDB 或 Cassandra)整合等資料探勘支援架構。

(10)Flume(日誌收集工具)

Cloudera 開源的日誌收集系統,具有分散式、高可靠、高容錯、易於定製和擴充套件的特點。它將資料從產生、傳輸、處理並最終寫入目標的路徑的過程抽象為資料流,在具體的資料流中,資料來源支援在 Flume中定製資料傳送方,從而支援收集各種不同協議資料。同時, Flume資料流提供對日誌資料進行簡單處理的能力,如過濾、格式轉換等。此外,Flume 還具有能夠將日誌寫往各種資料目標(可定製)的能力。總的來說,Flume 是一個可擴充套件、適合複雜環境的海量日誌收集系統。

(11)資源管理器的簡單介紹(YARN)

隨著網際網路的高速發展,基於資料密集型應用的計算框架不斷出現,從支援離線處理的

MapReduce,到支援線上處理的 Storm,從迭代式計算框架 Spark 到流式處理框架 S4,…,各種框架誕生於不同的公司或者實驗室,它們各有所長,各自解決了某一類應用問題。而在大部分網際網路公司中,這幾種框架可能都會採用,比如對於搜尋引擎公司,可能的技術方案如下:網頁建索引採用 MapReduce 框架,自然語言處理/資料探勘採用 Spark(網頁 PageRank計算,聚類分類演算法等),對效能要求很高的資料探勘演算法用 MPI 等。考慮到資源利用率,運維成本,資料共享等因素,公司一般希望將所有這些框架部署到一個公共的叢集中,讓它們共享叢集的資源,並對資源進行統一使用,這樣,便誕生了資源統一管理與排程平臺,典型代表是YARN。

hadoop其他的一些開源元件:

1) cloudera impala:

impala 是由 Cloudera 開發,一個開源的 Massively Parallel Processing(MPP)查詢引

擎 。與 Hive 相同的元資料、SQL 語法、ODBC 驅動程式和使用者介面(Hue Beeswax),可以直接在 HDFS 或 HBase 上提供快速、互動式 SQL 查詢。Impala 是在 Dremel 的啟發下開發的,第一個版本釋出於 2012 年末。Impala 不再使用緩慢的 Hive+MapReduce 批處理,而是通過與商用並行關係資料庫中類似的分散式查詢引擎(由 Query Planner、Query Coordinator 和 Query Exec Engine 三部分組成),可以直接從 HDFS 或者 HBase 中用 SELECT、JOIN 和統計函式查詢資料,從而大大降低了延遲。

2)spark:

Spark 是個開源的資料分析叢集計算框架,最初由加州大學伯克利分校 AMPLab 開發,建立於 HDFS 之上。Spark 與 Hadoop 一樣,用於構建大規模、低延時的資料分析應用。Spark 採用 Scala 語言實現,使用 Scala 作為應用框架。Spark 採用基於記憶體的分散式資料集,優化了迭代式的工作負載以及互動式查詢。與Hadoop不同的是,Spark和Scala緊密整合,Scala 像管理本地collective物件那樣管理分散式資料集。Spark 支援分散式資料集上的迭代式任務,實際上可以在Hadoop 檔案系統上與Hadoop一起執行(通過 YARN、Mesos 等實現)。

3) storm

Storm 是一個分散式的、容錯的實時計算系統,由BackType開發,後被Twitter捕獲。Storm 屬於流處理平臺,多用於實時計算並更新資料庫。Storm 也可被用於“連續計算”(continuous computation),對資料流做連續查詢,在計算時就將結果以流的形式輸出給使用者。它還可被用於“分散式 RPC”,以並行的方式執行昂貴的運算。儲存和平行計算完美地結合在一起。