最近半年,基本做的事情是在阿里ODPS平臺運行社區(qū)的代碼,比如spark及hadoop等。事情并沒有太多的高深莫測的,想想基本是為了解決用戶的需求,本文主要梳理下我半年一些事情上的思考。
自主研發(fā) VS 開源系統(tǒng)
我的觀點始終保持不變的,當(dāng)能用社區(qū)產(chǎn)品解決問題的,完全就可以用社區(qū)的產(chǎn)品,最近1年,spark、docker等技術(shù)發(fā)展迅速,完全沒有必要去自己寫一套。我認為有兩個情況下需要自己寫,第一,目前的產(chǎn)品無法滿足現(xiàn)在的需求,在阿里(就目前),比如:支付寶大規(guī)模圖數(shù)據(jù)庫,阿里媽媽、搜索場景下超高緯度特征機器學(xué)習(xí)。目前內(nèi)部用開源的產(chǎn)品做了很多嘗試,均沒有很好解決問題,最后還是自研一套平臺(當(dāng)然實現(xiàn)也不是完全自己搞,部件能用開源的還是用開源)。第二,為了領(lǐng)先研究,有革命性的,比如:量子計算,GPU計算,也就是從理論開始,并沒有特別的業(yè)務(wù)場景,最后能跨越一個時代的,不過這個特別難,基本也只有公司營收沒有問題才可能成立研究院之類的部門。目前在大數(shù)據(jù)領(lǐng)域,華為、星壞,甚至國外的微軟、IBM之類的巨頭都基本是投資hadoop之類的軟件棧,可以說大數(shù)據(jù)系統(tǒng)是你中有我,我中有你的,小公司還是請直接用hadoop或者用大公司的產(chǎn)品,大公司還是用了hadoop,阿云當(dāng)年投資做飛天的時候,hadoop還是嬰兒,只是如今發(fā)展實在太快。
sql vs sql+類似spark用scala等作為編程語言
微軟開發(fā)出了T-SQL或者類似的sql script,用戶可以用其實現(xiàn)自己的業(yè)務(wù)邏輯,優(yōu)化層可以優(yōu)化。如果是spark之類的,那么優(yōu)化層不能感知udf層面的邏輯,無法優(yōu)化,其二中間的會有串行執(zhí)行的部分,不能做到最優(yōu)。如果用戶都能用sql script實現(xiàn)業(yè)務(wù)邏輯,那么怎么講都能做到最優(yōu)。
不過目前社區(qū)的spark、hadoop、flink均不是sql script去實現(xiàn),只能說盡量能讓優(yōu)化層優(yōu)化。為什么呢?可能因為程序員喜歡用java、python之類的語言,還是因為開始業(yè)務(wù)系統(tǒng)使用java、python之類的,所以順理成章就這么去實現(xiàn)開發(fā)了。當(dāng)然是否可以造一個大數(shù)據(jù)語言,讓大家用此語言,優(yōu)化層直接就是包含解釋器了。理論上肯定是可以的,不過難度確實也很不小,關(guān)鍵還是需要獲得市場的認可。有句話說,最流行的未必是最優(yōu)的。另外,最優(yōu)帶來的成本誰也說不清楚。
統(tǒng)一分析型引擎
spark、flink等產(chǎn)品作為統(tǒng)一引擎,能處理ETL、流、計算學(xué)習(xí)、圖計算等各種各樣的場景,這個是甚好的。很多業(yè)務(wù)為了解決問題往往需要投資很多技術(shù),產(chǎn)品。如:機器學(xué)習(xí)用mpi,你得去學(xué)習(xí)寫c/c++ , 流式計算得學(xué)習(xí)jstorm,一套新的api。這個還不是最大的問題,最大的問題往往是不同產(chǎn)品之間往往需要銜接,數(shù)據(jù)需要用戶感知的落地,從而系統(tǒng)做起來很復(fù)雜。不過對于一些場景,往往是一些特別的場景還是需要專有系統(tǒng)的,如:低延遲的流 高緯度計算 特別的性能的機器學(xué)習(xí)等。
統(tǒng)一OLTP與OLAP
目前星壞也是號稱可以在大數(shù)據(jù)引擎上支持傳統(tǒng)數(shù)據(jù)庫的語法的,甚至可以支持部分的事務(wù)。阿里內(nèi)部一些產(chǎn)品也在嘗試統(tǒng)一。目前OLTP與OLAP的界限也在慢慢模糊,OLTP也可以支持快上TB的數(shù)據(jù)查詢。一般有兩個做法,一套語法,兩個不同的實現(xiàn),也就是ifelse,對于用戶看起來可能是一個。另外就是完全一套代碼實現(xiàn),此我還沒有看到。對于第一種,可能的實現(xiàn)方案基本是底層用mysql等傳統(tǒng)數(shù)據(jù)庫作為存儲,上層有DAG等決策調(diào)度,做到能跨機join。不過目前明確是OLAP不僅僅就是SQL,也許這個事情能解決一部分的需求,但是不可能完全替代傳統(tǒng)的hadoop的。
自建hadoop、EMR、ODPS
目前阿里也是支持EMR的,在阿里云官網(wǎng)都有EMR、ODPS的產(chǎn)品介紹。一般來看,EMR、ODPS肯定比自建hadoop成本低的,因為從原理來講是彈性的,且自己都無需運維,除非公司太黑,收費過高。EMR就是hadoop生態(tài)的托管服務(wù),用戶可以申請多少個虛擬機,啥時候多啥時候少來彈性計算的。ODPS是阿里巴巴自主研發(fā)的產(chǎn)品,ODPS是在物理機器上,用戶租用多少cpu,多少內(nèi)存為資源,在運行中也可以調(diào)整quota來實現(xiàn)彈性計算的。目前我是利益相關(guān)方,所以就不回答這個問題了。
數(shù)據(jù)分享
經(jīng)常跟一些同學(xué)聊,用戶會把數(shù)據(jù)分享出來嗎?在阿里內(nèi)部,不同部門之間是經(jīng)常共享數(shù)據(jù)的。但是社會呢?不知道,也許會,也許不會。也許2016年會火,也許再過10年吧。?大數(shù)據(jù)應(yīng)用也不意味著一定需要交換,數(shù)據(jù)交換往往意味著會產(chǎn)生更大的價值。云計算,云是載體,計算發(fā)揮價值,阿里云的宣傳語是為了無法的計算的價值。一是,傳統(tǒng)企業(yè)的業(yè)務(wù)系統(tǒng)上云及新的企業(yè)的業(yè)務(wù)系統(tǒng)直接生長在云上,產(chǎn)生數(shù)據(jù),后到大數(shù)據(jù)系統(tǒng)中分析,一般給使用者決策,反哺業(yè)務(wù)系統(tǒng)。此點業(yè)務(wù)系統(tǒng)是核心,大數(shù)據(jù)分析系統(tǒng)是輔助的。二是,業(yè)務(wù)系統(tǒng)還在在線下,數(shù)據(jù)上云,分析。三是,物聯(lián)網(wǎng)產(chǎn)生的數(shù)據(jù)直接上云,分析。四是,大數(shù)據(jù)業(yè)務(wù)分析,也就是大數(shù)據(jù)分析系統(tǒng)就是其核心業(yè)務(wù)。前面三者基本都是分析自生的數(shù)據(jù),一般無需交換。最后一類,本身沒有數(shù)據(jù),基本都是別人的數(shù)據(jù),要么是公共的社會的數(shù)據(jù),要么是購買別家的數(shù)據(jù),數(shù)據(jù)交換的價值在此發(fā)生。
公有云,私有云,混合云
如果我去創(chuàng)業(yè),涉及到IT資產(chǎn)之類的,我肯定會選擇放在云端的。因為我要解決的是自生的業(yè)務(wù)是否有競爭力,IT資產(chǎn)采用最小成本的方案去做,公司也好調(diào)頭,解決生存問題。當(dāng)企業(yè)做成一定的規(guī)模的時候,我就會思考,放在云算是否安全,我的核心數(shù)據(jù)是否會被偷看或者涉密,當(dāng)我的規(guī)模起來的時候,我是否自己搞更加便宜,或者一些無關(guān)緊要,但是會占住大量資源的計算放在云端。因為目前企業(yè)有不同規(guī)模的,也對自己的核心業(yè)務(wù)有不同的數(shù)據(jù)安全要求的。所以就慢慢就有了很多模式,目前肯定都有市場的。
DT時代的到來
很多人其實不理解這句話,包括我開始也不理解,感覺說等于白說,數(shù)據(jù)肯定最重要啊,我們做業(yè)務(wù)系統(tǒng)的時候,數(shù)據(jù)庫是單點,需要重點保護,掛了網(wǎng)站就基本掛了。業(yè)務(wù)系統(tǒng)的節(jié)點一般無狀態(tài),掛幾個沒有關(guān)系。今天,我理解這句話的含義是,以前OLAP的用戶基本就是給企業(yè)的高層決策的時候提供一些數(shù)據(jù)的,或者高層決策的時候也完全沒有數(shù)據(jù),就直接拍腦袋了?,F(xiàn)在,很多企業(yè),營銷人員甚至代碼自身都可以基于數(shù)據(jù)的分析報告計劃下一步的。我現(xiàn)在都帶一個小米手環(huán),發(fā)現(xiàn)我上個月平均睡覺時間是0點左右,這個月得提前點。也就是人人都會用數(shù)據(jù)了,當(dāng)然不一定是大數(shù)據(jù),小米手環(huán)的數(shù)據(jù)只有幾k。以后數(shù)字化會越來越多,這個是一個時代的到來。
林林總總也寫了不少,基本是隨筆,這1個小時想到的。這是一個美好的時代,因為前所未有,也機會無窮。