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