1. 程式人生 > >大資料學習系統發展的技術路線

大資料學習系統發展的技術路線

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


 image.png


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


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


 

網際網路科技發展蓬勃興起,人工智慧時代來臨,抓住下一個風口。為幫助那些往想網際網路方向轉行想學習,卻因為時間不夠,資源不足而放棄的人。我自己整理的一份最新的大資料進階資料和高階開發教程,大資料學習群:868847735   歡迎進階中和進想深入大資料的小夥伴加入。


1、MPP並行資料庫和記憶體資料庫


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


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


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


2、基於Hadoop開源體系的大資料系統


image.png 


第二類技術路線要面對的是半結構化和非結構化資料。應對這類應用場景,基於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為核心的大資料系統將逐漸挑戰傳統資料庫市場,並逐步代替傳統的資料倉庫。