隨著云計算和大數(shù)據(jù)的普及,越來越多的IT公司選擇將自己的大數(shù)據(jù)解決方案部署在云上面。云計算和大數(shù)據(jù)的結合帶來了什么便利呢?一個典型的大數(shù)據(jù)云又是如何設計和部署的呢?
下面我們以Google Cloud作為例子,講解在工業(yè)界里邊是如何實際應用云。
Google Cloud
Google作為分布式系統(tǒng)和大數(shù)據(jù)的領導者,開發(fā)了眾多跨時代的產(chǎn)品。幾乎每一個Google的產(chǎn)品,寫出一篇paper就可以創(chuàng)造一個開源社區(qū)的。
比如MapReduce發(fā)布之后,開源社區(qū)根據(jù)Google的一篇論文開發(fā)出的Hadoop,BigTable發(fā)布之后,開源社區(qū)又進一步開發(fā)出Hbase等等??梢哉f沒有Google的創(chuàng)新,就沒有現(xiàn)在開源社區(qū)的繁榮。
而Google又把自家的產(chǎn)品,都放在Google Cloud上面,形成了豐富多彩的產(chǎn)品線,吸引了非常多的大大小小的公司如Snapchat等來使用。
Google App Engine (GAE)
我們都知道Web項目都需要大量的Web Service以及為之服務的運維系統(tǒng)。Google在云計算領域首次嘗試的就是Google App Engine (GAE),相對比當時的Amazon EC2,GAE只需開發(fā)者上傳軟件代碼,其他部署將由Google完成。
用戶只需要熟悉后端語言開發(fā)即部署大規(guī)模的集群。Google今年更是推出了GAE Flex,可以幫助用戶實現(xiàn)auto-scaling,用戶不再需要自己部署負載均衡的服務了。大部分中小企業(yè)的網(wǎng)站幾乎都可以無縫銜接到GAE上。
BigTable
BigTable的底層是注明的Google File System (GFS),他實現(xiàn)了數(shù)據(jù)中心級別的可靠的分布式存儲。
也是最早的NoSQL數(shù)據(jù)庫的一種。各種網(wǎng)站如果有需要永久存儲的數(shù)據(jù),一般都可以存放在BigTable里邊,Google Cloud會自動幫你做replication,分布在不同的服務器節(jié)點里邊,這樣實現(xiàn)了可靠的分布式存儲。
Dataflow
Dataflow的底層實現(xiàn)利用了大名鼎鼎的MapReduce的升級版Flume。
Dataflow特別方便進行大量的批處理,舉個例子來說,比如要把所有的用戶數(shù)據(jù)里邊的格式都升級一遍,用GAE或者其他service是很難實現(xiàn)的。
Dataflow也提供了特別多的接口,諸如BigQuery, Datastore, BigTable等等也是為了方便各種批處理。最近Google還提供了streaming(流服務)版本的Dataflow,可以實現(xiàn)持續(xù)不斷的批處理。
BigQuery
BigQuery相當于是Cloud version的SQL,可以方便使用各種復雜的查詢語言查找數(shù)據(jù)。這個尤其適合數(shù)據(jù)分析師進行各種數(shù)據(jù)分析,幾乎各種SQL的語法都是支持的。
但是BigQuery在scaling上并不如BigTable,并不是面向用戶的,所以并不適合直接用來存儲用戶數(shù)據(jù)。只適合做一些離線分析,數(shù)據(jù)來源很多都是Dataflow從BigTable里邊dump出來的一些拷貝。
其他服務
Google Cloud還有非常多的其他服務,諸如支持消息隊列處理的Pubsub,支持緩存的Memchace,支持Monitoring的Stackdriver,等等完整的構成了一個企業(yè)數(shù)據(jù)云所必須的各種服務,可以滿足大到Snapchat級別,小到各種startup的不同業(yè)務需求。