大數據系統發展的技術路線

自從大數據出來後,數據管理界發生了巨大的變化,技術驅動成爲大數據管理系統的一個主要變革力量。


 


傳統的數據庫管理系統以結構化數據爲主,因此關係數據庫系統(RDBMS)可以一統天下滿足各類應用需求。然而,大數據往往是半結構化和非結構化數據爲主,結構化數據爲輔,而且各種大數據應用通常需要對不同類型的數據內容檢索、交叉比對、深度挖掘與綜合分析。面對這類應用需求,傳統數據庫無論在技術上還是功能上都難以爲繼。因此,近幾年出現了oldSQL、NoSQL 與NewSQL 並存的局面。(這幾個術語後面專題討論)


總體上,按數據類型與計算方式的不同,面向大數據的管理系統與處理採用不同的技術路線,大致可以分爲四類。


 QQ圖片20180929100319.png


1、MPP並行數據庫和內存數據庫


第一類技術路線主要面對的是大規模的結構化數據。針對這類大數據,通常採用新型數據庫集羣。它們通過列存儲或行列混合存儲以及粗粒度索引等技術,結合MPP(Massive Parallel Processing)架構高效的分佈式計算模式,實現對PB 量級數據的存儲和管理。列存儲數據庫技術針對數據分析的特點,能夠對數據進行高性能的壓縮,查詢也只需訪問必要的列,節省了很多I/O,分析性能比傳統行存儲數據庫有了很大的提升(可以多達兩個數據量級)。


同時,隨着內存成本的降低、單機內存的增大,以SAP HANA爲代表的內存數據庫也採用了列存儲技術,支持更高性能的數據分析。這些技術的發展,使得它們成爲TB級別數據倉庫的最先進技術,已經涵蓋了絕大多數OLAP市場,在企業分析類應用領域已獲得廣泛應用。


然而,MPP並行數據庫和內存數據庫依賴昂貴的硬件配置,其中的很多商業軟件還有價格高昂的使用許可證,這些成本並不是每個公司都能夠承擔或者願意承擔的;而開源大數據系統採用通用、廉價的硬件設施,使得人們更容易嘗試和使用這些系統,數據和業務遷移的成本也更低。同時,以Hadoop爲代表的開源大數據系統形成較大的社區之後,就會有各種相關係統補充進來,構成生態圈,滿足人們不同的需求,具有非常好的開放性。因此,就出現了第二類以Hadoop爲典型的開源系統技術路線,並逐漸得到認可,併成爲大數據分析的新寵兒。


2、基於Hadoop開源體系的大數據系統


 


第二類技術路線要面對的是半結構化和非結構化數據。應對這類應用場景,基於Hadoop開源體系的系統平臺更爲擅長。它們通過對Hadoop生態體系的技術擴展和封裝,實現對半結構化和非結構化數據的存儲、管理、計算等功能。


目前,Hadoop、MapReduce這類分佈式處理方式已經成爲大數據處理各環節的通用處理方法。Hadoop是一個由Apache基金會開發的大數據分佈式系統基礎架構。用戶可以在不瞭解分佈式底層細節的情況下,輕鬆地在Hadoop上開發和運行處理大規模數據的分佈式程序,充分利用集羣的威力高速運算和存儲。Hadoop是一個數據管理系統,作爲數據分析的核心,彙集了結構化和非結構化的數據,這些數據分佈在傳統的企業數據棧的每一層。Hadoop也是一個大規模並行處理框架,擁有超級計算能力,定位於推動企業級應用的執行。Hadoop又是一個開源社區,主要爲解決大數據的問題提供工具和軟件。雖然Hadoop提供了很多功能,但仍然應該把它歸類爲多個組件組成的Hadoop生態圈,這些組件包括數據存儲、數據集成、數據處理和其他進行數據分析的專門工具。一個典型的Hadoop 生態系統主要由HDFS、MapReduce、Hbase、Zookeeper、Oozie、Pig、Hive等核心組件構成,另外還包括Sqoop、Flume等框架,用來與其他企業融合。(很多新名詞,可以自行Google)


低成本、高可靠、高擴展、高有效、高容錯等特性讓Hadoop成爲最流行的大數據分析系統,然而其賴以生存的HDFS 和MapReduce 組件卻讓其一度陷入困境——批處理的工作方式讓其只適用於離線數據處理,在要求實時性的場景下毫無用武之地。因此,各種基於Hadoop的工具應運而生。爲了減少管理成本,提升資源的利用率,有當下衆多的資源統一管理調度系統,例如Twitter的Apache Mesos、Apache的YARN、Google 的Borg、騰訊搜搜的Torca、Facebook Corona等。Apache Mesos是Apache孵化器中的一個開源項目,使用ZooKeeper實現容錯複製,使用Linux Containers 來隔離任務,支持多種資源計劃分配(內存和CPU)。提供高效、跨分佈式應用程序和框架的資源隔離和共享,支持Hadoop、MPI、Hypertable、Spark 等。YARN又被稱爲MapReduce 2.0,借鑑Mesos,YARN 提出了資源隔離解決方案Container,提供Java 虛擬機內存的隔離。在YARN平臺上可以運行多個計算框架,如MR、Tez、Storm、Spark等。


此外,由Cloudera開發的Impala是一個開源的Massively Parallel Processing(MPP)查詢引擎。與Hive 相同的元數據、SQL語法,可以直接在HDFS或HBase上提供快速、交互式SQL 查詢。Impala是在Dremel的啓發下開發的,不再使用緩慢的Hive + MapReduce 批處理,而是通過與商用並行關係數據庫中類似的分佈式查詢引擎,可以直接從HDFS 或者HBase 中用SELECT、JOIN 和統計函數查詢數據,從而大大降低了延遲。Hadoop社區正努力擴展現有的計算模式框架和平臺,以便解決現有版本在計算性能、計算模式、系統構架和處理能力上的諸多不足。


3、MPP並行數據庫與Hadoop的混合集羣


 


第三類技術路線主要面對的是結構化和非結構化混合的大數據。採用MPP並行數據庫與Hadoop的混合集羣來實現對百PB量級、EB量級數據的存儲和管理。用MPP來管理計算高質量的結構化數據,提供強大的SQL和OLTP型服務;同時,用Hadoop實現對半結構化和非結構化數據的處理,以支持諸如內容檢索、深度挖掘與綜合分析等新型應用。


 


4、內存計算與Hadoop的混合


 


第四類技術路線Hadoop與內存計算模式的混合,目前已經成爲實現高實時性的大數據查詢和計算分析新的趨勢。這種混合計算模式之集大成者當屬UC Berkeley AMP Lab開發的Spark生態系統。


Spark是開源的類似Hadoop的通用的數據分析集羣計算框架,用於構建大規模、低延時的數據分析應用,建立於HDFS之上。Spark提供強大的內存計算引擎,幾乎涵蓋了所有典型的大數據計算模式,包括迭代計算、批處理計算、內存計算、流式計算(Spark Streaming)、數據查詢分析計算(Shark)以及圖計算(GraphX)。Spark 使用Scala 作爲應用框架,採用基於內存的分佈式數據集,優化了迭代式的工作負載以及交互式查詢。Spark支持分佈式數據集上的迭代式任務,實際上可以在Hadoop文件系統上與Hadoop一起運行(通過YARN、Mesos等實現)。另外,基於性能、兼容性、數據類型的研究,還有Shark、Phoenix、Apache Accumulo、Apache Drill、Apache Giraph、Apache Hama、Apache Tez、Apache Ambari 等其他開源解決方案。未來相當長一段時間內,主流的Hadoop平臺改進後將與各種新的計算模式和系統共存,並相互融合,形成新一代的大數據處理系統和平臺。同時,由於有Spark SQL的支持,Spark是既可以處理非結構化數據,也可以處理結構化數據的,爲統一這兩類數據處理平臺提供了非常好的技術方案,成爲目前的一個新的趨勢。


 


總之,我們可以得出以下結論(或預測):


Hadoop、Spark這類分佈式處理系統已經成爲大數據處理各環節的通用處理方法,並進一步構成生態圈;


結構化大數據與非結構化大數據處理平臺將逐漸融合與統一,而不必爲每類數據單獨構建大數據平臺;


MapReduce將逐漸被淘汰,被Spark這類高性能內存計算模式取代,同時Hadoop的HDFS將繼續向前發展,成爲大數據存儲的標準;


傳統的SQL技術將在大數據時代繼續發揚光大,有了SQL on Hadoop/Spark的技術支持,SQL將繼續作爲大數據時代的霸主,同時也被NoSQL補充;


以SQL、Hadoop/Spark爲核心的大數據系統將逐漸挑戰傳統數據庫市場,並逐步代替傳統的數據倉庫。


很多初學者,對大數據的概念都是模糊不清的,大數據是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大數據學習qq羣:199427210,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大數據講師給大家免費授課,給大家分享目前國內最完整的大數據高端實戰實用學習流程體系


大數據學習路線

java
(Java se,javaweb)
Linux(shell,高併發架構,lucene,solr)
Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)
機器學習(R,mahout)
Storm(Storm,kafka,redis)
Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spark graphx)
Python(python,spark python) 
雲計算平臺(docker,kvm,openstack)

名詞解釋

一、Linux
lucene: 全文檢索引擎的架構
solr: 基於lucene的全文搜索服務器,實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面。

二、Hadoop
HDFS
: 分佈式存儲系統,包含NameNode,DataNode。NameNode:元數據,DataNode。DataNode:存數數據。
yarn: 可以理解爲MapReduce的協調機制,本質就是Hadoop的處理分析機制,分爲ResourceManager NodeManager。
MapReduce: 軟件框架,編寫程序。
Hive: 數據倉庫 可以用SQL查詢,可以運行Map/Reduce程序。用來計算趨勢或者網站日誌,不應用於實時查詢,需要很長時間返回結果。
HBase: 數據庫。非常適合用來做大數據的實時查詢。Facebook用Hbase存儲消息數據並進行消息實時的分析
ZooKeeper: 針對大型分佈式的可靠性協調系統。Hadoop的分佈式同步等靠Zookeeper實現,例如多個NameNode,active standby切換。
Sqoop: 數據庫相互轉移,關係型數據庫和HDFS相互轉移
Mahout: 可擴展的機器學習和數據挖掘庫。用來做推薦挖掘,聚集,分類,頻繁項集挖掘。
Chukwa: 開源收集系統,監視大型分佈式系統,建立在HDFS和Map/Reduce框架之上。顯示、監視、分析結果。
Ambari: 用於配置、管理和監視Hadoop集羣,基於Web,界面友好。

二、Cloudera
Cloudera Manager: 管理 監控 診斷 集成
Cloudera CDH:(Cloudera's Distribution,including Apache Hadoop) Cloudera對Hadoop做了相應的改變,發行版本稱爲CDH。
Cloudera Flume: 日誌收集系統,支持在日誌系統中定製各類數據發送方,用來收集數據。
Cloudera Impala: 對存儲在Apache Hadoop的HDFS,HBase的數據提供直接查詢互動的SQL。
Cloudera hue: web管理器,包括hue ui,hui server,hui db。hue提供所有CDH組件的shell界面的接口,可以在hue編寫mr。

三、機器學習/R
R
: 用於統計分析、繪圖的語言和操作環境,目前有Hadoop-R
mahout: 提供可擴展的機器學習領域經典算法的實現,包括聚類、分類、推薦過濾、頻繁子項挖掘等,且可通過Hadoop擴展到雲中。

四、storm
Storm
: 分佈式,容錯的實時流式計算系統,可以用作實時分析,在線機器學習,信息流處理,連續性計算,分佈式RPC,實時處理消息並更新數據庫。
Kafka: 高吞吐量的分佈式發佈訂閱消息系統,可以處理消費者規模的網站中的所有動作流數據(瀏覽,搜索等)。相對Hadoop的日誌數據和離線分析,可以實現實時處理。目前通過Hadoop的並行加載機制來統一線上和離線的消息處理
Redis: 由c語言編寫,支持網絡、可基於內存亦可持久化的日誌型、key-value型數據庫。

五、Spark
Scala
: 一種類似java的完全面向對象的編程語言。

 

jblas: 一個快速的線性代數庫(JAVA)。基於BLAS與LAPACK,矩陣計算實際的行業標準,並使用先進的基礎設施等所有的計算程序的ATLAS藝術的實現,使其非常快。

Spark: Spark是在Scala語言中實現的類似於Hadoop MapReduce的通用並行框架,除了Hadoop MapReduce所具有的優點,但不同於MapReduce的是job中間輸出結果可以保存在內存中,從而不需要讀寫HDFS,因此Spark能更好的適用於數據挖掘與機器學習等需要迭代的MapReduce算法。可以和Hadoop文件系統並行運作,用過Mesos的第三方集羣框架可以支持此行爲。
Spark SQL: 作爲Apache Spark大數據框架的一部分,可用於結構化數據處理並可以執行類似SQL的Spark數據查詢
Spark Streaming: 一種構建在Spark上的實時計算框架,擴展了Spark處理×××式數據的能力。
Spark MLlib: MLlib是Spark是常用的機器學習算法的實現庫,目前(2014.05)支持二元分類,迴歸,聚類以及協同過濾。同時也包括一個底層的梯度下降優化基礎算法。MLlib以來jblas線性代數庫,jblas本身以來遠程的Fortran程序。

 

 

Spark GraphX: GraphX是Spark中用於圖和圖並行計算的API,可以在Spark之上提供一站式數據解決方案,可以方便且高效地完成圖計算的一整套流水作業。

 

Fortran: 最早出現的計算機高級程序設計語言,廣泛應用於科學和工程計算領域。

BLAS: 基礎線性代數子程序庫,擁有大量已經編寫好的關於線性代數運算的程序。
LAPACK: 著名的公開軟件,包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特徵值問題和奇異值問題等。
ATLAS: BLAS線性算法庫的優化版本。
Spark Python: Spark是由scala語言編寫的,但是爲了推廣和兼容,提供了java和python接口。

六、Python
Python
: 一種面向對象的、解釋型計算機程序設計語言。


七、雲計算平臺
Docker
: 開源的應用容器引擎
kvm: (Keyboard Video Mouse)

openstack:  開源的雲計算管理平臺項目


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章