回覆列表
-
1 # 菜菜菜鳥
-
2 # 未來資料科技
本人從事大資料相關行業,可以談談關於hadoop生態系統認識!
Hadoop 是 Apache 旗下的一套開源軟體平臺H它提供的功能有:利用伺服器叢集,根據使用者的自定義業務邏輯,對海量資料進行分散式處理
Hadoop 的核心元件有
Common(基礎功能元件)(工具包,RPC 框架)JNDI 和 RPCHDFS(Hadoop Distributed File System 分散式檔案系統)YARN(Yet Another Resources Negotiator 運算資源排程系統)MapReduce(Map 和 Reduce 分散式運算程式設計框架)在廣義上來說,Hadoop 通常是指一個更廣泛的概念--Hadoop 生態圈,官網介紹:http://hadoop.apache.org/Apache™ Hadoop®的專案開發開源軟體可靠,可擴充套件,分散式計算。Apache Hadoop 軟體庫是一個允許跨叢集用簡單的模型對於大資料的分散式處理的框架。它的目的是擴大從單一伺服器到成千上萬的機器,提供每個本地計算和儲存。而不是依靠硬體來實現高可用性,庫本身的是檢測和處理在應用程式層的故障,所以提供高可用性服務除了計算機叢集,每一種都可能導致故障。該專案包括很多模組下面簡單介紹一些常用的
Hadoop Common:基礎功能類庫支援其他Hadoop 模組Hadoop Distributed File System:一個分散式檔案系統,它提供了高通量訪問應用程式資料Hadoop YARN:一個叢集作業排程和資源管理的框架Hadoop MapReduce:YARN-based 系統並行處理大型資料集。(版本升級以 YARN 做資源管理器的 HadoopAmbari™:一個基於 web 的工具配置,管理和監視 Apache Hadoop 叢集,包括支援Hadoop 的 Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie, Pig and Sqoop。Ambari 還提供了一個儀表板檢視叢集健康,如熱圖和能夠有效看到 MapReduce,Pig 和 Hive 應用的特性來診斷效能特徵以使用者友好的方式。
Avro™: 資料序列化系統。Cassandra™:一個沒有單點故障可伸縮的多主機資料庫。Chukwa™:一個管理大型分散式系統的資料採集系統。HBase™:一個可擴充套件的分散式資料庫,支援大型表的結構化資料儲存。Hive™:一個數據倉庫基礎設施,提供了資料總結和特別查詢。Mahout™:一個可擴充套件的機器學習和資料探勘庫。Pig™:一個高階資料流語言和平行計算的執行框架。Spark™:Hadoop 資料的快速、通用的計算引擎。Spark 提供了一個簡單的和豐富的程式設計模型,支援廣泛的應用程式,包括 ETL、機器學習、流處理和圖計算。Tez™:一個廣義資料流程式設計框架,基於 Hadoop 的 YARN,它提供了一個功能強大且靈 活的引擎來執行任意 DAG(有向無環圖)的任務來處理批處理和互動用例的資料。Tez正在被 Hive™, Pig™ 和其他框架 Hadoop 生態系統,以及其他商業軟體(例如 ETL 工具),以取代 Hadoop MapReduce™作為底層執行引擎。ZooKeeper™:一個高效能的分散式應用程式的協調服務!如果只看文字確實感覺一頭霧水,現在放幾張圖,可以比較直觀清晰的幫助我們去理解!
HDFS全稱Hadoop Distributed File System,即分散式檔案系統。HDFS具有高容錯能力,可以部署到低成本的硬體上。它適用於大資料應用,對資料可以實現高吞吐量訪問,並且可以實現流式的資料訪問。
MapReduce是一種程式設計模型,用於大規模資料集(大於1TB)的並行運算。概念"Map(對映)"和"Reduce(歸約)",是它們的主要思想,都是從函數語言程式設計語言裡借來的,還有從向量程式語言裡借來的特性。它極大地方便了程式設計人員在不會分散式並行程式設計的情況下,將自己的程式執行在分散式系統上。
Apache Hadoop
YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和排程,它的引入為叢集在利用率、資源統一管理和資料共享等方面帶來了巨大好處。HBase 是一種類似於資料庫的儲存層,也就是說 HBase 適用於結構化的儲存和大資料的實時查詢。並且 HBase 是一種列式的分散式資料庫,是由當年的Google 公佈的 BigTable 的論文而生。不過這裡也要注意 HBase 底層依舊依賴 HDFS 來作為其物理儲存,這點類似於 Hive。
Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。其優點是學習成本低,可以透過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉庫的統計分析。
ZooKeeper是一種為分散式應用所設計的高可用、高效能且一致的開源協調服務,它提供了一項基本服務:分散式鎖服務。由於ZooKeeper的開源特性,後來我們的開發者在分散式鎖的基礎上,摸索了出了其他的使用方法:配置維護、組服務、分散式訊息佇列、分散式通知/協調等。
Spark是一個用於編寫快速分散式程式的框架。 Spark解決了與Hadoop MapReduce類似的問題,但具有快速的記憶體方法和乾淨的功能樣式API。憑藉其與Hadoop和內建工具整合的互動式查詢分析(Shark),大規模圖形處理和分析(Bagel)以及實時分析(Spark Streaming)的能力,它可以互動式地用於快速處理和查詢大型資料集。
Storm是一個複雜的事件處理器(CEP)和主要以Clojure程式語言編寫的分散式計算框架。是一種分散式實時計算系統,用於處理快速,大量的資料流。 Storm是一種基於主工作者正規化的架構。因此,Storm叢集主要由主節點和工作節點組成,由Zookeeper協調完成。
Flink是一個數據處理系統,是Hadoop MapReduce元件的替代品。它帶有自己的執行時,而不是構建在MapReduce之上。因此,它可以完全獨立於Hadoop生態系統工作。但是,Flink還可以訪問Hadoop的分散式檔案系統(HDFS)來讀取和寫入資料,以及Hadoop的下一代資源管理器(YARN)來配置群集資源。由於大多數Flink使用者使用Hadoop HDFS來儲存他們的資料,因此它已經提供了訪問HDFS所需的庫。