
源 | 阿里巴巴中間件
文 | 簡鋒
“每個人的時間都是有限的,在有限的時間里選擇一項值得投入的技術(shù)會變得尤為重要。”
筆者從 2008 年開始工作到現(xiàn)在也有 12 個年頭了,一路走來都在和數(shù)據(jù)打交道,做過很多大數(shù)據(jù)底層框架內(nèi)核的開發(fā)(Hadoop,Pig,Hive,Tez,Spark),也做過多年上層數(shù)據(jù)計算框架(Livy, Zeppelin)以及數(shù)據(jù)應(yīng)用開發(fā),包括數(shù)據(jù)處理,數(shù)據(jù)分析以及機器學(xué)習(xí)?,F(xiàn)在是 Apache Member 以及多個 Apache 項目的 PMC 。2018 年加入阿里巴巴實時計算團隊專注在 Flink 的研發(fā)。
今天我想結(jié)合自己過去的職業(yè)經(jīng)歷來聊聊如何評估一項技術(shù)是否值得學(xué)習(xí)。我一直在大數(shù)據(jù)這個圈子,從最初的 Hadoop 到后來的 Hadoop 生態(tài)項目 Pig,Hive,Tez,然后又到新一代的計算引擎 Spark ,再到最近在做的 Flink ,大數(shù)據(jù)計算引擎貫穿我的整個職業(yè)生涯。我個人來說是比較幸運的,在每個階段都在做比較火的技術(shù),當(dāng)時更多的是憑著自己的興趣和直覺在選擇技術(shù)類型?,F(xiàn)在回過頭來看我覺得需要從下面 3 個大的緯度來評估一項技術(shù)是否值得學(xué)習(xí)。

技術(shù)深度是指這項技術(shù)的根基是否扎實,護城河是否夠?qū)拤蛏?,是否很容易被其他技術(shù)所替代。通俗的來說就是這項技術(shù)是否解決了其他技術(shù)所不能解決的有重要價值的問題。這里有兩個要點:
1、這個問題沒有人能解,是這項技術(shù)首先解決了這個問題。
拿我職業(yè)生涯開始階段學(xué)習(xí)的 Hadoop 為例。當(dāng)時 Hadoop 剛出來的時候是一項革命性的技術(shù),因為當(dāng)時除了 Google 宣稱自己內(nèi)部有一套 GFS 和 MapReduce 系統(tǒng)外,業(yè)界其他公司都沒有一套完整的海量數(shù)據(jù)解決方案。而隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)據(jù)量與日俱增,處理海量數(shù)據(jù)的能力迫在眉睫。Hadoop 的誕生正好解決了這一燃眉之急。
隨著技術(shù)的發(fā)展, Hadoop 的處理海量數(shù)據(jù)能力的優(yōu)勢慢慢被人習(xí)慣,相反 Hadoop 存在的缺陷被人不斷詬病(性能差,MapReduce 編寫復(fù)雜等等)。而這時候Spark應(yīng)運而生,解決了 Hadoop MapReduce 計算引擎的頑疾。Spark 遠超過 Hadoop 的計算性能以及極其優(yōu)雅簡單的 API 迎合了當(dāng)時用戶的需求,受到了廣大大數(shù)據(jù)工程師的熱捧。
現(xiàn)在我在阿里巴巴從事的是關(guān)于 Flink 的研發(fā)工作,主要原因是我看到了工業(yè)界對實時性的需求以及 Flink 在實時計算這個領(lǐng)域的霸主地位。之前大數(shù)據(jù)遇到的最大挑戰(zhàn)在于數(shù)據(jù)規(guī)模大(所以大家會稱之為“大數(shù)據(jù)”),經(jīng)過工業(yè)界多年的努力和實踐,規(guī)模大這個問題基本已經(jīng)解決了。接下來幾年,更大的挑戰(zhàn)在于速度,也就是實時性。而大數(shù)據(jù)的實時性并不是指簡單的傳輸數(shù)據(jù)或者處理數(shù)據(jù)的實時性,而是從端到端的實時,任何一個步驟速度慢了,就影響整個大數(shù)據(jù)系統(tǒng)的實時性。
在 Flink 看來, Everything is stream 。Flink 的以 Stream 為核心的架構(gòu)是業(yè)界獨一無二的,由此而產(chǎn)生的性能優(yōu)越,高擴展性,端到端 Exactly Once 等特性,更是使得 Flink 在流計算領(lǐng)域是當(dāng)之無愧的王者。
目前主流的流計算引擎有 3 個:Flink、Storm 和 SparkStreaming 。

注:Spark Streaming 只能選擇搜索字詞,理論上這樣的對比是不嚴謹?shù)?。但作為趨勢,我們更關(guān)注的是其變化曲線,實際影響應(yīng)該不大。
從上面的 Google trends 曲線可以看出,F(xiàn)link 處在一個快速增長期, Storm 的熱度在逐年下降,而 Spark Streaming 幾乎進入了平臺期。這就證明了 Flink 在流計算領(lǐng)域的根基之深,目前來看還沒有誰可以超越 Flink 在流計算領(lǐng)域的霸主地位。
一項技術(shù)只有技術(shù)深度是不夠的,因為一項技術(shù)只能專注于做好一件事情,如果要解決實際生活中的復(fù)雜問題,必定要和其他技術(shù)整合聯(lián)動,這就要求這項技術(shù)具有足夠?qū)挼纳鷳B(tài)廣度。生態(tài)的廣度有 2 個緯度可以衡量:
1、上下游生態(tài)。上下游生態(tài)指從數(shù)據(jù)流的角度來說的數(shù)據(jù)上下游。
2、垂直領(lǐng)域生態(tài)。垂直領(lǐng)域生態(tài)是指某個細分領(lǐng)域或者應(yīng)用場景的整合。

當(dāng) Hadoop 剛出來的時候只有 2 個基本的組件:HDFS 和 MapReduce ,分別解決了海量存儲和分布式計算的問題。但隨著發(fā)展,需要解決的問題越來越復(fù)雜,HDFS 和 MapReduce 已經(jīng)不能很方便的解決一些復(fù)雜問題,這時候 Hadoop 的其他生態(tài)項目應(yīng)運而生,比如 Pig,Hive,HBase 等等從垂直領(lǐng)域生態(tài)這個角度解決了 Hadoop 不容易或者不能解決的問題。
Spark 亦是如此,一開始的 Spark 是要替換原來的 MapReduce 計算引擎,后來 Spark 發(fā)展了各種語言接口,各種上層框架,比如 Spark SQL,Spark Structured Streaming,MLlib,GraphX 等等,大大豐富了 Spark 的使用場景,擴展了Spark的垂直領(lǐng)域生態(tài)。Spark 對各種 Data Source 的支持,更是讓 Spark 這個計算引擎和存儲結(jié)成了聯(lián)盟,建立了強大的上下游生態(tài)系統(tǒng),為端到端的解決方案奠定了基礎(chǔ)。
我現(xiàn)在做的 Flink 項目的生態(tài)仍然處于起步階段,當(dāng)時我加入阿里巴巴正不僅僅是看到了 Flink 作為流計算引擎的霸主地位,更是因為看到了 Flink 生態(tài)的機會。大家如果從我的職業(yè)生涯來看,會發(fā)現(xiàn)些許變化,我在從一開始專注于大數(shù)據(jù)的核心框架層慢慢在往周邊生態(tài)項目發(fā)展。一個主要的原因是我對整個大數(shù)據(jù)行業(yè)的判斷:大數(shù)據(jù)上半場戰(zhàn)斗集中在底層框架,目前已經(jīng)接近尾聲,未來的底層大數(shù)據(jù)生態(tài)圈中將不再有那么多的新的技術(shù)和框架,每個細分領(lǐng)域都將優(yōu)勝劣汰,走向成熟,更加集中化。下半場戰(zhàn)斗的重點講從底層走向上層,走向生態(tài)。之前的大數(shù)據(jù)創(chuàng)新更偏向于 IAAS 和 PAAS ,未來你將看到更多 SAAS 類型的大數(shù)據(jù)產(chǎn)品和創(chuàng)新。

每次談到大數(shù)據(jù)的生態(tài),我都拿出上面這張圖。這張圖基本上把你日常需要處理的大數(shù)據(jù)場景都包括進來。從最左邊的數(shù)據(jù)生產(chǎn)者,到數(shù)據(jù)收集,數(shù)據(jù)處理,然后再到數(shù)據(jù)應(yīng)用(BI + AI)。你會發(fā)現(xiàn) Flink 可以應(yīng)用在每一個步驟。不僅涉及到大數(shù)據(jù),也涉及到 AI ,但是 Flink 的強項在于流計算處理,在其他領(lǐng)域的生態(tài)仍在起步階段,我個人正在做的工作就是完善 Flink 在上面這張圖上端到端的能力。
一項技術(shù)如果技術(shù)深度和生態(tài)廣度都沒有問題,那么至少說明這項技術(shù)在當(dāng)下是值得學(xué)習(xí)的。但是投資一項技術(shù)還需要從時間這個緯度上考量。你肯定不希望自己學(xué)習(xí)的技術(shù)很快就被淘汰,每年都要去學(xué)習(xí)一項新技術(shù)。所以一項值得投資學(xué)習(xí)的技術(shù)必定需要具有持久的進化能力。
我最初學(xué)的 Hadoop 到現(xiàn)在已經(jīng) 10 多年了,現(xiàn)在仍然被廣泛使用著。雖然現(xiàn)在有很多公有云廠商在搶占 Hadoop 的市場,但你不得不承認如果一家公司要成立一個大數(shù)據(jù)部門,第一件事恐怕就是建一個 Hadoop 集群吧。當(dāng)我們現(xiàn)在談?wù)?Hadoop 的時候,他已經(jīng)不是當(dāng)初的 Hadoop 了,他更多的是 Hadoop 生態(tài)圈的統(tǒng)稱。大家有空可以看看 Cloudera CPO Arun 的這篇文章【1】,我對其中的觀點非常認同。
https://medium.com/@acmurthy/hadoop-is-dead-long-live-hadoop-f22069b264ac
Spark 項目就更不用多說了。Spark 經(jīng)過 14,15 年爆發(fā),現(xiàn)在已經(jīng)進入平穩(wěn)期。但是 Spark 仍在進化,仍在擁抱變化。Spark on K8s 就是 Spark 擁抱云原生的最好佐證。現(xiàn)在 Spark 社區(qū)炙手可熱的Delta,MLFlow 更是 Spark 的強大的進化能力的佐證。現(xiàn)在的 Spark 也不僅僅是當(dāng)年要取代 MapReduce 的那個 Spark ,更多是一個適用于多種場景的通用計算引擎。
我從 18 年加入阿里巴巴到現(xiàn)在差不多 1 年半時間,在這一年半的時間了,我正好見證了 Flink 的進化能力。
首先 Flink 經(jīng)過幾個大版本的發(fā)布,融入了 Blink 的大部分功能,將 Flink SQL 的能力提升了一大截。
其次 Flink 對 K8s 的支持,對 Python 的支持,對 AI 的支持都在向人們證明這Flink自身強大的進化能力。
除了以上的 3 大維度,在這里我還想分享下我在評估一項新技術(shù)時候的一些小技巧。
1、利用 Google trends 。Google trends 能很好的反映一項技術(shù)的發(fā)展勢頭,上面提到的趨勢圖很好的比較了 3 大流計算引擎 Flink , Spark Streaming 和 Storm ,我們不難得出結(jié)論:Flink 是流計算領(lǐng)域的王者。
2、查看 GitHub 上的awesome。一項技術(shù)受歡迎的一個指標是 GitHub 上的 awesome list,你可以看看這個 awesome list 的 GitHub star 數(shù)。此外你可以抽一個周末的時間看看這個 awesome list 上的內(nèi)容,因為上面基本上是關(guān)于這項技術(shù)的精華內(nèi)容,通過這些內(nèi)容你大致可以判斷出這項技術(shù)的價值。
3、看看技術(shù)網(wǎng)站上是否有一些技術(shù)布道者為這項技術(shù)背書(我個人經(jīng)常會看medium.com)。技術(shù)圈里通常有這樣一群人,他們對技術(shù)很執(zhí)著,也很有品位。如果一項技術(shù)真的很好,那么就會有技術(shù)布道者無償?shù)臑檫@項技術(shù)背書,分享如何這項技術(shù)的使用心得。
每個人的時間都是有限的,在有限的時間里選擇一項值得投入的技術(shù)會變得尤為重要。
以上是我對如何評估一項技術(shù)是否值得學(xué)習(xí)的一些思考,也算是對我自己事業(yè)生涯在技術(shù)選型方面的一個小小的總結(jié)和回顧,希望我的這些思考能對大家的職業(yè)生涯有所幫助。
特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

長按訂閱更多精彩▼

如有收獲,點個在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!