AWS數據湖十年,雲計算老大哥的磨刀之路

從2006年上線至今,AWS已經走過了十幾個年頭。亞馬遜在一個周圍懵懂的時代裏,拉開了雲計算的大幕。AWS位於Gartner魔力象限雲計算的領導者座標系,和競爭對手的差距拉的比較大,它在前瞻性上的優勢,一直遙遙領先。

數據湖,也是亞馬遜發展了近十年的一項技術。AWS每一次變革和成長,都在雲計算的歷史中寫下了自己的足跡,成績令人矚目。而云上數據湖,經過十年的醞釀,將會產生什麼樣的推動力呢?

什麼是數據湖?

AWS的定義也不止一個,在衆多的AWS re:Invent演講中,我們看到了以下定義:

  1. re:Invent 2016:What is a Data Lake? A “Data Lake” is a repository that holds raw data in its native format until it is needed by down stream analytics processes.
  2. re:Invent 2018:Defining the AWS Data Lake Data lake is an architecture with a virtually limitless centralized storage platform capable of categorization, processing, analysis, and consumption of heterogeneous datasets。

對於數據湖的定義,業界並沒有完全一致的說法。大多數人提起數據湖,也會或多或少的提到Pentaho公司的創始人詹姆斯·狄克遜(James Dixon),在2010年的時候,他在他的一篇名爲”Hadoop和數據湖“的博客中寫道:”我們創造了一個新概念:數據湖。數據湖是一種比數據集市更自然的數據存儲理念,即在系統或存儲庫中以自然格式存儲數據的方法。“

總的來說,AWS認爲”數據湖“需滿足以下特徵

  • 集中式存儲,滿足”a single source of truth“ 唯一真知來源原則
  • 收集和存儲任何類型的數據,包括結構化、半結構化、非結構化以及原始數據
  • 快速輕鬆地執行新類型的數據分析
  • schema-on-read 讀時校驗模式,而非寫時模式
  • 低成本存儲
  • 計算和存儲分離
  • 保護數據並防止未經授權的訪問

數據湖的理念非常適合現在的互聯網業務。

大數據不僅體現在數據體量爆炸性增長,而且結構化數據、非結構化數據、半結構化數據混存,因此現在的各種互聯網業務產生的日誌文件、圖像文件、點擊流、社交媒體、物聯網傳感器等等,都可以以原始形式放入數據湖中,同時也屏蔽了底層異構數據源。這也是傳統數倉做不到的。

數據可以很輕鬆進入數據湖,用戶也可以延遲數據的採集、數據清洗、規範化的處理,在讀取的時候再靈活地以各種方式分析數據,得到運營報告,或者能執行實時分析和機器學習任務從而得到關於未來的預測結果。傳統的數倉,因爲模型範式的要求,業務不能隨便的變遷,變遷涉及到底層數據的各種變化,沒法支持業務變化。對於數據湖來說,尤其像互聯網行業中新的應用,不斷的發生變化,它的數據模型也不斷的變化。相對來說,數據湖就更加的靈活,能更快速的適應上層數據應用的變化。

現在很多企業都建立了用於報告和分析目的的數據倉庫,使用各種來源的數據,包括自己的交易處理系統和其他數據庫,但建立和運行數據倉庫和大數據框架既複雜又昂貴。當數據量增長或者需要向更多用戶提供分析和報告時,如果不想在昂貴的升級過程上投入過多人力和精力,就需要選擇更現代的架構設計以實現更低成本的存儲和查詢。

從HDFS到S3的核心轉換

2006年,AWS正式推出了S3(Simple Storage Service),亞馬遜的第一個雲產品。Amazon S3從此已成爲事實上的雲存儲標準。

2006年,Hadoop推出。HDFS是分佈式存儲理念的產物,MapReduce是Hadoop分佈式計算框架的組成部分。HDFS提供跨集羣中多個計算節點的數據分發,非常適合管理不同類型的數據源。因此,它爲企業數據湖奠定了基礎。

爲了兼容Hadoop集羣,AWS在2009年推出了Amazon Elastic MapReduce(EMR)數據湖架構,以跨EC2實例集羣自動置備HDFS。在當時,這曾是企業在AWS之上構建數據湖的最佳選擇。

EMR包含了幾乎所有的Hadoop生態體系中的核心組件,能夠滿足用戶各種各類的數據分析需求。在運維層面,AWS EMR幫助用戶自動完成了計算資源準備,操作系統安裝,Hadoop組件安裝,組件配置等一系列繁瑣重複的工作。

EMR更重要的創新,是提出計算與存儲分離思想, 以S3存儲作爲底層提供與Hadoop生態計算框架無縫集成的方案作爲 HDFS的替代,給出了不一樣的可行方案。因爲S3限於5 GB對象,企業需要將HDFS跨多個具有附加Elastic Block Store卷的EC2實例分佈,企業纔可以創建更大的數據湖。此後,Amazon擴展了S3以支持5 TB對象,用戶可以將數據聚合到PB級的存儲桶中。這使得用戶更容易在S3上而不是HDFS上構建更大的數據湖。

Hadoop採用了存儲計算一體化的方法。因爲當時主流網絡帶寬只有100Mb,通過網絡遠程訪問數據實在是太慢了。爲了解決數據的快速訪問,Google 創造性地提出來了計算和存儲耦合的架構,Hadoop延續了這個架構。但是十年過去後,網絡帶寬增長了一百倍,已經達到了10G以上,IO不再是大數據的瓶頸,計算纔是,計算存儲分離帶來的彈性擴展和成本優勢漸漸明顯。

大數據和雲計算,在未來的發展方向上,終於通過”數據湖“融合到了一起。

AWS的雲服務天生具有存儲計算分離的特性,且能自動伸縮CPU和存儲資源。雲的優勢隨着時間的流逝慢慢呈現出來,AWS data lake存儲的核心也慢慢轉爲S3。

之後AWS於2012年推出了Redshift ,業界第一款雲端MPP 架構的數據倉庫雲服務。隨着產品的迭代,今天的Amazon Redshift可以通過Spectrum引擎將查詢擴展到 Amazon S3 數據湖,帶來了EB 級數據湖分析:Redshift Spectrum 是 Redshift 的一種功能,可以幫助用戶針對 Amazon S3 中的 EB 級數據運行查詢,無需加載或轉換任何數據。用戶因此可以將 S3 用作高度可用、安全且划算的數據湖,以開放數據格式存儲無限數據。

AWS數據湖生態體系

數據湖的數據分析完整流程有收集,存儲,分析,應用四個大的階段,這四個階段也是數據湖建設的必要路徑。他們之間沒有絕對的先後次序,沒有必要等所有數據都收集好了纔開始後面的步驟,在建設階段的初期應該就要搭建好基本的數據分析管道,後期在此基礎之上再根據數據分析業務的需求進行豐富和增加。AWS數據湖的建設過程中各個階段所採用的技術生態系統如下圖所示:

從圖中可以看出除了主要的四個階段功能服務外,AWS數據湖還爲用戶提供了一系列的管理工具, 以鬆耦合的方式與S3作爲核心存儲的數據湖緊密集成,提供企業級整體方案。

用戶可以利用Glue Catalog、Macie,Dynamodb,Amazon ES等工具來進行元數據管理,把數據都按照層級和業務上的邏輯關係組織起來,方便後續的分析使用。

在對外提供數據分析服務能力時,API Gateway可以幫助用戶以API的方式輕鬆暴露數據湖內部的數據和處理能力,同時搭配IAM和Cognito完成用戶的身份認證和權限控制。

在安全方面,Security Token Service負責提供臨時的訪問憑證,CloudWatch則幫助監控數據湖的運行狀況,事後審計的工作則有CloudTrail來完成。同時用戶也可以使用KMS來託管或者生成密鑰來對數據湖的數據進行加密保護。

不難看出,隨着時間的演變, Amazon S3 已經作爲AWS數據湖方案的存儲核心服務。在計算與存儲分離理念的基礎上,AWS的其它服務都採用了鬆耦合的設計與S3在數據湖場景進行了緊密集成與創新。這也包括數據湖構建必不可少的計算集羣。

EMR作爲第一代圍繞Hadoop生態計算組件設計的數據湖計算服務採取了“託管平臺” 的設計定位,服務依託與底層服務器集羣構建,意在解決開源生態集羣部署與維護升級繁雜的痛點。隨着雲計算的進步與互聯網技術的潮流演進,無服務器這一理念逐漸在被大家知道並獲得廣泛認可,數據湖的計算資源也經歷了相同的演進路線,從集羣化到無集羣化。

爲了提升效率,降低複雜度。在面對數據湖的典型ETL和Ad-hoc Query場景時,AWS推出了Glue和Athena兩項重量級服務。他們都是基於無服務器架構的託管服務,用戶不需要關心後臺的計算和存儲資源,只要通過訪問接口進行操作即可。

其中Glue負責數據的元數據管理以及ETL的工作,用戶定義好crawler程序,程序會解析存儲在S3上的文件內容並推斷出相應的Schema,自動完成元數據的獲取,並且該元數據可以共享給Redshift,Athena,EMR等數據服務使用,幫助它們快速地瞭解數據湖中數據的結構並加以使用。隨後通過Glue提供的腳本或者是自己編寫的腳本(支持python和Scala)來完成數據的抽取,轉換和加載。

Athena主要應對Ad-hoc Query類需求,用戶通過它運行標準的SQL語句就能直接查詢存儲在S3中的數據,而不用構建和管理底層的計算資源,同時也只需要爲查詢期間使用的資源付費。結合到列式存儲,分區,壓縮等手段,能進一步提高Ad-hoc Query的性能並降低成本。此外Athena還可以對接QuickSight完成多種類型的數據可視化任務。

2018年,AWS 在re:Invent會議上首次宣佈了雲數據湖託管Lake Formation,並於今年8月8日正式投入商業使用。AWS Lake Formation簡化了數據湖的創建和管理工作,以前搭建完整的數據湖需要數月的時間,通過Lake Formation可以很好的簡化搭建操作。且無需通過用戶、組或存儲桶策略授予 S3 訪問權限,它提供了一個集中式控制檯,用於授予和審覈對數據湖的訪問權限。

至此,AWS形成了一套比較成熟完整的數據湖技術體系。

數據湖未來進展

我們每天產生的數據中,有90%的數據屬於非結構化數據,並且每年以55%至65%的速度在增長。這些數據以前難以存儲、搜索和分析,現在利用數據湖和AI技術,才慢慢呈現出作用。尤其是AWS提供了一系列的機器學習服務,以及可以輕鬆地在數據湖上運行的工具,爲用戶提供諸如個性化建議,容量規劃,供應鏈預測等,從而使企業在激烈的競爭環境中進一步得到發展,數據湖的作用在未來也肯定越來越重要。

目前已經有了一些應用AWS數據湖的案例,比如,用戶超三千萬的小紅書使用數據湖存儲海量的日誌數據和來自社區的圖片、評論、表情等非結構化數據來分析用戶的喜好。千萬用戶級別的流利說通過使用數據湖,建立了大型“中國人英語語音數據庫”,在此基礎上開發英語口語評測、英語寫作打分引擎和深度自適應學習系統。

在未來,AWS計劃提供更好的可靠性,更好的擴展性,更安全合規的滿足企業級需求,並做到與開源社區各種計算框架更好的集成。 幾年以後可能Hadoop退出歷史舞臺,不再是主流計算框架,被spark/flink替代,應用調度yarn被k8s替換,未來新的框架肯定會兼容S3,S3作爲數據湖繼續提供強大的存儲將會是常態。

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