讓數(shù)據(jù)產(chǎn)生價(jià)值才叫成功。早期有不少的公司引入了Hadoop,將企業(yè)的各種結(jié)構(gòu)化非結(jié)構(gòu)化數(shù)據(jù)加載至Hadoop環(huán)境當(dāng)中,想讓自己的數(shù)據(jù)發(fā)揮更大的價(jià)值,但這并不容易。2016年,Gartner公司估計(jì)有60%的大數(shù)據(jù)項(xiàng)目遭遇失敗。一年之后,他們表示60%的估計(jì)太過(guò)保守,這個(gè)數(shù)字應(yīng)該是85%。
大數(shù)據(jù)存儲(chǔ)已經(jīng)走到了一個(gè)新的階段,肯定會(huì)有新的革命性技術(shù)來(lái)替換它。
01大數(shù)據(jù)的未來(lái)
前十多年,大數(shù)據(jù)的發(fā)展主要集中在技術(shù)框架上,社區(qū)出現(xiàn)了一系列優(yōu)秀的作品,如最開(kāi)始引領(lǐng)大數(shù)據(jù)風(fēng)潮的Hadoop,到計(jì)算引擎Spark、Flink,消息中間件Kafka,以及資源調(diào)度器Kubernetes等等,大數(shù)據(jù)領(lǐng)域的技術(shù)框架已經(jīng)比較成熟。
通過(guò)開(kāi)源架構(gòu)策略,現(xiàn)代化數(shù)字企業(yè)逐漸意識(shí)到自己的目標(biāo)是通過(guò)業(yè)務(wù)實(shí)現(xiàn)數(shù)據(jù)的價(jià)值化,未來(lái)將會(huì)把更多的精力投向研究底層數(shù)據(jù)消費(fèi)和上層的產(chǎn)品應(yīng)用。
2019年6月,谷歌以26億美元收購(gòu)了數(shù)據(jù)分析公司Looker。同月,Salesforce宣布以157億美元收購(gòu)BI企業(yè)Tableau。2019年9月,Cloudera宣布收購(gòu)商業(yè)智能實(shí)時(shí)分析廠商Arcadia Data。這些收購(gòu)案例都說(shuō)明企業(yè)的目標(biāo)開(kāi)始轉(zhuǎn)向解讀所積累的海量數(shù)據(jù)。
賦能業(yè)務(wù),快速應(yīng)對(duì)挑戰(zhàn),正是數(shù)據(jù)湖所能提供的。數(shù)據(jù)湖的概念,最早是在2011年由Dan Woods提出,“是一個(gè)集中化存儲(chǔ)海量的、多個(gè)來(lái)源,多種類(lèi)型數(shù)據(jù),并可以對(duì)數(shù)據(jù)進(jìn)行快速加工,分析的平臺(tái),本質(zhì)上是一套先進(jìn)的企業(yè)數(shù)據(jù)架構(gòu)”。
例如在社交廣告中的用戶畫(huà)像,需要行為日志等非結(jié)構(gòu)化數(shù)據(jù),經(jīng)過(guò)層層數(shù)據(jù)加工形成業(yè)務(wù)價(jià)值。以后也會(huì)延伸到圖像、語(yǔ)音等類(lèi)型。這些就是數(shù)據(jù)湖能提供的特別優(yōu)勢(shì)。
Apache Ozone項(xiàng)目是由大數(shù)據(jù)公司Hortonworks貢獻(xiàn)出來(lái)的,最初是為了解決Hadoop系統(tǒng)中的對(duì)象存儲(chǔ)問(wèn)題。面對(duì)Hadoop向云上發(fā)展的方向,騰訊選擇了在一年多前正式加入Ozone,組了一支隊(duì)伍,利用騰訊的業(yè)務(wù)場(chǎng)景和數(shù)據(jù)規(guī)模,進(jìn)行協(xié)同開(kāi)發(fā),擴(kuò)展成數(shù)據(jù)湖存儲(chǔ),并推進(jìn)技術(shù)落地。
我們采訪了騰訊大數(shù)據(jù)海量存儲(chǔ)與數(shù)據(jù)湖研發(fā)負(fù)責(zé)人堵俊平,了解數(shù)據(jù)湖的發(fā)展和面臨的挑戰(zhàn),本文基于這次采訪。堵俊平曾在Hortonworks供職4年,負(fù)責(zé)YARN團(tuán)隊(duì),目前在騰訊負(fù)責(zé)騰訊大數(shù)據(jù)的海量存儲(chǔ)、海量計(jì)算以及數(shù)據(jù)湖等研發(fā)方向,有10多年的云計(jì)算與大數(shù)據(jù)產(chǎn)品研發(fā)經(jīng)驗(yàn)。
02數(shù)據(jù)湖是數(shù)據(jù)倉(cāng)庫(kù)的進(jìn)階
關(guān)于數(shù)據(jù)湖的定義確實(shí)是一個(gè)業(yè)界有較多爭(zhēng)議的地方。狹義的數(shù)據(jù)湖指的是數(shù)據(jù)湖存儲(chǔ),即可以存放海量數(shù)據(jù)(各種格式)的地方,包括Hadoop的文件系統(tǒng)HDFS或者云上的對(duì)象存儲(chǔ)系統(tǒng)S3都屬于這個(gè)范疇。
廣義的數(shù)據(jù)湖除了數(shù)據(jù)湖存儲(chǔ),還包括數(shù)據(jù)湖的管理和分析,即提供一整套工具,提供數(shù)據(jù)目錄(Data Catalog)服務(wù)以及統(tǒng)一的數(shù)據(jù)訪問(wèn)。
業(yè)界很重要的趨勢(shì),是從傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)向數(shù)據(jù)湖的方向在演進(jìn)。
傳統(tǒng)的數(shù)倉(cāng)體系
最早出現(xiàn)的是數(shù)據(jù)庫(kù)一體機(jī),是由單獨(dú)的硬件軟件所構(gòu)成,這種數(shù)倉(cāng)的問(wèn)題也很明顯,它需要一個(gè)專(zhuān)有的硬件設(shè)計(jì),你只要用的不是通用的硬件,一般成本都會(huì)比較高。
第二,它的擴(kuò)展性非常差,在往前推十年、二十年是可以的,但是在這樣的大數(shù)據(jù)時(shí)代,大家都不想隨意地拋棄掉自己的數(shù)據(jù)和數(shù)據(jù)資產(chǎn),所以一體機(jī)模式的數(shù)倉(cāng)肯定要被這個(gè)時(shí)代淘汰掉。
分布式的數(shù)倉(cāng)階段
這個(gè)階段也分兩塊,一塊是從分庫(kù)分表,從邏輯上把這個(gè)數(shù)據(jù)分成不同的模塊,放在不同的數(shù)據(jù)庫(kù)上面;另外一個(gè)方式,整個(gè)過(guò)程是通過(guò)MPP這個(gè)架構(gòu),通過(guò)一些獨(dú)立的數(shù)據(jù)庫(kù)組建出來(lái)MPP數(shù)據(jù)庫(kù),總體來(lái)說(shuō)MPP數(shù)據(jù)庫(kù)還是非常強(qiáng)大的。
但是MPP有一個(gè)限制,它不能支持海量的數(shù)據(jù),因?yàn)楦嗵砑庸?jié)點(diǎn),尤其是當(dāng)它的擴(kuò)展規(guī)模超過(guò)100個(gè)節(jié)點(diǎn)以上的時(shí)候,會(huì)發(fā)現(xiàn)大的任務(wù)幾乎無(wú)法執(zhí)行,因?yàn)樽盥墓?jié)點(diǎn)會(huì)拖累整個(gè)任務(wù)的執(zhí)行。
云原生的數(shù)倉(cāng)階段
這些adhoc分析的任務(wù)在業(yè)務(wù)不斷變化的情況下,包括經(jīng)歷波峰、波谷,對(duì)計(jì)算資源有不同的需求,這個(gè)時(shí)候云原生數(shù)倉(cāng)就會(huì)越來(lái)越流行,因?yàn)樗且粋€(gè)多集群的,彈性可伸縮的,并且支持海量的高并發(fā)。
這里說(shuō)回傳統(tǒng)的MPP數(shù)倉(cāng),還有個(gè)問(wèn)題,就是SQL并發(fā)能力跟單機(jī)數(shù)據(jù)庫(kù)是一樣的,因?yàn)椴l(fā)的所有SQL都要在每一臺(tái)機(jī)器上去執(zhí)行,無(wú)法突破單機(jī)數(shù)據(jù)庫(kù)的并發(fā)限制。
無(wú)論是傳統(tǒng)數(shù)倉(cāng)還是新型數(shù)倉(cāng),無(wú)論是類(lèi)似Teradata,還是MPP架構(gòu),或者是Oracle單機(jī)加強(qiáng)版架構(gòu),都是從數(shù)據(jù)庫(kù)發(fā)展而來(lái)的。使用的場(chǎng)景也主要是用格式化的數(shù)據(jù)。但數(shù)據(jù)湖并不要求很強(qiáng)的數(shù)據(jù)格式,非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)都行,也不要求數(shù)據(jù)入庫(kù)之前需要像數(shù)倉(cāng)那樣建立嚴(yán)格的一套ER模型,或者其他的范式模型。
數(shù)據(jù)可以很輕松進(jìn)入數(shù)據(jù)湖,用戶也可以延遲數(shù)據(jù)的采集、數(shù)據(jù)清洗、規(guī)范化的處理,可以把這些延遲到業(yè)務(wù)需求來(lái)了之后再進(jìn)行處理。這跟早期的數(shù)倉(cāng)思維就很不一樣,它相對(duì)于企業(yè)來(lái)說(shuō),靈活性比較強(qiáng)。
傳統(tǒng)的數(shù)倉(cāng),因?yàn)槟P头妒降囊?,業(yè)務(wù)不能隨便的變遷,變遷涉及到底層數(shù)據(jù)的各種變化。傳統(tǒng)數(shù)倉(cāng)沒(méi)法支持業(yè)務(wù)變化。對(duì)于數(shù)據(jù)湖來(lái)說(shuō),尤其像互聯(lián)網(wǎng)行業(yè)中新的應(yīng)用,不斷的發(fā)生變化,它的數(shù)據(jù)模型也不斷的變化。相對(duì)來(lái)說(shuō),數(shù)據(jù)湖就更加的靈活,能更快速的適應(yīng)上層數(shù)據(jù)應(yīng)用的變化。
數(shù)據(jù)湖的三個(gè)層次,分為數(shù)據(jù)庫(kù)等底層存儲(chǔ)、元數(shù)據(jù)管理、跨不同數(shù)據(jù)源的SQL引擎。數(shù)據(jù)湖也是數(shù)據(jù)倉(cāng)庫(kù)發(fā)展的高級(jí)階段,對(duì)于數(shù)倉(cāng)來(lái)說(shuō),數(shù)據(jù)湖有很多擴(kuò)展能力。數(shù)倉(cāng)解決的核心問(wèn)題,數(shù)據(jù)湖也解決了一遍,而且涉及面更廣。
比如說(shuō),數(shù)據(jù)庫(kù)的數(shù)據(jù)有對(duì)齊的要求,數(shù)據(jù)庫(kù)是面向應(yīng)用的,每個(gè)應(yīng)用可能需要一個(gè)數(shù)據(jù)庫(kù)。如果一個(gè)公司有幾十個(gè)應(yīng)用,就會(huì)有幾十個(gè)數(shù)據(jù)庫(kù)。幾十個(gè)數(shù)據(jù)庫(kù)之間怎么去連接分析、統(tǒng)一分析?是沒(méi)有辦法的。隨后就由數(shù)據(jù)庫(kù)發(fā)展成了一個(gè)數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)倉(cāng)庫(kù)不面向任何應(yīng)用。
但是,它對(duì)接到數(shù)據(jù)庫(kù),如果需要每天定時(shí)有些ETL的批處理的任務(wù),將不同應(yīng)用和數(shù)據(jù)匯總起來(lái),按照一些范式模型去做連接分析,得到一定時(shí)間段的總體數(shù)據(jù)視圖。這個(gè)前提是很多數(shù)據(jù)庫(kù)要給數(shù)倉(cāng)供應(yīng)數(shù)據(jù)。這些供應(yīng)數(shù)據(jù)是數(shù)據(jù)庫(kù)是表格化、規(guī)范化的方式。
但現(xiàn)在互聯(lián)網(wǎng)企業(yè)的應(yīng)用,大部分?jǐn)?shù)據(jù)不再來(lái)源于數(shù)據(jù)庫(kù)了,它可能來(lái)源于日志,比如用戶的行為日志,或機(jī)器的日志,可能來(lái)源于各種各樣的非格式化的數(shù)據(jù)。這時(shí)就必須要用數(shù)據(jù)湖這種方式??梢钥缭街皵?shù)倉(cāng)建模種種的約束,針對(duì)業(yè)務(wù)需求去做聯(lián)合分析和查詢。
對(duì)上層數(shù)據(jù)應(yīng)用所提供的接口更像是一個(gè)統(tǒng)一的界面,屏蔽了底層異構(gòu)數(shù)據(jù)源的差異,這也是大數(shù)據(jù)發(fā)展未來(lái)的重要趨勢(shì)。
03面向未來(lái),數(shù)據(jù)湖做出的變革
1.存儲(chǔ)計(jì)算分離
二十年前,Google用普通硬盤(pán)代替了昂貴的專(zhuān)有硬件設(shè)備方案,但當(dāng)時(shí)的網(wǎng)絡(luò)帶寬只有100M。為了快讀訪問(wèn),同時(shí)也創(chuàng)造出了計(jì)算和存儲(chǔ)耦合的架構(gòu)。Hadoop延續(xù)了計(jì)算存儲(chǔ)一體化的方式。
存儲(chǔ)計(jì)算一體化架構(gòu)的性能是經(jīng)過(guò)了優(yōu)化的:通過(guò)任務(wù)調(diào)度的方式,將計(jì)算調(diào)度到離數(shù)據(jù)更近的地方,訪問(wèn)更快也省資源。而云端的場(chǎng)景,采用的是計(jì)算和存儲(chǔ)分離的方式,第一性能可能不是最重要的點(diǎn),第二大家更考慮“彈性伸縮”,業(yè)務(wù)需要大的波峰時(shí)候,需要很多的資源,業(yè)務(wù)相對(duì)在低谷的時(shí)候,希望資源可以是收縮的。
Ozone這樣的下一代數(shù)據(jù)湖兼顧Hadoop的計(jì)算存儲(chǔ)一體化和云的彈性伸縮的優(yōu)勢(shì),一方面實(shí)現(xiàn)了邏輯上的計(jì)算存儲(chǔ)分離,同時(shí)在任務(wù)調(diào)度時(shí),又能做到數(shù)據(jù)和機(jī)架感知功能(data、rack awareness),能讓計(jì)算更貼近存儲(chǔ)。
這也是對(duì)傳統(tǒng)云存儲(chǔ)數(shù)據(jù)訪問(wèn)方式的一個(gè)變革。
如上圖所示傳統(tǒng)云訪問(wèn)方式,存儲(chǔ)計(jì)算是分離的,各種計(jì)算節(jié)點(diǎn)統(tǒng)一的通過(guò)接口,也即RESTful方式訪問(wèn)數(shù)據(jù)。之后,計(jì)算框架在基于Ozone計(jì)算存儲(chǔ)分離的條件下,可以把計(jì)算任務(wù)發(fā)送到臨近存儲(chǔ)的節(jié)點(diǎn)之上,通過(guò)調(diào)度計(jì)算而不是拖數(shù)據(jù)的方式達(dá)到高性能。
2.高性能高可靠的海量存儲(chǔ)
Hadoop的三副本保證了數(shù)據(jù)的可靠性,傳統(tǒng)的大數(shù)據(jù)的HDFS寫(xiě)的方式是依次寫(xiě)多個(gè)副本。在寫(xiě)性能優(yōu)化上,Ozone采用Raft分布式通訊協(xié)議,同時(shí)寫(xiě)幾個(gè)副本。這種局部創(chuàng)新,讓Ozone得到了很好的性能上的提升。
對(duì)于Hadoop存儲(chǔ)面向云的演化,還要看HDFS如何跟云上的對(duì)象存儲(chǔ)配合。在HDFS上,所有的元數(shù)據(jù)(命名空間、塊管理等)都會(huì)放在單個(gè)的NameNode節(jié)點(diǎn)上,如果考慮到同時(shí)并行的文件操作以及數(shù)據(jù)塊上報(bào)、RPC的響應(yīng)等因素,這個(gè)時(shí)候就會(huì)遭遇擴(kuò)展瓶頸。
如果集群存儲(chǔ)的是海量小文件,元數(shù)據(jù)體量會(huì)劇烈暴增,這個(gè)瓶頸期會(huì)更快到來(lái)。所以這種架構(gòu)不適合海量的高性能大數(shù)據(jù)處理。Ozone將元數(shù)據(jù)進(jìn)行了分散處理,規(guī)避了以前的問(wèn)題。并且云上的對(duì)象存儲(chǔ)方式,從硬件上和通用API訪問(wèn)的方式上,性價(jià)比比較高。
Ozone除了提供文件接口,為了跟云去做對(duì)接,還提供了對(duì)象存儲(chǔ),這樣就可以在云上部署類(lèi)似的系統(tǒng),對(duì)數(shù)據(jù)訪問(wèn)進(jìn)行無(wú)縫的集成,而且相比傳統(tǒng)的云端對(duì)象存儲(chǔ)還可以做高性能的拓?fù)涓兄?/p>
這相當(dāng)于在傳統(tǒng)的對(duì)象存儲(chǔ)和HDFS海量分布式文件存儲(chǔ)中做了取長(zhǎng)補(bǔ)短,也是一個(gè)重要的變革。
3.面向機(jī)器學(xué)習(xí)
現(xiàn)在面對(duì)機(jī)器學(xué)習(xí)和離線計(jì)算,跟大數(shù)據(jù)場(chǎng)景下處理的數(shù)據(jù)方式不一樣,現(xiàn)在需要去處理的可能是一張張圖片,或云語(yǔ)料文字,這種數(shù)據(jù)的顆粒度更小,不像傳統(tǒng)的大數(shù)據(jù)應(yīng)用那么集中。
這種海量小文件,不是傳統(tǒng)的HDFS所擅長(zhǎng)的,正好在Ozone里得到了解決,可以支撐小文件或?qū)ο蟠鎯?chǔ)方式,對(duì)機(jī)器學(xué)習(xí)的發(fā)展也有促進(jìn)作用。
現(xiàn)在深度學(xué)習(xí)和超大規(guī)模的神經(jīng)網(wǎng)絡(luò)潮流來(lái)了之后,更離不開(kāi)大量的數(shù)據(jù)。AI和大數(shù)據(jù)在技術(shù)層面上,兩個(gè)社區(qū)也開(kāi)始相互對(duì)接融合,不斷出現(xiàn)在大數(shù)據(jù)平臺(tái)做深度學(xué)習(xí)的AI框架,這樣的平臺(tái)能在底層有調(diào)度的能力,能同時(shí)調(diào)度好AI模型訓(xùn)練、推理以及做數(shù)據(jù)預(yù)處理的任務(wù)。
針對(duì)云和機(jī)器學(xué)習(xí)場(chǎng)景,Ozone項(xiàng)目具有很多特點(diǎn),包括:無(wú)限的擴(kuò)展能力,強(qiáng)一致性的對(duì)象存儲(chǔ)能力,與主流計(jì)算調(diào)度框架YARN和Kubernetes無(wú)縫對(duì)接,以及同時(shí)兼容對(duì)象存儲(chǔ)與HDFS API等。這些技術(shù)特性也決定了OZone的現(xiàn)在的發(fā)展方向。
堵俊平總結(jié)說(shuō):“大數(shù)據(jù)存儲(chǔ)已經(jīng)走到了一個(gè)新的階段,肯定會(huì)有新的革命性技術(shù)來(lái)替換它。”
04未來(lái)挑戰(zhàn)
數(shù)據(jù)湖的使用場(chǎng)景,是為了將各種數(shù)據(jù)匯集到一起,但現(xiàn)在的數(shù)據(jù)引擎太千差萬(wàn)別了,SQL引擎是一套,NoSQL包括Cassandra、HBase又是另一套東西,還有類(lèi)似Elasticsearch和圖計(jì)算等等。
很多引擎都自帶存儲(chǔ),將這些數(shù)據(jù)從不同的引擎里去拉通,堵俊平覺(jué)得是很有價(jià)值的。但是目前還沒(méi)有哪家公司有工具能完全做到,大部分是選擇少數(shù)幾個(gè)數(shù)據(jù)引擎去統(tǒng)一。
堵俊平表示“騰訊內(nèi)部有研發(fā)項(xiàng)目,來(lái)做類(lèi)似的事情。希望能夠把各種各樣的數(shù)據(jù)引擎和元數(shù)據(jù)都能夠做一個(gè)聚合和統(tǒng)一,這樣才能真正達(dá)到理想中的數(shù)據(jù)湖管理和統(tǒng)一數(shù)據(jù)分析的愿景”。