AWS是個很有意思的、經過體系化思考的生態系統,最近看了一下跟大數據相關的幾個AWS服務:S3, Athena, Redshift, EMR, Glue等等。這里從數據存儲和計算引擎的角度分析一下AWS的這幾個服務。
拿馬老板的話說這是個DT的時代,DT時代什么最重要? 當然是數據了。但是數據本身并不會帶來價值,從數據里面得到的對業務的洞見才是。為了要能從數據中獲得洞見,我們要把數據保存下來對數據進行各種加工、處理、分析、生成報表等等,這就涉及到了數據存儲和計算。
在開源界大數據存儲的事情標準是 HDFS, 計算引擎則比較豐富: MapReduce, Spark, Flink等等,隨著服務器間帶寬越來越大,特別是400Gbps網絡的出現,存儲和計算分離越來越成為趨勢。 這樣的好處很多,比如:
· 一份數據不用因為計算引擎的不同而需要復制、搬運到多個地方,節省存儲和計算成本。
· 存儲和計算分離之后,存儲跟計算可以各自發展自己的極致,一個小的模塊比大的模塊更容易產生創新。
· 存儲和計算分離之后,我們可以根據不同場景選擇不同的引擎,而不需要綁定到一個特定的引擎。
而在AWS的世界里,S3(Simple Storage Service)某種程度上扮演了HDFS的角色,因為它能存儲海量的數據,還足夠便宜。而計算引擎的服務則有:Athena, Redshift, EMR等等。
存儲
S3是AWS上的文件存儲系統,它支持對海量的數據進行存儲,從AWS官網對它的描述就可以看出它有多霸氣:
Amazon Simple Storage Service (Amazon S3) is storage for the Internet. You can use Amazon S3 to store and retrieve any amount of data at any time, from anywhere on the web.
三個Any: Any Amount, Any Time, Any Where, 太霸氣了。一般來說用戶會把那些不常用的冷數據保存到S3上面。
計算引擎
先說說Athena。AWS對Athena的定位是一個”Query Service”, 它主要針對S3上存儲的數據進行即席查詢,它是一個Serverless的服務,你不需要去維護一個集群,你只需要基于你的S3的數據定義一個table,然后就可以利用ANSI SQL對這個“表”(其實就是S3)上的數據進行各種分析查詢了。不過Amazon提供的Web界面真的是挺樸素的,跟我們公司內部做的數據查詢工具相比太樸素了:
Athena的樸素頁面
之前看過Google BigQuery的查詢界面,也是類似這樣的,非常的樸素。我想這里的原因可能在于Amazon、Google這些國外的技術大公司不想投入太多精力在偏頁面端的用戶體驗優化上,用戶如果想要更好看更好用的查詢界面讓用戶自己基于Athena的SDK自己去開發。
Redshift是一個基于PostgreSQL 8.0.2的一個數據倉庫的解決方案,跟Athena相比,它更像傳統的數倉,因為你需要把數據從外部加載到Redshift里面來。它不是一個Serverless的服務,你需要維護一個集群。Redshift Spectrum是Redshift之上更高階的功能,它支持查詢S3上的數據,而且可以把S3上的數據與Redshift里面的數據進行JOIN -- 部分覆蓋了Athena的功能。