數據湖,大數據的下一個變革!

讓數據產生價值才叫成功。早期有不少的公司引入了Hadoop,將企業的各種結構化非結構化數據加載至Hadoop環境當中,想讓自己的數據發揮更大的價值,但這並不容易。2016年,Gartner公司估計有60%的大數據項目遭遇失敗。一年之後,他們表示60%的估計太過保守,這個數字應該是85%。

大數據存儲已經走到了一個新的階段,肯定會有新的革命性技術來替換它。

大數據的未來

前十多年,大數據的發展主要集中在技術框架上,社區出現了一系列優秀的作品,如最開始引領大數據風潮的 Hadoop,到計算引擎Spark、Flink ,消息中間件 Kafka ,以及資源調度器 Kubernetes 等等,大數據領域的技術框架已經比較成熟。

通過開源架構策略,現代化數字企業逐漸意識到自己的目標是通過業務實現數據的價值化,未來將會把更多的精力投向研究底層數據消費和上層的產品應用。

2019年6月,谷歌以 26 億美元收購了數據分析公司 Looker。同月,Salesforce 宣佈以 157 億美元收購BI企業Tableau 。2019年9月,Cloudera 宣佈收購商業智能實時分析廠商 Arcadia Data。這些收購案例都說明企業的目標開始轉向解讀所積累的海量數據。

賦能業務,快速應對挑戰,正是數據湖所能提供的。數據湖的概念,最早是在2011年由Dan Woods提出,”是一個集中化存儲海量的、多個來源,多種類型數據,並可以對數據進行快速加工,分析的平臺,本質上是一套先進的企業數據架構“。例如在社交廣告中的用戶畫像,需要行爲日誌等非結構化數據,經過層層數據加工形成業務價值。以後也會延伸到圖像、語音等類型。這些就是數據湖能提供的特別優勢。

Apache Ozone項目是由大數據公司Hortonworks貢獻出來的,最初是爲了解決Hadoop系統中的對象存儲問題。面對Hadoop向雲上發展的方向,騰訊選擇了在一年多前正式加入Ozone,組了一支隊伍,利用騰訊的業務場景和數據規模,進行協同開發,擴展成數據湖存儲,並推進技術落地。InfoQ採訪了騰訊大數據海量存儲與數據湖研發負責人堵俊平,瞭解數據湖的發展和麪臨的挑戰,本文基於這次採訪。堵俊平曾在Hortonworks供職4年,負責YARN團隊,目前在騰訊負責騰訊大數據的海量存儲、海量計算以及數據湖等研發方向,有10多年的雲計算與大數據產品研發經驗。

今年10月,他將在QCon全球軟件開發大會(上海站)2019作題爲《OZone - 下一代數據湖存儲》的演講。

數據湖是數據倉庫的進階

關於數據湖的定義確實是一個業界有較多爭議的地方。狹義的數據湖指的是數據湖存儲,即可以存放海量數據(各種格式)的地方,包括Hadoop的文件系統HDFS或者雲上的對象存儲系統S3都屬於這個範疇。廣義的數據湖除了數據湖存儲,還包括數據湖的管理和分析,即提供一整套工具,提供數據目錄(Data Catalog)服務以及統一的數據訪問。

業界很重要的趨勢,是從傳統的數據倉庫向數據湖的方向在演進。

1.傳統的數倉體系

最早出現的是數據庫一體機,是由單獨的硬件軟件所構成,這種數倉的問題也很明顯,它需要一個專有的硬件設計,你只要用的不是通用的硬件,一般成本都會比較高。第二,它的擴展性非常差,在往前推十年、二十年是可以的,但是在這樣的大數據時代,大家都不想隨意地拋棄掉自己的數據和數據資產,所以一體機模式的數倉肯定要被這個時代淘汰掉。

2.分佈式的數倉階段

這個階段也分兩塊,一塊是從分庫分表,從邏輯上把這個數據分成不同的模塊,放在不同的數據庫上面;另外一個方式,整個過程是通過MPP這個架構,通過一些獨立的數據庫組建出來MPP數據庫,總體來說MPP數據庫還是非常強大的。但是MPP有一個限制,它不能支持海量的數據,因爲更多添加節點,尤其是當它的擴展規模超過100個節點以上的時候,會發現大的任務幾乎無法執行,因爲最慢的節點會拖累整個任務的執行。

3.雲原生的數倉階段

這些adhoc分析的任務在業務不斷變化的情況下,包括經歷波峯、波谷,對計算資源有不同的需求,這個時候雲原生數倉就會越來越流行,因爲它是一個多集羣的,彈性可伸縮的,並且支持海量的高併發。這裏說回傳統的MPP數倉,還有個問題,就是SQL併發能力跟單機數據庫是一樣的,因爲併發的所有SQL都要在每一臺機器上去執行,無法突破單機數據庫的併發限制。

無論是傳統數倉還是新型數倉,無論是類似Teradata,還是MPP架構,或者是Oracle單機加強版架構,都是從數據庫發展而來的。使用的場景也主要是用格式化的數據。但數據湖並不要求很強的數據格式,非結構化、半結構化數據都行,也不要求數據入庫之前需要像數倉那樣建立嚴格的一套ER模型,或者其他的範式模型。

數據可以很輕鬆進入數據湖,用戶也可以延遲數據的採集、數據清洗、規範化的處理,可以把這些延遲到業務需求來了之後再進行處理。這跟早期的數倉思維就很不一樣,它相對於企業來說,靈活性比較強。傳統的數倉,因爲模型範式的要求,業務不能隨便的變遷,變遷涉及到底層數據的各種變化。傳統數倉沒法支持業務變化。對於數據湖來說,尤其像互聯網行業中新的應用,不斷的發生變化,它的數據模型也不斷的變化。相對來說,數據湖就更加的靈活,能更快速的適應上層數據應用的變化。

數據湖的三個層次,分爲數據庫等底層存儲、元數據管理、跨不同數據源的SQL引擎。數據湖也是數據倉庫發展的高級階段,對於數倉來說,數據湖有很多擴展能力。數倉解決的核心問題,數據湖也解決了一遍,而且涉及面更廣。比如說,數據庫的數據有對齊的要求,數據庫是面向應用的,每個應用可能需要一個數據庫。如果一個公司有幾十個應用,就會有幾十個數據庫。幾十個數據庫之間怎麼去連接分析、統一分析?是沒有辦法的。隨後就由數據庫發展成了一個數據倉庫,數據倉庫不面向任何應用。但是,它對接到數據庫,如果需要每天定時有些ETL的批處理的任務,將不同應用和數據彙總起來,按照一些範式模型去做連接分析,得到一定時間段的總體數據視圖。這個前提是很多數據庫要給數倉供應數據。這些供應數據是數據庫是表格化、規範化的方式。

但現在互聯網企業的應用,大部分數據不再來源於數據庫了,它可能來源於日誌,比如用戶的行爲日誌,或機器的日誌,可能來源於各種各樣的非格式化的數據。這時就必須要用數據湖這種方式。可以跨越之前數倉建模種種的約束,針對業務需求去做聯合分析和查詢。對上層數據應用所提供的接口更像是一個統一的界面,屏蔽了底層異構數據源的差異,這也是大數據發展未來的重要趨勢。

面向未來,數據湖做出的變革

存儲計算分離

二十年前,Google用普通硬盤代替了昂貴的專有硬件設備方案,但當時的網絡帶寬只有100M。爲了快讀訪問,同時也創造出了計算和存儲耦合的架構。Hadoop延續了計算存儲一體化的方式。

存儲計算一體化架構的性能是經過了優化的:通過任務調度的方式,將計算調度到離數據更近的地方,訪問更快也省資源。而云端的場景,採用的是計算和存儲分離的方式,第一性能可能不是最重要的點,第二大家更考慮”彈性伸縮“,業務需要大的波峯時候,需要很多的資源,業務相對在低谷的時候,希望資源可以是收縮的。

Ozone這樣的下一代數據湖兼顧Hadoop的計算存儲一體化和雲的彈性伸縮的優勢,一方面實現了邏輯上的計算存儲分離,同時在任務調度時,又能做到數據和機架感知功能(data、rack awareness),能讓計算更貼近存儲。

這也是對傳統雲存儲數據訪問方式的一個變革

如上圖所示傳統雲訪問方式,存儲計算是分離的,各種計算節點統一的通過接口,也即RESTful 方式訪問數據。之後,計算框架在基於Ozone計算存儲分離的條件下,可以把計算任務發送到臨近存儲的節點之上,通過調度計算而不是拖數據的方式達到高性能。

高性能高可靠的海量存儲

Hadoop的三副本保證了數據的可靠性,傳統的大數據的HDFS寫的方式是依次寫多個副本。在寫性能優化上,Ozone採用Raft分佈式通訊協議,同時寫幾個副本。這種局部創新,讓Ozone得到了很好的性能上的提升。

對於 Hadoop 存儲面向雲的演化,還要看 HDFS 如何跟雲上的對象存儲配合。在HDFS上,所有的元數據(命名空間、塊管理等)都會放在單個的NameNode節點上,如果考慮到同時並行的文件操作以及數據塊上報、RPC的響應等因素,這個時候就會遭遇擴展瓶頸。如果集羣存儲的是海量小文件,元數據體量會劇烈暴增,這個瓶頸期會更快到來。所以這種架構不適合海量的高性能大數據處理。Ozone將元數據進行了分散處理,規避了以前的問題。並且雲上的對象存儲方式,從硬件上和通用API訪問的方式上,性價比比較高。Ozone除了提供文件接口,爲了跟雲去做對接,還提供了對象存儲,這樣就可以在雲上部署類似的系統,對數據訪問進行無縫的集成,而且相比傳統的雲端對象存儲還可以做高性能的拓撲感知。

這相當於在傳統的對象存儲和HDFS海量分佈式文件存儲中做了取長補短,也是一個重要的變革。

面向機器學習

現在面對機器學習和離線計算,跟大數據場景下處理的數據方式不一樣,現在需要去處理的可能是一張張圖片,或雲語料文字,這種數據的顆粒度更小,不像傳統的大數據應用那麼集中。這種海量小文件,不是傳統的HDFS所擅長的,正好在Ozone裏得到了解決,可以支撐小文件或對象存儲方式,對機器學習的發展也有促進作用。

現在深度學習和超大規模的神經網絡潮流來了之後,更離不開大量的數據。AI和大數據在技術層面上,兩個社區也開始相互對接融合,不斷出現在大數據平臺做深度學習的AI框架,這樣的平臺能在底層有調度的能力,能同時調度好AI模型訓練、推理以及做數據預處理的任務。

針對雲和機器學習場景,Ozone項目具有很多特點,包括:無限的擴展能力,強一致性的對象存儲能力,與主流計算調度框架 YARN 和 Kubernetes 無縫對接,以及同時兼容對象存儲與 HDFS API 等。這些技術特性也決定了OZone的現在的發展方向。

堵俊平總結說:”大數據存儲已經走到了一個新的階段,肯定會有新的革命性技術來替換它。“

未來挑戰

數據湖的使用場景,是爲了將各種數據彙集到一起,但現在的數據引擎太千差萬別了,SQL引擎是一套,NoSQL包括Cassandra、HBase又是另一套東西,還有類似Elasticsearch和圖計算等等。很多引擎都自帶存儲,將這些數據從不同的引擎裏去拉通,堵俊平覺得是很有價值的。但是目前還沒有哪家公司有工具能完全做到,大部分是選擇少數幾個數據引擎去統一。堵俊平表示”騰訊內部有研發項目,來做類似的事情。希望能夠把各種各樣的數據引擎和元數據都能夠做一個聚合和統一,這樣才能真正達到理想中的數據湖管理和統一數據分析的願景“。

基礎設施技術是業務快速發展的基石,在QCon上海2019的演講中,堵俊平老師將介紹 Ozone 的架構、技術、場景以及騰訊大數據的實踐,點擊瞭解詳情。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章