0
雷鋒網 AI 開發(fā)者按:自 Flink 開源以來,越來越多的開發(fā)者加入了 Flink 社區(qū)。僅僅 2019 年,F(xiàn)link 在 GitHub 上的 Star 數量翻了一倍,Contributor 數量也呈現(xiàn)出持續(xù)增長的態(tài)勢。而它目前在 GitHub 上的訪問量,也位居 Apache 項目中前三,是 Apache 基金會中最為活躍的項目之一。
Flink 發(fā)展如此之快,除了開源使得更多開發(fā)者與企業(yè)可以接觸與使用之外,它在 AI 方面的部署也起著很大作用??此?Flink 的主要應用場景還是數據分析,但它面向多個 AI 場景,已經提供了深度學習引擎協(xié)同等功能。而對于這一與時俱進的 Flink,我們也許可以看到更多可能的未來。

很多人在談到 Flink 的時候,也通常會提 Blink 和 Alink。從名字可以看出,它們與 Flink 有著很深的聯(lián)系,Blink 和 Alink 都是基于 Flink 而得。

Flink 狀態(tài)計算中的數據流
Flink
Flink 是歐洲的一個大數據研究項目,早期專注于批計算,再到后來 Flink 發(fā)展成為了 Apache 的頂級大數據項目。
具體而言,F(xiàn)link 擅長處理無邊界和有邊界的數據集。對時間和狀態(tài)的精確控制使 Flink 的運行時能夠在無限制的流上運行任何類型的應用程序。有界流由專門為固定大小的數據集設計的算法和數據結構在內部進行處理。

Flink 架構
其核心是一個流式的數據流執(zhí)行引擎,能夠基于同一個 Flink 運行時,提供支持流處理和批處理兩種類型應用。它在運行時的架構主要包含幾個部分:Client、JobManager(master 節(jié)點) 和 TaskManger(slave 節(jié)點),是一個高效和分布式的通用數據處理平臺。
更多信息:
Blink
Blink 是阿里在 2018 年推出的內部改良 Flink,主要針對業(yè)務場景需求,做了如下幾個優(yōu)化:
? 優(yōu)化了集群調度策略使得 Blink 能夠更好更合理地利用集群資源;
? 優(yōu)化了 checkpoint 機制,使得 Blink 能夠很高效地處理擁有很大狀態(tài)的 job;
? 優(yōu)化了 failover 的策略,使得 job 在異常的時候能夠更快恢復,從而對業(yè)務延遲造成更少的影響;
? 設計了異步算子,使得 Blink 能夠在即使被讀取外部數據阻塞的同時還能繼續(xù)處理其他 event,從而獲得整體非常高的吞吐率。

一個典型的 Blink workflow 示意圖
目前,Blink 已開放給開源社區(qū)。今年 8 月發(fā)布的 Flink 1.9.0 是阿里內部版本 Blink 合并入 Flink 后的首次發(fā)版,在今天的 Flink Forward 2019 大會上,阿里發(fā)布了 Flink 1.10 版本功能前瞻,正式版本預計于 2020 年 1 月發(fā)布。
Alink
而 Alink 則是基于 Flink 的機器學習算法庫,由阿里云機器學習 PAI 團隊開發(fā)。除了支持阿里的平臺外,還支持 Kafka,HDFS 和 HBase 等一系列開源數據存儲平臺。
這是一套分布式、批流一體的機器學習算法庫,它既非常好地利用了 Flink 批流一體的計算能力以及在機器學習基礎設施上的一些優(yōu)勢,又結合了一些業(yè)務場景需求,在機器學習方面有很強的性能。

開發(fā)者和數據分析師可以利用開源代碼來構建軟件功能,例如統(tǒng)計分析、機器學習、實時預測、個性化推薦和異常檢測。而 Alink 提供的一系列算法,可以幫助處理機器學習任務,例如 AI 驅動的客戶服務和產品推薦。
近日,阿里云計算部門已在 GitHub 上發(fā)布了其 Alink 平臺的「核心代碼」,并上傳了一系列算法庫,支持批處理和流處理,有利于機器學習相關任務。
更多信息:
https://developer.aliyun.com/article/738040?utm_content=g_1000092211
近年來,AI 場景發(fā)展得如火如荼,同時其計算規(guī)模也越來越大。這也讓專注于數據處理的 Flink 有了較大的發(fā)展空間。
在 Flink 社區(qū)對 AI 的大力支持下,F(xiàn)link 機器學習方面開發(fā)了支持 AI 場景,以及和 AI 原生的深度學習引擎實現(xiàn)協(xié)同,例如: Flink + TensorFlow、Flink + PyTorch 等,并提供大數據+AI 的全鏈路解決方案。
ML Pipeline
2019 年,F(xiàn)link 在 AI 方面首先部署了機器學習基礎設施,第一件事情便實現(xiàn)了 Flink ML Lib 的基礎 API,即 ML Pipeline。

ML Pipeline 的核心是機器學習的流程,其中的核心概念包含 Transformer、Estimator、Model 等。Flink 機器學習算法的開發(fā)人員可以使用這套 API 去開發(fā)不同的 Transformer、Estimator、Model,并實現(xiàn)各種經典的機器學習算法。
同時,基于 ML Pipeline 這套 API 還能夠自由組合組件來構建機器學習的訓練流程和預測流程。
Python 支持
對于 AI 算法的開發(fā)人員而言,目前主流的語言即為 Python。因此,F(xiàn)link 對于 Python 的支持也尤為重要。
在 2019 年,F(xiàn)link 社區(qū)也投入了大量的資源來完善 Flink 的 Python 生態(tài),并開發(fā)了 PyFlink 項目;與此同時,也在 Flink 1.9 版本中實現(xiàn)了 Python 對于 Table API 的支持。

除此之外,F(xiàn)link 1.10 版本還重點支持了 Python UDF 特性。這個部分直接使用成熟的框架,F(xiàn)link 社區(qū)與 Beam 社區(qū)之間開展了良好的合作,并使用了 Beam 的 Python 資源,比如:SDK、Framework 以及數據通信格式等。
Alink 的開放
據相關數據顯示,將 Alink 與主流的機器學習算法庫進行對比,它不僅能夠支持批式訓練的機器學習場景,也能夠支持在線的機器學習場景。

而 Alink 在離線的機器學習場景下與主流的 Spark ML 的對比顯示,其在功能集合上所有算法基本一致。
在性能對比方面,Alink 和 Spark ML 在離線訓練場景下的性能基本在一個水平線上。但 Alink 支持部分算法通過流式方法進行計算,更好地實現(xiàn)在線機器學習。

AI Flow
另外,AI 部分的新項目——AI Flow 也值得關注。AI Flow 是大數據及 AI 的處理流程平臺,在 AI Flow 中定義不同數據之間的關系以及元數據格式等就能夠非常方便地搭建一套大數據及 AI 處理的流程。

整個 Workflow 并不綁定某一引擎或者平臺,但是用戶可以借助 Flink 批流一體的能力去搭建自己的大數據及 AI 解決方案。目前,AI Flow 項目正在準備中,預計將于明年的第一季度以與 Alink 相同的模式進行開源。
如今,F(xiàn)link 的主要應用場景基本上還是數據分析,尤其是實時數據分析。Flink 本質上是一款流式數據處理引擎,覆蓋的場景主要是實時數據分析、實時風控、實時 ETL 處理等。未來,社區(qū)希望 Flink 演化成為統(tǒng)一的數據引擎。

? 在離線數據處理方面,希望 Flink 能夠在流數據處理的基礎之上進一步實現(xiàn)批與流的統(tǒng)一,提供統(tǒng)一的數據處理和分析的解決方案。
? 另一方面,朝著在線數據分析處理的方向演進,即利用 Flink 的核心優(yōu)勢、Event-Driven Function 的能力以及 Flink 自帶的狀態(tài)管理等特性實現(xiàn)在線的函數計算。
而對于 Alink,未來 Flink 社區(qū)希望使用新開發(fā)的 Alink 的算法,逐漸替換掉原有的一套機器學習算法庫 FlinkML 的算法,并期待著 Alink 成為新一代版本的 FlinkML。
但由于 Alink 包含了非常多的機器學習算法,預計往 Flink 貢獻或發(fā)布的時候整個過程耗時會比較長,所以 Alink 已經單獨開源,大家如果有需要的可以先用起來。

PyAlink 在 notebook 中使用示例
后面貢獻進展比較順利的情況下,Alink 應該能完全合并到 FlinkML,也就是直接進入 Flink 生態(tài)的主干,這時 FlinkML 就可以跟 SparkML 完全對應起來。
當然,在未來 Flink 也會進一步完善對于 Python API 和 UDF 的支持,在 ML Pipeline 上更多地支持 Python,同時也希望引入更多成熟的 Python 庫。

Github 開源地址:
雷鋒網 AI 開發(fā)者 雷鋒網
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。