作者:章劍鋒 ( 簡鋒 )
導讀:筆者從 2008 年開始工作到現在也有 11 個年頭了,一路走來都在和數據打交道,做過很多大數據底層框架內核的開發 ( Hadoop,Pig,Tez,Spark,Livy ),現在是多個 Apache 項目的 PMC。
相信大家都看過不少 Flink 的文章了,今天我想藉此機會來聊聊一個樸實的問題:為什麼我們要學習 Flink,也即如何理性看待一項新技術是否值得跟風學習。
那麼,是因為一項技術火,你才學的嗎?是因為你老闆決定用這項技術,你才學的嗎?那你有沒有想過為什麼這項技術會火,為什麼你老闆決定用這項技術。今天我們就以 Flink 為例,來好好聊為什麼要學習 Flink,以及如何看待一項新技術是否有潛力,希望對你有所啟發。
▌Flink:大數據 + AI 全棧的核心
大部分人對 Flink 的第一印象是大數據引擎,但我想說 Flink 不只是 Big Data,Flink 的目標是星辰大海。
我們首先來看下這張大數據場景圖。這張圖基本上把你日常需要處理的大數據場景都包括進來。從最左邊的數據生產者,到數據收集,數據處理,然後再到數據應用 ( BI + AI )。你會發現 Flink 可以應用在每一個步驟。不僅涉及到大數據,也涉及到 AI,所以說學習 Flink 等於學到了大數據 + AI 全棧。
Flink 會上接 IOT,下接 AI,打通端到端的數據價值挖掘全鏈路。
Flink 的上游數據規模會繼續增長,特別是由於 IOT 技術的發展和成熟,以及未來 5G 技術的鋪開。在可預測的未來,數據規模仍將繼續快速增長。Flink 豐富的 connector 生態可以讓 Flink 對接幾乎所有的數據源。
Flink 的下游數據產業還有很多發展的空間。BI 技術已經非常成熟,但是近年來對實時 BI 的需求越來越強烈,Flink 在實時 BI 的場景有非常強的用武之地。另外是 AI 技術的快速發展,會帶動大數據引擎的發展。Flink 自身也在發展 Machine Learning 相關的技術,去年剛開源的 Alink [1] 就是基於 Flink 的機器學習 library,Alink 可以讓沒有機器學習理論知識和工程經驗的普通軟件工程師也可以方便的使用機器學習技術。
▌批流融合,大勢所趨
Flink 引以為傲的是它的超強流計算能力。不過 Streaming Processing 只是 Flink 的看家本領,並不是他的全部,Flink 真正厲害的地方是它的批流統一。
我們還是可以拿上面那張圖來解釋。你可以看到每個階段都可以用批流2種方式來解決。我們可以用 Flink 來解決批處理方式的數據收集任務,也可以用流處理的方式來解決已達到更快的實時性。數據處理也是一樣,我們可以用 Streaming ETL,也可以做 Batch ETL。到數據應用這層也是,我們不僅可以用批處理來製作日常的 dashboard,也可以用流計算來做實時 dashboard。在 AI 這塊,我們不僅可以用批處理的方式基於歷史數據做模型訓練,也可以用流處理的方式做在線學習,實時更新模型。總之,你會發現 Flink 的批流融合完美契合了整個大數據端到端的應用。
▌多語言支持,擁抱 AI 社區
用過 Flink 的人一般都知道 Flink 有 Java 和 Scala API,很多人都知道那個經典的 WordCount 例子。Java 和 Scala API 對於一般的軟件工程師來說是很友好的編程語言工具,但是對於其他領域的人來說 ( 比如數據分析師,數據科學家 ),Java 和 Scala 就不是一種很友好的語言。為了能夠吸引這些人來使用 Flink,Flink 推出了 SQL 和 Python 兩種語言的API,進一步降低 Flink 的使用門檻。數據庫技術發展這麼多年,每隔幾年都有新的技術創新,唯獨 SQL 成為亙古不變的數據庫系統入口語言。SQL 是一個生命力非常強盛的語言,圍繞 SQL 語言有非常強大的生態圈,大部分 BI 工具,數據分析軟件都可以對接 SQL。由於 AI 的流行,Python 語言最近的增長勢頭也非常強勢,用戶量與日俱增,可以說是 AI 領域的第一語言。PyFlink 的推出,拉通了 Flink 社區和 Python 社區,使得數據科學家以較低的學習成本來利用 Flink 的計算能力。
▌不僅僅是一個 Library,更是一個 Platform
Flink 作為一個 Apache 項目,我們可以認為它是一個 Library,用戶可以基於這個 Library 開發各種程序。但是作為 Library 只是我們對 Flink 的一個狹隘的理解,更確切的理解應該是一個 Platform。用戶可以基於這個 Platform 進行功能擴展,對接外部系統,從而建立一個更完善的解決方案。比如 Zeppelin notebook [3] 集成了 Flink,用戶可以在 Zeppelin 上編寫 Flink SQL,UDF,運行 Flink Job ( Batch & Streaming ),而且還可以可視化數據,中小企業完全可以用 Zeppelin 來搭建大數據平臺。Ververica Platform 是一個企業級的多租戶 Flink Job 管控平臺,你可以在上面方便的提交管理 Flink Job,而且 Ververica Platform 很容易對接各種雲平臺,可以與你現有的基於雲平臺的應用系統完美無縫對接。
▌不只是 China
眾所周知,阿里巴巴持續重磅投入 Flink,使得 Flink 在國內的發展非常迅速,去年 Flink Forward 大會亞洲場在北京召開,吸引了2000人次參會。但可能很多人不知道 Flink 在國外也發展的非常迅猛。Flink 大會也有歐洲場,美洲場。Flink Forward 已經成為為數不多的能在三大洲召開的技術大會,大數據領域除了 Flink,恐怕就只有 Spark 和 Kafka 了。
▌全面擁抱雲計算
剛開始 Flink 是為數據中心環境準備的,用戶需要自己搭建集群環境,比如 Standalone,Yarn 或者 Mesos,這對用戶的運維能力提出了非常大的挑戰,每一次擴縮容,版本升級都是一件很頭疼的事情。而現在 Flink 已經全面擁抱雲環境,對 K8s 的支持日趨完善,不久的將來我們可以期待雲原生的 Flink 應用會越來越多。同時這也對開發人員對雲技術提出了新的要求,只有掌握雲技術才能更好的發揮 Flink 的能力。
之所以要將 Flink 放在 Kubernetes 之上,是因為這樣做有以下幾點優勢:
- 第一,Kubernetes 能夠在多租戶場景下為 Flink 帶來更好的體驗。
- 第二,目前各大公司都在逐步採用 Kubernetes 做 IT 設施的管理,如果 Flink 能夠運行在 Kubernetes 之上,對於用戶而言就能夠實現更大規模的資源共享和統一管理,降低成本的同時能夠提高效率。
- 第三,Kubernetes 雲原生生態發展非常迅速,如果 Flink 能夠與 Kubernetes 生態實現很好的整合,就能夠讓 Flink 享受到 Kubernetes 生態的技術紅利,使得 Flink 能夠在生產環境下提供運維保障。
▌不只是現在
—— 學習 Flink 對你職業生涯的幫助
最後我想說下決定學習某項技術可能不僅僅是個技術問題,更現實的是它可能會是個影響你職業生涯的問題。
由於 Flink 技術的發展,企業對 Flink 相關技術人員的需求也在與日俱增。根據去年參加 Flink Froward Asia 的情況下來看, 國內幾乎所有的一、二線互聯網公司都已經採用了 Flink,我們可以預期其他互聯網公司以及一些非互聯網公司在未來幾年肯定會陸續採用 Flink,Flink 相關的人才在未來幾年應該會成為眾多公司哄搶的對象。下面例舉了使用了 Flink 的國內外的一些代表性公司。
學習 Flink 也並不僅僅為了現在,而是為了將來的技術積累和儲備。如上所述,Flink 不僅在流計算這塊有堅實的基礎,也在其他領域發力,也在擁抱面向未來的技術 ( 特別是 AI 和雲計算 ),所以學習 Flink 不僅僅是現在,也是在為未來做準備。
還有一點我想說的是學習 Flink 並不只是學習 Flink 本身,你還可以擴寬眼界,學習到其他的技術,交到很多志同道合的朋友。由於 Flink 本身的生態系統的強大,你可以學習到其他領域的知識,比如 IOT,雲原生,AI 等等。此外 Flink 社區蓬勃發展,在國內已經積蓄了大量的學習資料和人才,Flink 的釘釘群人數已經超過了1萬5千人,百度指數上的 flink 指數已經超過了 spark。在 Flink 社區,你可以從別人身上學習到很多有優秀的東西,我相信你在 Flink 社區會有多意想不到的驚喜。
綜上所述,是筆者對為什麼學習 Flink 的分析。新興技術的湧現晝夜不停,本文的初衷是不希望大家盲目的學習一項技術,更希望大家在未來的日子裡多思考,多收穫。本次的分享就到這裡,謝謝大家。
▌References
[1] https://github.com/alibaba/Alink/
[2] https://github.com/ververica/stateful-functions
[3] http://zeppelin.apache.org/
作者介紹:
章劍鋒 ( 簡鋒 ),開源界老兵,Github ID:@zjffdu,Apache Member,曾就職於 Hortonworks,目前在阿里巴巴計算平臺事業部任高級技術專家,並同時擔任 Apache Tez、Livy 、Zeppelin 三個開源項目的 PMC ,以及 Apache Pig 的 Committer。有幸很早就接觸了大數據和開源,希望可以在開源領域為大數據和數據科學做點貢獻。