AWS上的計算和儲存服務
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的功能。