天天看點

學不動?Apache Member 教你評估實用技術的思路

作者:章劍鋒 ( 簡鋒 )

導讀:筆者從 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 社群

學不動?Apache Member 教你評估實用技術的思路

用過 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 很容易對接各種雲平台,可以與你現有的基于雲平台的應用系統完美無縫對接。

學不動?Apache Member 教你評估實用技術的思路

▌不隻是 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 社群會有多意想不到的驚喜。

學不動?Apache Member 教你評估實用技術的思路

綜上所述,是筆者對為什麼學習 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。有幸很早就接觸了大資料和開源,希望可以在開源領域為大資料和資料科學做點貢獻。