扎心!每天寫代碼,方向真的對嗎?

簡介: 每一個人的時間都是有限的,在有限的時間裏選擇一項值得投入的技術會變得尤其重要。架構

「每一個人的時間都是有限的,在有限的時間裏選擇一項值得投入的技術會變得尤其重要。」框架

筆者從 2008 年開始工做到如今也有 12 個年頭了,一路走來都在和數據打交道,作過不少大數據底層框架內核的開發(Hadoop,Pig,Hive,Tez,Spark),也作過多年上層數據計算框架(Livy, Zeppelin)以及數據應用開發,包括數據處理,數據分析以及機器學習。如今是 Apache Member 以及多個 Apache 項目的 PMC 。2018 年加入阿里巴巴實時計算團隊專一在 Flink 的研發。機器學習

今天我想結合本身過去的職業經從來聊聊如何評估一項技術是否值得學習。我一直在大數據這個圈子,從最初的 Hadoop 到後來的 Hadoop 生態項目 Pig,Hive,Tez,而後又到新一代的計算引擎 Spark ,再到最近在作的 Flink ,大數據計算引擎貫穿個人整個職業生涯。我我的來講是比較幸運的,在每一個階段都在作比較火的技術,當時更多的是憑着本身的興趣和直覺在選擇技術類型。如今回過頭來看我以爲須要從下面 3 個大的緯度來評估一項技術是否值得學習。分佈式

一、技術深度
二、生態廣度
三、進化能力oop

2 640.png

01 技術深度

技術深度是指這項技術的根基是否紮實,護城河是否夠寬夠深,是否很容易被其餘技術所替代。通俗的來講就是這項技術是否解決了其餘技術所不能解決的有重要價值的問題。這裏有兩個要點:性能

一、這個問題沒有人能解,是這項技術首先解決了這個問題。
二、解決這個問題可以帶來重大價值。學習

拿我職業生涯開始階段學習的 Hadoop 爲例。當時 Hadoop 剛出來的時候是一項革命性的技術,由於當時除了 Google 宣稱本身內部有一套 GFS 和 MapReduce 系統外,業界其餘公司都沒有一套完整的海量數據解決方案。而隨着互聯網技術的發展,數據量與日俱增,處理海量數據的能力迫在眉睫。Hadoop 的誕生正好解決了這一燃眉之急。大數據

隨着技術的發展, Hadoop 的處理海量數據能力的優點慢慢被人習慣,相反 Hadoop 存在的缺陷被人不斷詬病(性能差,MapReduce 編寫複雜等等)。而這時候Spark應運而生,解決了 Hadoop MapReduce 計算引擎的頑疾。Spark 遠超過 Hadoop 的計算性能以及極其優雅簡單的 API 迎合了當時用戶的需求,受到了廣大大數據工程師的熱捧。網站

如今我在阿里巴巴從事的是關於 Flink 的研發工做,主要緣由是我看到了工業界對實時性的需求以及 Flink 在實時計算這個領域的霸主地位。以前大數據遇到的最大挑戰在於數據規模大(因此你們會稱之爲「大數據」),通過工業界多年的努力和實踐,規模大這個問題基本已經解決了。接下來幾年,更大的挑戰在於速度,也就是實時性。而大數據的實時性並非指簡單的傳輸數據或者處理數據的實時性,而是從端到端的實時,任何一個步驟速度慢了,就影響整個大數據系統的實時性。spa

在 Flink 看來, Everything is stream 。Flink 的以 Stream 爲核心的架構是業界獨一無二的,由此而產生的性能優越,高擴展性,端到端 Exactly Once 等特性,更是使得 Flink 在流計算領域是當之無愧的王者。

目前主流的流計算引擎有 3 個:Flink、Storm 和 SparkStreaming 。

3 640.png

注:Spark Streaming 只能選擇搜索字詞,理論上這樣的對比是不嚴謹的。但做爲趨勢,咱們更關注的是其變化曲線,實際影響應該不大。

從上面的 Google trends 曲線能夠看出,Flink 處在一個快速增加期, Storm 的熱度在逐年降低,而 Spark Streaming 幾乎進入了平臺期。這就證實了 Flink 在流計算領域的根基之深,目前來看尚未誰能夠超越 Flink 在流計算領域的霸主地位。

02 生態廣度

一項技術只有技術深度是不夠的,由於一項技術只能專一於作好一件事情,若是要解決實際生活中的複雜問題,一定要和其餘技術整合聯動,這就要求這項技術具備足夠寬的生態廣度。生態的廣度有 2 個緯度能夠衡量:

一、上下游生態。上下游生態指從數據流的角度來講的數據上下游。
二、垂直領域生態。垂直領域生態是指某個細分領域或者應用場景的整合。

4 640.png

當 Hadoop 剛出來的時候只有 2 個基本的組件:HDFS 和 MapReduce ,分別解決了海量存儲和分佈式計算的問題。但隨着發展,須要解決的問題愈來愈複雜,HDFS 和 MapReduce 已經不能很方便的解決一些複雜問題,這時候 Hadoop 的其餘生態項目應運而生,好比 Pig,Hive,HBase 等等從垂直領域生態這個角度解決了 Hadoop 不容易或者不能解決的問題。

Spark 亦是如此,一開始的 Spark 是要替換原來的 MapReduce 計算引擎,後來 Spark 發展了各類語言接口,各類上層框架,好比 Spark SQL,Spark Structured Streaming,MLlib,GraphX 等等,大大豐富了 Spark 的使用場景,擴展了Spark的垂直領域生態。Spark 對各類 Data Source 的支持,更是讓 Spark 這個計算引擎和存儲結成了聯盟,創建了強大的上下游生態系統,爲端到端的解決方案奠基了基礎。

我如今作的 Flink 項目的生態仍然處於起步階段,當時我加入阿里巴巴正不只僅是看到了 Flink 做爲流計算引擎的霸主地位,更是由於看到了 Flink 生態的機會。你們若是從個人職業生涯來看,會發現些許變化,我在從一開始專一於大數據的核心框架層慢慢在往周邊生態項目發展。一個主要的緣由是我對整個大數據行業的判斷:大數據上半場戰鬥集中在底層框架,目前已經接近尾聲,將來的底層大數據生態圈中將再也不有那麼多的新的技術和框架,每一個細分領域都將優勝劣汰,走向成熟,更加集中化。下半場戰鬥的重點講從底層走向上層,走向生態。以前的大數據創新更偏向於 IAAS 和 PAAS ,將來你將看到更多 SAAS 類型的大數據產品和創新。

5 640.png

每次談到大數據的生態,我都拿出上面這張圖。這張圖基本上把你平常須要處理的大數據場景都包括進來。從最左邊的數據生產者,到數據收集,數據處理,而後再到數據應用(BI + AI)。你會發現 Flink 能夠應用在每個步驟。不只涉及到大數據,也涉及到 AI ,可是 Flink 的強項在於流計算處理,在其餘領域的生態仍在起步階段,我我的正在作的工做就是完善 Flink 在上面這張圖上端到端的能力。

03 進化能力

一項技術若是技術深度和生態廣度都沒有問題,那麼至少說明這項技術在當下是值得學習的。可是投資一項技術還須要從時間這個緯度上考量。你確定不但願本身學習的技術很快就被淘汰,每一年都要去學習一項新技術。因此一項值得投資學習的技術一定須要具備持久的進化能力。

我最初學的 Hadoop 到如今已經 10 多年了,如今仍然被普遍使用着。雖然如今有不少公有云廠商在搶佔 Hadoop 的市場,但你不得不認可若是一家公司要成立一個大數據部門,第一件事恐怕就是建一個 Hadoop 集羣吧。當咱們如今談論 Hadoop 的時候,他已經不是當初的 Hadoop 了,他更多的是 Hadoop 生態圈的統稱。你們有空能夠看看 Cloudera CPO Arun 的這篇文章【1】,我對其中的觀點很是認同。

【1】:
https://medium.com/@acmurthy/hadoop-is-dead-long-live-hadoop-f22069b264ac

Spark 項目就更不用多說了。Spark 通過 14,15 年爆發,如今已經進入平穩期。可是 Spark 仍在進化,仍在擁抱變化。Spark on K8s 就是 Spark 擁抱雲原生的最好佐證。如今 Spark 社區煊赫一時的Delta,MLFlow 更是 Spark 的強大的進化能力的佐證。如今的 Spark 也不只僅是當年要取代 MapReduce 的那個 Spark ,更可能是一個適用於多種場景的通用計算引擎。

我從 18 年加入阿里巴巴到如今差很少 1 年半時間,在這一年半的時間了,我正好見證了 Flink 的進化能力。

首先 Flink 通過幾個大版本的發佈,融入了 Blink 的大部分功能,將 Flink SQL 的能力提高了一大截。

其次 Flink 對 K8s 的支持,對 Python 的支持,對 AI 的支持都在向人們證實這Flink自身強大的進化能力。

小 Tips

除了以上的 3 大維度,在這裏我還想分享下我在評估一項新技術時候的一些小技巧。

一、利用 Google trends 。Google trends 能很好的反映一項技術的發展勢頭,上面提到的趨勢圖很好的比較了 3 大流計算引擎 Flink , Spark Streaming 和 Storm ,咱們不可貴出結論:Flink 是流計算領域的王者。

二、查看 GitHub 上的awesome。一項技術受歡迎的一個指標是 GitHub 上的 awesome list,你能夠看看這個 awesome list 的 GitHub star 數。此外你能夠抽一個週末的時間看看這個 awesome list 上的內容,由於上面基本上是關於這項技術的精華內容,經過這些內容你大體能夠判斷出這項技術的價值。

三、看看技術網站上是否有一些技術佈道者爲這項技術背書(我我的常常會看medium.com)。技術圈裏一般有這樣一羣人,他們對技術很執着,也頗有品位。若是一項技術真的很好,那麼就會有技術佈道者無償的爲這項技術背書,分享如何這項技術的使用心得。

04 總結

每一個人的時間都是有限的,在有限的時間裏選擇一項值得投入的技術會變得尤其重要。

以上是我對如何評估一項技術是否值得學習的一些思考,也算是對我本身事業生涯在技術選型方面的一個小小的總結和回顧,但願個人這些思考能對你們的職業生涯有所幫助。

做者介紹:

章劍鋒(簡鋒),開源界老兵,Github ID:@zjffdu,Apache Member,曾就任於 Hortonworks,目前在阿里巴巴計算平臺事業部任高級技術專家,並同時擔任 Apache Tez、Livy 、Zeppelin 三個開源項目的 PMC ,以及 Apache Pig 的 Committer。有幸很早就接觸了大數據和開源,但願能夠在開源領域爲大數據和數據科學作點貢獻。

相關文章
相關標籤/搜索