初識大數據(二. Hadoop是什麼)

hadoop是一個由Apache基金會所發佈的用於大規模集羣上的分佈式系統並行編程基礎框架。目前已是大數據領域最流行的開發架構。而且已經從HDFS、MapReduce、Hbase三大核心組件成長爲一個具備60多個組件構成的龐大生態,能夠知足大數據採集、存儲、開發、分析、算法、建模等方方面面。java

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

一.          兩開發行版算法

1.     Clouderashell

1) Cloudera Manager管理工具:收費,穩定性高、集成性差、hadoop版本更新慢、不支持二次開發、安裝複雜。,數據庫

2)    CDH發行版:部分開源,基本上支持全部組件,只依賴cdh自已的版本apache

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:是一個流處理平臺,爲處理實時數據提供一個統1、高吞吐、低延遲的平臺。其持久化層本質上是一個「按照分佈式事務日誌架構的大規模發佈/訂閱消息隊列」,這使它做爲企業級基礎設施來處理流式數據很是有價值。

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在開放堆棧中做爲模塊組件的功能,使之成爲首個爲微服務架構打造的深度學習框架。

相關文章
相關標籤/搜索