Apache Flink 生態所面臨的機遇與挑戰

2021-09-21 01:27:12 字數 3415 閱讀 5114

在談生態之前,我們來聊聊什麼是生態。生態是指在某個特定領域,以某個元件為核心衍生出來其他多個元件,這些元件可以間接或者直接用到這個核心元件,然後輔助這個核心元件共同完成乙個更大或者更特殊的任務。flink生態圈就是指以flink為核心的生態圈,flink屬於大資料生態裡的計算環節,只做計算,不做儲存。但是在實際工作當中,你會發現往往單獨用flink是不夠的。比如你的資料是從**讀出來,flink計算完之後資料又將存到**,又怎麼消費這些資料。如何利用flink來完成某個垂直領域的特殊任務等等。這些涉及到上下游,或者更高抽象的任務都需要乙個強大的生態圈來完成。

在講清楚了什麼是生態之後,我們來聊聊目前flink生態的現狀。整體而言flink生態還處於相對初級的階段。flink生態目前主要側重於各種上下游的connector和對各種集群的支援。

截至目前flink支援的connector有:kafka,cassandra,elasticsearch,kinesis,rabbitmq,jdbc,hdfs等等,基本支援所有主流資料來源。在集群支援方面,目前flink支援standalone和yarn。基於目前生態的狀況,flink仍然主要應用於流資料的計算。如果要用flink要做其他一些場景(機器學習,互動式分析)就會比較複雜,使用者體驗上還有很大的提公升空間。這也正是flink生態所面臨的挑戰和機遇。

flink致力於作為乙個批流統一的大資料計算平台,還有很多潛力沒有發揮出來,要完全發揮出它的潛力,就需要乙個強大的生態系統。總的來說我們可以從2個維度來看這個生態系統:

橫向維度。 橫向維度的生態主要是為構建乙個端到端的解決方案。比如連線上下游資料來源的各種connector,與下游機器學習框架的整合,與下游bi工具的整合,方便提交和運維flink job的工具,提供更好互動式分析體驗的notebook。

縱向維度。縱向維度是指更加抽象化flink的計算引擎以適應各種計算場景。比如批流計算的統一,更高計算抽象層table api,複雜事件處理引擎(cep),更高機器學習計算框架(flink ml),對各種集群框架的適配等等。

下圖是對整個flink生態在橫向和縱向2個維度的描述。

接下來我會對幾個主要的生態點進行逐個闡述

apache hive是乙個有將近10年歷史的apache頂級專案。專案最初在mapreduce引擎的基礎上封裝了sql,使用者不再需要寫複雜的mapreduce job,而只需寫簡單熟悉的sql語句,使用者的sql會被翻譯成乙個或多個mapreduce job。隨著專案的不斷演進,hive的計算引擎發展成可以插拔式,比如,現在hive就支援mr, tez, spark 3種計算引擎。apache hive現在已經成為hadoop生態圈中事實上資料倉儲的標準,很多公司的資料倉儲系統已經在hive上運轉了很多年。

flink作為乙個批流統一的計算框架,與hive的整合就變得很自然了。比如通過flink來做實時etl,構建實時資料倉儲,然後用hive sql做實時資料的查詢。

flink社群已經建立了 flink-10556 來對hive更好的整合和支援。主要實現的功能有以下幾點:

flink社群正在逐漸實現以上功能。如果你想提前體驗以上功能,可以試用阿里巴巴開源的blink。開源的blink已經在元資料(meta data)和資料層將flink和hive對接和打通, 使用者可以直接用flink sql去查詢hive的資料,真正能夠做到在hive引擎和flink引擎之間的自由切換。為了打通元資料,blink重構了flink catalog的實現,並且增加了兩種catalog,乙個是基於記憶體儲存的flinkinmemorycatalog,另外乙個是能夠橋接hive metastore的hivecatalog。有了這個hivecatalog,flink作業就能讀取hive的metadata。為了打通資料,blink實現了hivetablesource,使得flink job可以直接讀取hive中普通表和分割槽表的資料。因此,通過這個版本,使用者可以使用flink sql讀取已有的hive meta和data,做資料處理。未來阿里巴巴將在flink上繼續加大對hive相容性的支援,包括支援hive特有的query,data type,和hive udf等等,這些改進都會陸續回饋到flink社群。

批處理是流處理之外另乙個更大的應用場景。而互動式分析又是批處理的乙個大類,特別對於資料分析師和資料科學家,互動式分析尤為重要。

此外,我們需要提供乙個互動式分析的平台讓資料分析師/資料科學家更高效得使用flink。在這方面apache zeppelin已經做了很多任務作。 apache zeppelin也是apache的頂級專案,zeppelin提供乙個互動式開發環境,支援scala,python,sql等多種語言,此外zeppelin天然具有極強的可擴充套件性,支援多種大資料引擎,比如spark,hive,pig等等。阿里巴巴做了大量的工作讓zeppelin能夠更好的支援flink。使用者可以直接在zeppelin裡面寫flink**(scala或者sql),而不用在本地打包,然後用bin/flink指令碼來手動提交job,在zeppelin裡你可以直接提交job,然後看到job的結果,job結果既可以是文字形式,也可以是視覺化出來,特別對於sql的結果,視覺化尤為顯得重要。下面這些是zeppelin對flink支援的一些要點:

flink作為乙個大資料架構中最重要的計算引擎元件,目前主要的應用場景還是在做傳統的資料計算和處理,也就是傳統的bi(比如實時資料倉儲,實時統計報表等等)。而21世紀將是乙個ai爆發的世紀,越來越多的企業和行業開始啟用ai技術來重新革命自己的行業。flink作為乙個大資料計算引擎在這一革命中不可或缺。雖然flink並不是為機器學習而生的,但是在機器學習中也將扮演不可或缺的角色。未來flink在機器學習領域主要有3件大事可以做

機器學習主要分2個階段:training和predication。但training和predication只是做機器學習的一小部分,在training之前要做資料的清洗,轉換以及normalization等等,training之後要做model的evaluation。predication階段也是如此。對於乙個複雜的機器學習系統,如何將每個步驟很好的整合起來對於乙個系統的健壯性和可擴充套件性顯得尤為重要。flink-11095 就是社群為此正在做的努力。

目前flink有個flink-ml的模組實現了一些傳統的機器學習方法,但是仍然需要進一步的改進。

在開發環境裡,一般是通過執行shell 命令 bin/flink run 來提交flink job。但在真正生產環境裡面,這種方式就會有很多問題。比如如何跟蹤管理job的狀態,在job失敗的情況下如何重試,如何併發啟動多個flink job,如何方便修改提交job的引數等等。這些問題雖然可以通過人工干預來解決,但在生產環境裡人工干預是最危險的,能自動化的操作我們都要將其自動化。在flink生態圈裡目前的確缺少這樣乙個工具。阿里巴巴內部已經有了這樣乙個工具,而且在生產環境裡穩定執行了很長時間,已經被實踐證明是乙個可靠穩定的提交和運維flink job的工具。目前阿里巴巴正在準備開源這個專案,剝離一些阿里巴巴內部依賴的元件,預計2023年上半年會開源。

總的來說,flink生態目前問題很多,機會也很多。apache flink社群在不斷努力去構建乙個更加強大的flink生態來發揮其強大的計算引擎能力,希望有志參與其中的人可以積極參與,讓我們一起努力來構建乙個健康強大的flink生態圈。

銷售所面隊的各種客戶

談到銷售,這是乙個寬泛的話題,這個社會是人就可以做銷售,而這個社會到什末時候也最缺銷售人才。那末如何做好銷售呢?在無形跟員工或朋友的交流中,經常會被問到這個問題。經過多年銷售工作之後,無形得出如下的結論 銷售工作,尤其是大客戶銷售工作的最高境界同時也是最高招數的應該就是這兩個字 感動!與人鬥的極致狀...

ZT交易所延續幣圈高潮 生態體系穩步推進

數字貨幣交易所是數字貨幣流通過程中的乙個紐帶,隨著數字貨幣不斷被人們所認可,數字貨幣交易所儼然成為了一種剛需。然而許多數字貨幣交易所的安全問題也讓使用者深深擔憂。據悉,數字交易所不安全主要來自以下幾點 賬戶僅靠金鑰的使用者機制,安全保障手法單一,無法應對黑產通過釣魚 掛馬 木馬等多種手段進行的盜號,...

共識資本領投全球全生態智慧型交易所AACOIN

北京時間5月16日下午,共識資本領投的全球首推的全生態智慧型aacoin交易平台,在京正式發布。此次全球首發儀式上,共識資本創始人湯清海先生表示,看好aacoin交易平台在全球業務上的未來發展能力,並首次面向全球,公開了共識資本就區塊鏈產業投資布局的若干具體設想。aacoin全球首發現場,由共識區塊...