1. 程式人生 > >初識大資料(二. Hadoop是什麼)

初識大資料(二. Hadoop是什麼)

hadoop是一個由Apache基金會所釋出的用於大規模叢集上的分散式系統並行程式設計基礎框架。目前已經是大資料領域最流行的開發架構。並且已經從HDFS、MapReduce、Hbase三大核心元件成長為一個具有60多個元件構成的龐大生態,可以滿足大資料採集、儲存、開發、分析、演算法、建模等方方面面。

在hadoop的使用版本中,目前除Apache的版本,hadoop還有Cloudera與Hortonworks公司的兩大發行版,並且兩家公司還有各自的開分的相關生態元件、管理工具。便於Hadoop叢集的供應、管理和監控。

一.          兩開發行版

1.     Cloudera

1) Cloudera Manager管理工具:收費,穩定性高、整合性差、hadoop版本更新慢、不支援二次開發、安裝複雜。,

2)    CDH發行版:部分開源,基本上支援所有元件,只依賴cdh自已的版本

2.     Hortonworks

1)  Ambari管理工具:免費,穩定性相對不高,整合性好,hadoop版本更新快,支援二次開發、安裝簡便。

2) HDP發行版:完全開源,基本上支援所有元件,直接依賴apache hadoop版

     兩個發行版,在個別元件是不相容的,比如安全元件等。另外,現在這兩個公司已經合併了,意味著將來在元件等方面會有所融合。

二.          Hadoop常用元件簡介

1.      核心元件

1) HDFS:分散式檔案系統(Hadoop Distributed File System),是一個高度容錯性的系統,適合部署在廉價的機器上。能提供高吞吐量的資料訪問,非常適合大規模資料集上的應用。HDFS 允許您連線多個叢集中包含的節點

 ,那些叢集上分佈著一些資料檔案。然後可以將那些資料檔案作為一個無縫檔案系統來進行訪問和儲存。

2) Yarn:(Yet Another Resource Negotiator)也被稱為MapReduce2.0是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和排程,為叢集在利用率、資源統一管理和資料共享等方面提供支援。

3) MapReduce:是面向大資料並行處理的計算模型、框架和平臺,用於大規模資料集(大於1TB)的並行運算。"Map(對映)"和"Reduce(歸約)",是其主要思想。其實現是指定一個Map函式,用來把一組鍵值對對映成一組新的鍵值對,指定併發的Reduce函式,用來保證所有對映的鍵值對中的每一個共享相同的鍵組。

2.      資料採集元件

1) Apache Flume:是一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,支援在日誌系統中定製各類資料傳送方,用於收集資料;並提供對資料進行簡單處理,寫到各種資料儲存系統中,如HDFS、HBase、kafka。

2) Apache Sqoop:是一個用來將Hadoop和RDBMS中的資料相互轉移的工具,可以將一個關係型資料庫中的資料導進到HDFS中,也可以將HDFS的資料導進到關係型資料庫中。Sqoop底層是通過MapReduce作業並行讀取資料庫的。

3) Apache Kafka:是一個流處理平臺,為處理實時資料提供一個統一、高吞吐、低延遲的平臺。其持久化層本質上是一個“按照分散式事務日誌架構的大規模釋出/訂閱訊息佇列”,這使它作為企業級基礎設施來處理流式資料非常有價值。

4) Apache Nifi:是為了實現系統間資料流的自動化而構建的資料對接的整合框架。但我們在此處使用它來表示系統之間的自動和管理資訊流。這個問題空間一直存在,因為企業有多個系統,其中一些系統建立資料,一些系統消耗資料。

3.      資料安全元件

1)    Apache Sentry:是一個針對儲存在 Hadoop 叢集中的資料和元資料提供加強的細粒度的基於角色的授權系統,可以通過驗證的使用者提供資料訪問許可權。

2)    Apache Ranger:是一個集中式框架,提供操作、監控、管理複雜的資料許可權,它提供一個集中的管理機制,管理基於 Apache Hadoop 生態圈的所有資料許可權。可以支援hive的列級授權,支援審計。

4.     資料儲存

1) Apache HBase:是一個參考了谷歌的BigTable建模的執行在HDFS檔案系統上的面向列儲存的開源非關係型分散式儲存系統(NoSQL),可以容錯地儲存海量稀疏的資料。

2) Apache Kudu:是一個面向列儲存的儲存系統,可以同時提供低延遲的隨機讀寫和高效的資料分析能力,支援水平擴充套件,使用Raft協議進行一致性保證。是對HBase能力的補充。

3) Apache Parquet:是面向分析型業務的列式儲存格式,具有更高的儲存效能和資源利用率,可以適配多種計算框架。

5.     服務協作

1) Apache Zoomkeeper:是一種分散式協調服務,為大型分散式計算提供分散式配置服務、同步服務和命名註冊。

6.     工作流與排程

1)Apache Oozie:是一個基於伺服器的工作流程 排程系統,用於管理Hadoop作業, MapReduce和Pig Jobs的任務排程與協調。

2) Linkedin Azkaban:是一個分散式工作流管理器,執行Hadoop作業用以解決Hadoop作業依賴性問題。並提供易於使用的Web使用者介面來維護和跟蹤工作流程。

3) Apache Falcon:是一個在Hadoop中資料生命週期的管理框架,提供了一個用於治理和編排 Hadoop 內部和周邊資料流的資料處理框架。該框架為獲取和處理資料集、複製與保留資料集、重新定向位於非Hadoop擴充套件中的資料集、維護稽核跟蹤與沿襲提供了關鍵性的管控框架。

7.     分散式計算

1)Apache Flink:是一個分散式大資料處理引擎,具有強大的流和批處理功能,可對無窮資料集和無限資料流進行有狀態計算。可部署在各種叢集環境,對各種大小的資料規模進行快速計算。

2) Apache Tez:是一個針對Hadoop資料處理應用程式的、支援 DAG 作業的分散式執行框架,可以將多個有依賴的作業轉換為一個作業從而大幅提升 DAG 作業的效能。

3) Apache Pig:是一個基於Hadoop的大規模資料分析平臺,用於分析較大的資料集,並將它們表示為資料流。提供的SQL-LIKE語言Pig Latin,會把類SQL的資料分析請求轉換為一系列經過優化處理的MapReduce運算。Pig為複雜的海量資料平行計算提供了一個簡單的操作和程式設計介面。

4) Apache Spark:是一種用於大資料和機器學習的複雜分析構建的大資料處理框架。其特點是:速度快、便於使用、統一的引擎。

5)Apache Storm:是一個分散式資料流實時計算系統。可以可靠地處理無限資料流。

8.     資料分析:

1)Apache Hive:是基於Hadoop的一個數據倉庫工具,提供資料的精煉,查詢和分析能力。可以將結構化的資料檔案對映為一張資料庫表,並提供HSQL查詢功能,SQL語句轉換為MapReduce任務執行。

2)Cloudera Impala:是一個高效能、低延遲的SQL查詢引擎。提供了訪問儲存在Hadoop分散式檔案系統中的資料的最快方法。

3) Apache Phoenix:是構建在HBase上的一個SQL層,可以用標準的JDBC APIs來建立表,插入資料和對HBase資料進行查詢,實現OLTP事務能力。

4)Apache Kylin:是一個分散式分析引擎,提供Hadoop/Spark上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,能在亞秒內查詢巨大的Hive表。

9.     系統部署

1) Apache Mesos:是一個叢集管理軟體,支援Hadoop、ElasticSearch、Spark、Storm 和Kafka等應用架構,可以將CPU,記憶體,儲存和其他計算資源從機器(物理或虛擬)中抽象出來,使容錯和彈性分散式系統能夠輕鬆構建並有效執行。

2) Cloudera HUE:是一個開源的Apache Hadoop UI系統,可以通過瀏覽器訪問Web控制檯與Hadoop叢集進行互動來分析處理資料,可以操作HDFS上的資料,執行MapReduce Job,執行Hive的SQL語句,瀏覽HBase資料庫等等

3) Apache Helix:是一個通用的叢集管理框架,用於自動管理節點叢集上的分割槽,複製和分散式資源。在面對節點故障和恢復,叢集擴充套件和重新配置時自動重新分配資源。

10.  資料視覺化

1) Apache Zeppelin:是一個web版的notebook,用於做資料分析和視覺化。可以接入不同的資料處理引擎,包括spark, hive等,原生支援scala, java, shell, markdown等。

11.  機器學習

1) Apache Mahout:是一個演算法庫,提供一些可擴充套件的機器學習領域經典演算法的實現,主要集中在協同過濾,聚類和分類領域。可以有效地擴充套件到Hadoop叢集上。

Deeplearning4j:是一套基於Java語言的神經網路工具包,可以構建、定型和部署神經網路。並與Hadoop和Spark整合,支援分散式CPU和GPU,為商業環境所設計。包括了分散式、多執行緒的深度學習框架,以及普通的單執行緒深度學習框架。定型過程以叢集進行,也就是說,Deeplearning4j可以快速處理大量資料。神經網路可通過[迭代化簡]平行定型,與 Java、 Scala 和 Clojure 均相容。Deeplearning4j在開放堆疊中作為模組元件的功能,使之成為首個為微服務架構打造的深度學習框架。