大數(shù)據(jù)技術(shù)無疑是當(dāng)前高新科技領(lǐng)域的“明星”,成為各國角逐的重點(diǎn)科技領(lǐng)域。事實(shí)上,大數(shù)據(jù)技術(shù)脫胎于有著50年發(fā)展歷史的數(shù)據(jù)管理技術(shù),是面向大規(guī)模數(shù)據(jù)分析的技術(shù)棧,主要采取分布式架構(gòu)的設(shè)計(jì)思路,通過并行計(jì)算的方式來提升處理效率;同時(shí)具備高擴(kuò)展能力,能夠根據(jù)業(yè)務(wù)需求隨時(shí)擴(kuò)展。從總體上來看,大數(shù)據(jù)技術(shù)是為了應(yīng)對挑戰(zhàn)而生,未來也將順應(yīng)挑戰(zhàn)而變。
不斷演進(jìn)數(shù)據(jù)管理技術(shù)煥發(fā)新活力
大數(shù)據(jù)技術(shù)是數(shù)據(jù)管理技術(shù)的一種,而數(shù)據(jù)管理技術(shù)擁有著至少50年的發(fā)展歷史,是所有計(jì)算機(jī)應(yīng)用的基礎(chǔ)。數(shù)據(jù)管理系統(tǒng)處于底層硬件和上層應(yīng)用之間,本質(zhì)上是利用計(jì)算機(jī)硬件的存儲(chǔ)和計(jì)算能力,對數(shù)據(jù)進(jìn)行存儲(chǔ)、管理、加工等操作,最終支持上層各類應(yīng)用。
數(shù)據(jù)管理技術(shù)的發(fā)展總共經(jīng)歷了四個(gè)階段。第一個(gè)階段是關(guān)系型數(shù)據(jù)模型的提出,為關(guān)系數(shù)據(jù)庫發(fā)展奠定了理論基礎(chǔ)。第二個(gè)階段是Oracle和DB2等商業(yè)關(guān)系型數(shù)據(jù)庫的興起和發(fā)展壯大,數(shù)據(jù)庫正式成為繼服務(wù)器、操作系統(tǒng)之外的第三個(gè)必需品。第三階段是由于業(yè)務(wù)場景的需要,數(shù)據(jù)庫被分為面向業(yè)務(wù)的事務(wù)數(shù)據(jù)庫和面向分析統(tǒng)計(jì)的分析數(shù)據(jù)庫,兩者之間的架構(gòu)和建模方式也發(fā)生了變化,完成了數(shù)據(jù)庫技術(shù)的第一次分離。第四個(gè)階段是數(shù)據(jù)庫技術(shù)的分布式浪潮:最早在數(shù)據(jù)分析端,由于單機(jī)無法應(yīng)對海量數(shù)據(jù)分析的需求,分布式水平擴(kuò)展的需求提上日程,Hadoop、Spark和各類NoSQL都是為了滿足這一需求;分布式技術(shù)在2010年左右擴(kuò)展到事務(wù)數(shù)據(jù)庫領(lǐng)域,主要是為了應(yīng)對越來越多的互聯(lián)網(wǎng)業(yè)務(wù)。
數(shù)據(jù)管理系統(tǒng)處于硬件和應(yīng)用之間的位置,決定了其自身的技術(shù)演進(jìn)主要依賴于底層硬件的發(fā)展和上層應(yīng)用端的需求變化。
在硬件端,從20世紀(jì)70年代開始,通用服務(wù)器的芯片、內(nèi)存的發(fā)展就遵循摩爾定律,單機(jī)的性能越來越強(qiáng),推動(dòng)著數(shù)據(jù)庫的處理能力不斷增強(qiáng),利用內(nèi)存能力成為一大趨勢。進(jìn)入21世紀(jì),芯片處理能力的增長已趕不上業(yè)務(wù)和數(shù)據(jù)量的增長,單機(jī)系統(tǒng)的“瓶頸”顯現(xiàn),促使數(shù)據(jù)管理系統(tǒng)向分布式架構(gòu)轉(zhuǎn)型。
在應(yīng)用端,業(yè)務(wù)的互聯(lián)網(wǎng)化、在線化使得業(yè)務(wù)流量和訪問頻率呈指數(shù)級(jí)增長,單機(jī)集中式架構(gòu)處理遇到“瓶頸”。移動(dòng)互聯(lián)網(wǎng)時(shí)代動(dòng)輒千萬級(jí)的用戶量,同時(shí)也提出了海量數(shù)據(jù)分析的挑戰(zhàn)。分布式架構(gòu),正是為了應(yīng)對這些挑戰(zhàn)而生。
應(yīng)對挑戰(zhàn)10年后生態(tài)初成
大數(shù)據(jù)應(yīng)用和技術(shù)的誕生,是為了應(yīng)對數(shù)據(jù)量爆發(fā)式增長的挑戰(zhàn)。從2004年出現(xiàn)之后,大數(shù)據(jù)經(jīng)過10年的發(fā)展后進(jìn)入平穩(wěn)期,初步構(gòu)建了生態(tài)。
10多年前,網(wǎng)站和網(wǎng)頁的爆發(fā)式增長,令搜索引擎公司最早感受到海量數(shù)據(jù)給技術(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ù)的增長量、多樣性和對處理時(shí)效的要求,是傳統(tǒng)數(shù)據(jù)庫、商業(yè)智能縱向擴(kuò)展架構(gòu)無法應(yīng)對的。在此背景下,谷歌公司率先于2004年提出一套分布式數(shù)據(jù)處理的技術(shù)體系,即谷歌分布式文件系統(tǒng)(Googlefilesystem,GFS)、分布式計(jì)算系統(tǒng)MapReduce和分布式數(shù)據(jù)庫Big-Table,以較低成本很好地解決了大數(shù)據(jù)面臨的困境,奠定了大數(shù)據(jù)技術(shù)的基礎(chǔ)。
受谷歌公司的啟發(fā),ApacheHa-doop推出了分布式文件系統(tǒng)HDFS、分布式計(jì)算系統(tǒng)MapReduce和分布式數(shù)據(jù)庫HBase,并將其進(jìn)行開源,這成為大數(shù)據(jù)技術(shù)開源生態(tài)體系的起點(diǎn)。
2008年左右,雅虎最早在實(shí)際環(huán)境中搭建了大規(guī)模的Hadoop集群,這是Hadoop在互聯(lián)網(wǎng)公司使用最早的案例,后來Hadoop生態(tài)的技術(shù)就滲透到互聯(lián)網(wǎng)、電信、金融乃至更多的行業(yè)。
2009年,加利福尼亞大學(xué)伯克利分校的AMPLab研發(fā)出Spark。Spark經(jīng)過5年的發(fā)展,正式替代了Hadoop生態(tài)中MapReduce的地位,成為新一代計(jì)算引擎。不過,2013年純計(jì)算的Flink誕生,對Spark發(fā)起了挑戰(zhàn)。2014年之后大數(shù)據(jù)技術(shù)生態(tài)的發(fā)展就進(jìn)入了平穩(wěn)期。
經(jīng)過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ǔ)領(lǐng)域,HDFS已經(jīng)成為大數(shù)據(jù)磁盤存儲(chǔ)的事實(shí)標(biāo)準(zhǔn),針對關(guān)系型以外的數(shù)據(jù)模型,開源社區(qū)形成了K-V(key-value)、列式、文檔、NoSQL數(shù)據(jù)庫體系,HBase、Cas-sandra、MongoDB、Neo4j、Redis等數(shù)據(jù)庫百花齊放;在資源調(diào)度方面,Yarn獨(dú)領(lǐng)風(fēng)騷,Mesos有一定的發(fā)展?jié)摿ΑS?jì)算處理引擎慢慢覆蓋了離線批量計(jì)算、實(shí)時(shí)計(jì)算、流計(jì)算等場景,誕生了MapReduce、Spark、Flink、Storm等計(jì)算框架;在數(shù)據(jù)查詢和分析領(lǐng)域形成了豐富的SQLonHadoop解決方案,Hive、HAWQ、Impala、Presto、Drill等技術(shù)與傳統(tǒng)的大規(guī)模并行處理(massivelyparallelpro-cessor,MPP)數(shù)據(jù)庫競爭激烈。
與時(shí)俱進(jìn)四大新動(dòng)向顯現(xiàn)