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