一、數(shù)據(jù)管理技術(shù)發(fā)展背景
大數(shù)據(jù)的技術(shù)是數(shù)據(jù)管理技術(shù)的一種,數(shù)據(jù)管理系統(tǒng)有著悠久的發(fā)展歷史,它是所有計(jì)算機(jī)應(yīng)用的基礎(chǔ)。談到數(shù)據(jù)管理的軟件,必須關(guān)注數(shù)據(jù)管理軟件所依賴的硬件環(huán)境和它來(lái)解決的應(yīng)用場(chǎng)景,我們可以通過(guò)圖1來(lái)認(rèn)識(shí)數(shù)據(jù)管理軟件的位置。首先它是一種軟件,處于底層硬件和上層應(yīng)用之間,本質(zhì)上是利用計(jì)算機(jī)硬件的存儲(chǔ)和計(jì)算能力,對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、管理、加工等操作,最終為了支持上層各類應(yīng)用。
圖1數(shù)據(jù)管理技術(shù)發(fā)展背景
數(shù)據(jù)管理技術(shù)到現(xiàn)在至少有50年的發(fā)展歷史,大概經(jīng)歷了幾個(gè)發(fā)展階段,見圖2。第一個(gè)階段是關(guān)系型數(shù)據(jù)模型的提出,為關(guān)系數(shù)據(jù)庫(kù)發(fā)展奠定了理論基礎(chǔ);第二個(gè)階段是Oracle和DB2等商業(yè)關(guān)系型數(shù)據(jù)庫(kù)的興起和發(fā)展壯大,開始了商業(yè)數(shù)據(jù)庫(kù)產(chǎn)品在各行各業(yè)的應(yīng)用,數(shù)據(jù)庫(kù)也正式成為了繼服務(wù)器、操作系統(tǒng)之外的第三個(gè)必須品;第三階段由于業(yè)務(wù)場(chǎng)景的需要,數(shù)據(jù)庫(kù)被分為面向業(yè)務(wù)的事務(wù)數(shù)據(jù)庫(kù)和面向分析統(tǒng)計(jì)的分析數(shù)據(jù)庫(kù),兩者之間的架構(gòu)和建模方式也發(fā)生了變化,這是數(shù)據(jù)庫(kù)技術(shù)的第一次分離;第四個(gè)階段是數(shù)據(jù)庫(kù)技術(shù)的分布式浪潮,最早是從數(shù)據(jù)分析端產(chǎn)生的,單機(jī)無(wú)法應(yīng)對(duì)海量數(shù)據(jù)分析的需求,分布式水平擴(kuò)展的需求提上日程,Hadoop、Spark和各類NoSQL都是為了應(yīng)對(duì)這一需求而誕生,而分布式的技術(shù)也在2010年左右擴(kuò)展到了事務(wù)數(shù)據(jù)庫(kù)領(lǐng)域,主要為了應(yīng)對(duì)越來(lái)越多的互聯(lián)網(wǎng)業(yè)務(wù)。
圖2數(shù)據(jù)管理系統(tǒng)的發(fā)展階段
數(shù)據(jù)管理系統(tǒng)處于硬件和應(yīng)用之間的位置決定了它自身的技術(shù)演進(jìn)主要依賴于底層硬件的發(fā)展和上層應(yīng)用端的需求變化。在硬件端,從上世紀(jì)70年代開始,通用服務(wù)器的芯片、內(nèi)存的發(fā)展就遵循摩爾定律,單機(jī)的性能越來(lái)越強(qiáng),推動(dòng)著數(shù)據(jù)庫(kù)的處理能力不斷增強(qiáng),利用內(nèi)存能力也是一大趨勢(shì)。而進(jìn)入2000年,芯片處理能力的增長(zhǎng)趕不上業(yè)務(wù)和數(shù)據(jù)的增長(zhǎng),單機(jī)系統(tǒng)的瓶頸顯露,導(dǎo)致數(shù)據(jù)管理系統(tǒng)向分布式架構(gòu)轉(zhuǎn)型。在應(yīng)用端,業(yè)務(wù)的互聯(lián)網(wǎng)化、在線化使得業(yè)務(wù)流量和訪問(wèn)頻率呈指數(shù)級(jí)的增長(zhǎng),單機(jī)集中式架構(gòu)處理遇到瓶頸,而移動(dòng)互聯(lián)網(wǎng)下動(dòng)輒上千萬(wàn)的級(jí)的用戶量,提出了海量數(shù)據(jù)分析的挑戰(zhàn),分布式架構(gòu)正是為應(yīng)對(duì)這些挑戰(zhàn)而生。
二、大數(shù)據(jù)技術(shù)發(fā)展歷程
大數(shù)據(jù)的應(yīng)用和技術(shù)起源于互聯(lián)網(wǎng),首先是網(wǎng)站和網(wǎng)頁(yè)的爆發(fā)式增長(zhǎng),搜索引擎公司最早感受到了海量數(shù)據(jù)帶來(lái)的技術(shù)上的挑戰(zhàn),隨后興起的社交網(wǎng)絡(luò)、視頻網(wǎng)站、移動(dòng)互聯(lián)網(wǎng)的浪潮加劇了這一挑戰(zhàn)?;ヂ?lián)網(wǎng)企業(yè)發(fā)現(xiàn)新數(shù)據(jù)的增長(zhǎng)量、多樣性和對(duì)處理時(shí)效的要求是傳統(tǒng)數(shù)據(jù)庫(kù)、商業(yè)智能縱向擴(kuò)展架構(gòu)無(wú)法應(yīng)對(duì)的。
在此背景下,谷歌公司率先于2004年提出一套分布式數(shù)據(jù)處理的技術(shù)體系,即分布式文件系統(tǒng)谷歌文件系統(tǒng)(Google file system,GFS)、分布式計(jì)算系統(tǒng)MapReduce和分布式數(shù)據(jù)庫(kù)BigTable,以較低成本很好地解決了大數(shù)據(jù)面臨的困境,奠定了大數(shù)據(jù)技術(shù)的基礎(chǔ)。受谷歌公司論文啟發(fā),Apache Hadoop實(shí)現(xiàn)了自己的分布式文件系統(tǒng)HDFS、分布式計(jì)算系統(tǒng)MapReduce和分布式數(shù)據(jù)庫(kù)HBase,并將其進(jìn)行開源,這是大數(shù)據(jù)技術(shù)開源生態(tài)體系的起點(diǎn)。
2008年左右,雅虎最早在實(shí)際環(huán)境中搭建了大規(guī)模的Hadoop集群,這是Hadoop在互聯(lián)網(wǎng)公司使用最早的案例,后來(lái)Hadoop生態(tài)的技術(shù)就滲透到了互聯(lián)網(wǎng)、電信、金融乃至更多的行業(yè)。2009年UCBerkley大學(xué)的AMPLab研發(fā)出了Spark,經(jīng)過(guò)5年的發(fā)展,正式替換了Hadoop生態(tài)中MapReduce的地位,成為了新一代計(jì)算引擎,而2013年純計(jì)算的Flink誕生,對(duì)Spark發(fā)出了挑戰(zhàn)。2014年之后大數(shù)據(jù)技術(shù)生態(tài)的發(fā)展進(jìn)入了平穩(wěn)期。
圖3大數(shù)據(jù)分析技術(shù)的發(fā)展歷程
經(jīng)過(guò)10年左右的發(fā)展,大數(shù)據(jù)技術(shù)形成了以開源為主導(dǎo)、多種技術(shù)和架構(gòu)并存的特點(diǎn)。從數(shù)據(jù)在信息系統(tǒng)中的生命周期看,大數(shù)據(jù)技術(shù)生態(tài)主要有5個(gè)發(fā)展方向,包括數(shù)據(jù)采集與傳輸、數(shù)據(jù)存儲(chǔ)、資源調(diào)度、計(jì)算處理、查詢與分析。在數(shù)據(jù)采集與傳輸領(lǐng)域漸漸形成了Sqoop、Flume、Kafka等一系列開源技術(shù),兼顧離線和實(shí)時(shí)數(shù)據(jù)的采集和傳輸。在存儲(chǔ)層,HDFS已經(jīng)成為了大數(shù)據(jù)磁盤存儲(chǔ)的事實(shí)標(biāo)準(zhǔn),針對(duì)關(guān)系型以外的數(shù)據(jù)模型,開源社區(qū)形成了K-V(key-value)、列式、文檔、圖4類NoSQL數(shù)據(jù)庫(kù)體系,HBase、Cassandra、MongoDB、Neo4j、Redis等數(shù)據(jù)庫(kù)百花齊放。資源調(diào)度方面,Yarn獨(dú)領(lǐng)風(fēng)騷,Mesos有一定發(fā)展簽里。計(jì)算處理引擎方面慢慢覆蓋了離線批量計(jì)算、實(shí)時(shí)計(jì)算、流計(jì)算等場(chǎng)景,誕生了MapReduce、Spark、Flink、Storm等計(jì)算框架。在數(shù)據(jù)查詢和分析領(lǐng)域形成了豐富的SQL on Hadoop的解決方案,Hive、HAWQ、Impala、Presto、Drill等技術(shù)與傳統(tǒng)的大規(guī)模并行處理(massively parallel processor,MPP)數(shù)據(jù)庫(kù)競(jìng)爭(zhēng)激烈。
圖4大數(shù)據(jù)技術(shù)生態(tài)
三、大數(shù)據(jù)技術(shù)發(fā)展趨勢(shì)
2014年以后,整體大數(shù)據(jù)的技術(shù)棧已經(jīng)趨于穩(wěn)定,由于云計(jì)算、人工智能等技術(shù)發(fā)展,還有芯片、內(nèi)存端的變化,大數(shù)據(jù)技術(shù)也在發(fā)生相應(yīng)的變化。總結(jié)來(lái)看主要有幾點(diǎn)發(fā)展趨勢(shì):
一是流式架構(gòu)的更替,最早大數(shù)據(jù)生態(tài)沒(méi)有辦法統(tǒng)一批處理和流計(jì)算,只能采用Lambda架構(gòu),批的任務(wù)用批計(jì)算引擎,流式任務(wù)采用流計(jì)算引擎,比如批處理采用MapReduce,流計(jì)算采用Storm。后來(lái)Spark試圖從批的角度統(tǒng)一流處理和批處理,Spark Streaming采用了micro-bach的思路來(lái)處理流數(shù)據(jù)。近年來(lái)純流架構(gòu)的Flink異軍突起,由于其架構(gòu)設(shè)計(jì)合理,生態(tài)健康,近年來(lái)發(fā)展特別快。而Spark近期也拋棄了自身微批處理的架構(gòu),轉(zhuǎn)向了純流架構(gòu)Structure Streaming,流計(jì)算的未來(lái)霸主還未見分曉。
二是大數(shù)據(jù)技術(shù)的云化,一方面是公有云業(yè)務(wù)的成熟,眾多大數(shù)據(jù)技術(shù)都被搬到了云上,其運(yùn)維方式和運(yùn)行環(huán)境都發(fā)生了較大變化,帶來(lái)計(jì)算和存儲(chǔ)資源更加的彈性變化,另一方面,私有部署的大數(shù)據(jù)技術(shù)也逐漸采用容器、虛擬化等技術(shù),期望更加精細(xì)化地利用計(jì)算資源。
三是異構(gòu)計(jì)算的需求,近年來(lái)在通用CPU之外,GPU、FPGA、ASIC等芯片發(fā)展迅猛,不同芯片擅長(zhǎng)不同的計(jì)算任務(wù),例如GPU擅長(zhǎng)圖像數(shù)據(jù)的處理,大數(shù)據(jù)技術(shù)開始嘗試根據(jù)不同任務(wù)來(lái)調(diào)用不同的芯片,提升數(shù)據(jù)處理的效率。
四是兼容智能類的應(yīng)用,隨著深度學(xué)習(xí)的崛起,AI類的應(yīng)用越來(lái)越廣泛,大數(shù)據(jù)的技術(shù)棧在努力兼容AI的能力,通過(guò)一站式的能力來(lái)做數(shù)據(jù)分析和AI應(yīng)用,這樣開發(fā)者就能在一個(gè)工具站中編寫SQL任務(wù),調(diào)用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的算法來(lái)訓(xùn)練模型,完成各類數(shù)據(jù)分析的任務(wù)。
四、總結(jié)與展望
數(shù)據(jù)管理技術(shù)已經(jīng)發(fā)展了50多年了,大數(shù)據(jù)技術(shù)是在數(shù)據(jù)管理技術(shù)的基礎(chǔ)上,面向大規(guī)模數(shù)據(jù)分析的技術(shù)棧,它主要是分布式架構(gòu)的設(shè)計(jì)思路,通過(guò)并行計(jì)算的方式來(lái)提升處理效率,同時(shí)具備了高擴(kuò)展能力,根據(jù)業(yè)務(wù)需求隨時(shí)擴(kuò)展。經(jīng)過(guò)15年左右的發(fā)展,大數(shù)據(jù)的技術(shù)棧逐漸成熟,然而近年來(lái)云計(jì)算、人工智能等技術(shù)的發(fā)展,還有底層芯片和內(nèi)存端的變化,以及視頻等應(yīng)用的普及,都給大數(shù)據(jù)技術(shù)帶來(lái)新的要求。未來(lái)大數(shù)據(jù)技術(shù)會(huì)沿著異構(gòu)計(jì)算,批流融合,云化,兼容AI,內(nèi)存計(jì)算等方向持續(xù)更迭,5G和物聯(lián)網(wǎng)應(yīng)用的成熟,又將帶來(lái)海量視頻和物聯(lián)網(wǎng)數(shù)據(jù),支持這些數(shù)據(jù)的處理也會(huì)是大數(shù)據(jù)技術(shù)未來(lái)發(fā)展的方向。