01Hadoop概述
Hadoop體系也是一個計算框架,在這個框架下,可以使用一種簡單的編程模式,通過多臺計算機構成的集群,分布式處理大數據集。Hadoop是可擴展的,它可以方便地從單一服務器擴展到數千臺服務器,每臺服務器進行本地計算和存儲。除了依賴于硬件交付的高可用性,軟件庫本身也提供數據保護,并可以在應用層做失敗處理,從而在計算機集群的頂層提供高可用服務。Hadoop核心生態圈組件如圖1所示。
圖1 Haddoop開源生態
02Hadoop生態圈
Hadoop包括以下4個基本模塊。
1)Hadoop基礎功能庫:支持其他Hadoop模塊的通用程序包。
2)HDFS:一個分布式文件系統,能夠以高吞吐量訪問應用中的數據。
3)YARN:一個作業調度和資源管理框架。
4)MapReduce:一個基于YARN的大數據并行處理程序。
除了基本模塊,Hadoop還包括以下項目。
1)Ambari:基于Web,用于配置、管理和監控Hadoop集群。支持HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari還提供顯示集群健康狀況的儀表盤,如熱點圖等。Ambari以圖形化的方式查看MapReduce、Pig和Hive應用程序的運行情況,因此可以通過對用戶友好的方式診斷應用的性能問題。
2)Avro:數據序列化系統。
3)Cassandra:可擴展的、無單點故障的NoSQL多主數據庫。
4)Chukwa:用于大型分布式系統的數據采集系統。
5)HBase:可擴展的分布式數據庫,支持大表的結構化數據存儲。
6)Hive:數據倉庫基礎架構,提供數據匯總和命令行即席查詢功能。
7)Mahout:可擴展的機器學習和數據挖掘庫。
8)Pig:用于并行計算的高級數據流語言和執行框架。
9)Spark:可高速處理Hadoop數據的通用計算引擎。Spark提供了一種簡單而富有表達能力的編程模式,支持ETL、機器學習、數據流處理、圖像計算等多種應用。
10)Tez:完整的數據流編程框架,基于YARN建立,提供強大而靈活的引擎,可執行任意有向無環圖(DAG)數據處理任務,既支持批處理又支持交互式的用戶場景。Tez已經被Hive、Pig等Hadoop生態圈的組件所采用,用來替代 MapReduce作為底層執行引擎。
11)ZooKeeper:用于分布式應用的高性能協調服務。
除了以上這些官方認可的Hadoop生態圈組件之外,還有很多十分優秀的組件這里沒有介紹,這些組件的應用也非常廣泛,例如基于Hive查詢優化的Presto、Impala、Kylin等。
此外,在Hadoop生態圈的周邊,還聚集了一群“伙伴”,它們雖然未曾深入融合Hadoop生態圈,但是和Hadoop有著千絲萬縷的聯系,并且在各自擅長的領域起到了不可替代的作用。圖2是阿里云E-MapReduce平臺整合的Hadoop生態體系中的組件,比Apache提供的組合更為強大。
圖2 阿里云E-MapReduce的產品架構
下面簡單介紹其中比較重要的成員。
1)Presto:開源分布式SQL查詢引擎,適用于交互式分析查詢,數據量支持GB到PB級。Presto可以處理多數據源,是一款基于內存計算的MPP架構查詢引擎。
2)Kudu:與HBase類似的列存儲分布式數據庫,能夠提供快速更新和刪除數據的功能,是一款既支持隨機讀寫,又支持OLAP分析的大數據存儲引擎。
3)Impala:高效的基于MPP架構的快速查詢引擎,基于Hive并使用內存進行計算,兼顧ETL功能,具有實時、批處理、多并發等優點。
4)Kylin:開源分布式分析型數據倉庫,提供Hadoop/Spark之上的SQL查詢接口及多維分析(OLAP)能力,支持超大規模數據的壓秒級查詢。
5)Flink:一款高吞吐量、低延遲的針對流數據和批數據的分布式實時處理引擎,是實時處理領域的新星。
6)Hudi:Uber開發并開源的數據湖解決方案,Hudi(Hadoop updates and incrementals)支持HDFS數據的修改和增量更新操作。
03Hadoop的優缺點
如今,Hadoop已經演化成了一個生態系統,系統內的組件千差萬別,有的還是孵化階段,有的風華正茂,有的垂垂老矣。其中,最經久不衰的當屬HDFS和Hive兩大組件,曇花一現的包括HBase、MapReduce、Presto等,風華正茂的當屬Spark和Flink。
古語有云,“成也蕭何,敗也蕭何”。大數據成功最核心的原因是開源,但它存在的最大的問題也是開源。很多組件雖然依靠開源可以快速成熟,但是一旦成熟,就會出現生態紊亂和版本割裂的情況,其中最典型的就是Hive。
Hive 1.x之前的版本功能不完善,1.x版和2.x版算是逐步優化到基本可用了,到了3.x版又出現了各種問題,并且大部分云平臺Hive版本都停留在2.x版,新版本推廣乏力。另外,Hive的計算引擎也是飽受爭議的,Hive支持的計算引擎主要有MapReduce、Tez、Spark、Presto。十多年來MapReduce的計算速度并沒有提升;Tez雖然計算速度快,但是安裝需要定制化編譯和部署;Spark的計算速度最快,但是對JDBC支持不友好;Presto計算速度快并且支持JDBC,但是語法又和Hive不一致。申明一下,這里說的快只是相對MapReduce引擎而言的,跟傳統數據庫的速度相比仍然相差1到2個數量級。
總的來說,基于Hadoop開發出來的大數據平臺,通常具有以下特點。
1)擴容能力:能夠可靠地存儲和處理PB級的數據。Hadoop生態基本采用HDFS作為存儲組件,吞吐量高、穩定可靠。
2)成本低:可以利用廉價、通用的機器組成的服務器群分發、處理數據。這些服務器群總計可達數千個節點。
3)高效率:通過分發數據,Hadoop可以在數據所在節點上并行處理,處理速度非常快。
4)可靠性:Hadoop能自動維護數據的多份備份,并且在任務失敗后能自動重新部署計算任務。
Hadoop生態同時也存在不少缺點。
1)因為Hadoop采用文件存儲系統,所以讀寫時效性較差,至今沒有一款既支持快速更新又支持高效查詢的組件。
2)Hadoop生態系統日趨復雜,組件之間的兼容性差,安裝和維護比較困難。
3)Hadoop各個組件功能相對單一,優點很明顯,缺點也很明顯。
4)云生態對Hadoop的沖擊十分明顯,云廠商定制化組件導致版本分歧進一步擴大,無法形成合力。
5)整體生態基于Java開發,容錯性較差,可用性不高,組件容易掛掉。
關于作者:王春波,資深架構師和數據倉庫專家,現任上海啟高信息科技有限公司大數據架構師,Apache Doris和openGauss貢獻者,Greenplum中文社區參與者。 公眾號“數據中臺研習社”運營者。
本文摘編于《高效使用Greenplum:入門、進階與數據中臺》,經出版方授權發布。(書號:9787111696490)轉載請保留文章來源。
原文鏈接:https://mp.weixin.qq.com/s/J7igFTrwYME7N3xEIlV-mQ