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