ApacheFlink?生態(tài)所面臨的機遇與挑戰(zhàn)-創(chuàng)新互聯(lián)

作者:簡鋒

為陸港等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及陸港網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計、陸港網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

引言

在談生態(tài)之前,我們來聊聊什么是生態(tài)。生態(tài)是指在某個特定領(lǐng)域,以某個組件為核心衍生出來其他多個組件,這些組件可以間接或者直接用到這個核心組件,然后輔助這個核心組件共同完成一個更大或者更特殊的任務(wù)。Flink生態(tài)圈就是指以Flink為核心的生態(tài)圈,F(xiàn)link屬于大數(shù)據(jù)生態(tài)里的計算環(huán)節(jié),只做計算,不做存儲。但是在實際工作當中,你會發(fā)現(xiàn)往往單獨用Flink是不夠的。比如你的數(shù)據(jù)是從哪里讀出來,F(xiàn)link計算完之后數(shù)據(jù)又將存到哪里,又怎么消費這些數(shù)據(jù)。如何利用Flink來完成某個垂直領(lǐng)域的特殊任務(wù)等等。這些涉及到上下游,或者更高抽象的任務(wù)都需要一個強大的生態(tài)圈來完成。

Flink生態(tài)的現(xiàn)狀

在講清楚了什么是生態(tài)之后,我們來聊聊目前Flink生態(tài)的現(xiàn)狀。整體而言Flink生態(tài)還處于相對初級的階段。Flink生態(tài)目前主要側(cè)重于各種上下游的connector和對各種集群的支持。

截至目前Flink支持的connector有:Kafka,Cassandra,Elasticsearch,Kinesis,RabbitMQ,JDBC,HDFS等等,基本支持所有主流數(shù)據(jù)源。在集群支持方面,目前Flink支持Standalone和YARN。基于目前生態(tài)的狀況,F(xiàn)link仍然主要應(yīng)用于流數(shù)據(jù)的計算。如果要用Flink要做其他一些場景(機器學(xué)習(xí),交互式分析)就會比較復(fù)雜,用戶體驗上還有很大的提升空間。這也正是Flink生態(tài)所面臨的挑戰(zhàn)和機遇。

Flink生態(tài)的挑戰(zhàn)和機遇

Flink致力于作為一個批流統(tǒng)一的大數(shù)據(jù)計算平臺,還有很多潛力沒有發(fā)揮出來,要完全發(fā)揮出它的潛力,就需要一個強大的生態(tài)系統(tǒng)。總的來說我們可以從2個維度來看這個生態(tài)系統(tǒng):

  1. 橫向維度。 橫向維度的生態(tài)主要是為構(gòu)建一個端到端的解決方案。比如連接上下游數(shù)據(jù)源的各種connector,與下游機器學(xué)習(xí)框架的整合,與下游BI工具的整合,方便提交和運維Flink Job的工具,提供更好交互式分析體驗的Notebook。

  2. 縱向維度。縱向維度是指更加抽象化Flink的計算引擎以適應(yīng)各種計算場景。比如批流計算的統(tǒng)一,更高計算抽象層Table API,復(fù)雜事件處理引擎(CEP),更高機器學(xué)習(xí)計算框架(Flink ML),對各種集群框架的適配等等。

下圖是對整個Flink生態(tài)在橫向和縱向2個維度的描述。

接下來我會對幾個主要的生態(tài)點進行逐個闡述

Flink對Hive的集成和支持

Apache Hive是一個有將近10年歷史的Apache頂級項目。項目最初在MapReduce引擎的基礎(chǔ)上封裝了SQL,用戶不再需要寫復(fù)雜的MapReduce Job,而只需寫簡單熟悉的SQL語句,用戶的SQL會被翻譯成一個或多個MapReduce Job。隨著項目的不斷演進,Hive的計算引擎發(fā)展成可以插拔式,比如,現(xiàn)在Hive就支持MR, Tez, Spark 3種計算引擎。Apache Hive現(xiàn)在已經(jīng)成為Hadoop生態(tài)圈中事實上數(shù)據(jù)倉庫的標準,很多公司的數(shù)據(jù)倉庫系統(tǒng)已經(jīng)在Hive上運轉(zhuǎn)了很多年。

Flink作為一個批流統(tǒng)一的計算框架,與Hive的集成就變得很自然了。比如通過Flink來做實時ETL,構(gòu)建實時數(shù)據(jù)倉庫,然后用Hive SQL做實時數(shù)據(jù)的查詢。

Flink社區(qū)已經(jīng)創(chuàng)建了 FLINK-10556 來對Hive更好的集成和支持。主要實現(xiàn)的功能有以下幾點:

  • 允許Flink訪問Hive的元數(shù)據(jù)

  • 允許Flink訪問Hive的表數(shù)據(jù)

  • Flink兼容Hive的數(shù)據(jù)類型

  • Flink可以使用Hive UDF

  • 可以在Flink里使用Hive SQL(包括DML和DDL)

Flink社區(qū)正在逐漸實現(xiàn)以上功能。如果你想提前體驗以上功能,可以試用阿里巴巴開源的Blink。開源的Blink已經(jīng)在元數(shù)據(jù)(meta data)和數(shù)據(jù)層將Flink和Hive對接和打通, 用戶可以直接用Flink SQL去查詢Hive的數(shù)據(jù),真正能夠做到在Hive引擎和Flink引擎之間的自由切換。為了打通元數(shù)據(jù),Blink重構(gòu)了Flink catalog的實現(xiàn),并且增加了兩種catalog,一個是基于內(nèi)存存儲的FlinkInMemoryCatalog,另外一個是能夠橋接Hive MetaStore的HiveCatalog。有了這個HiveCatalog,F(xiàn)link作業(yè)就能讀取Hive的MetaData。為了打通數(shù)據(jù),Blink實現(xiàn)了HiveTableSource,使得Flink job可以直接讀取Hive中普通表和分區(qū)表的數(shù)據(jù)。因此,通過這個版本,用戶可以使用Flink SQL讀取已有的Hive meta和data,做數(shù)據(jù)處理。未來阿里巴巴將在Flink上繼續(xù)加大對Hive兼容性的支持,包括支持Hive特有的query,data type,和Hive UDF等等,這些改進都會陸續(xù)回饋到Flink社區(qū)。

Flink對交互式分析的支持

批處理是流處理之外另一個更大的應(yīng)用場景。而交互式分析又是批處理的一個大類,特別對于數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家,交互式分析尤為重要。

對于交互式分析,F(xiàn)link本身需要做進一步的改進,以提高Flink在交互式分析方面的性能要求。比如 FLINK-11199,現(xiàn)在在同一個Flink App中的多個Job之間是沒法共享數(shù)據(jù)的,每個Job的DAG是獨立的,F(xiàn)LINK-11199 就是要解決這個問題,從而對交互式分析提供更友好的支持。

此外,我們需要提供一個交互式分析的平臺讓數(shù)據(jù)分析師/數(shù)據(jù)科學(xué)家更高效得使用Flink。在這方面Apache Zeppelin已經(jīng)做了很多工作。 Apache Zeppelin也是Apache的頂級項目,Zeppelin提供一個交互式開發(fā)環(huán)境,支持Scala,Python,SQL等多種語言,此外Zeppelin天然具有極強的可擴展性,支持多種大數(shù)據(jù)引擎,比如Spark,Hive,Pig等等。阿里巴巴做了大量的工作讓Zeppelin能夠更好的支持Flink。用戶可以直接在Zeppelin里面寫Flink代碼(Scala或者SQL),而不用在本地打包,然后用bin/flink腳本來手動提交Job,在Zeppelin里你可以直接提交Job,然后看到Job的結(jié)果,Job結(jié)果既可以是文本形式,也可以是可視化出來,特別對于SQL的結(jié)果,可視化尤為顯得重要。下面這些是Zeppelin對Flink支持的一些要點:

  • 支持3種運行模式:Local, Remote和Yarn

  • 支持運行Scala,Batch Sql和Stream Sql

  • 支持可視化靜態(tài)table和動態(tài)table

  • 自動關(guān)聯(lián)Job URL

  • 支持Cancel Job

  • 支持Flink job的savepoint

  • 支持ZeppelinContext的高級功能,比如創(chuàng)建控件

  • 提供3個tutorial notes: Streaming ETL, Flink Batch Tutorial, Flink Stream Tutorial

這些改動有些是在Flink上的,有些是在Zeppelin上的。在這些改動全部推回Flink和Zeppelin社區(qū)之前,大家可以使用這個Zeppelin Docker Image (Blink開源文檔里的examples中有具體如何下載安裝的細節(jié))來測試和使用這些功能。為了方便用戶試用,我們在這一版zeppelin中提供3個built-in的Flink tutorial的例子: 一個是做Streaming ETL的例子, 另外兩個分別是做Flink Batch, Flink Stream的基礎(chǔ)樣例。具體如何使用,可以參考以下2個鏈接

  • https://flink-china.org/doc/blink/ops/zeppelin.html

  • https://flink-china.org/doc/blink/quickstart/zeppelin_quickstart.html

Flink對機器學(xué)習(xí)的支持

Apache Flink?生態(tài)所面臨的機遇與挑戰(zhàn)

Flink作為一個大數(shù)據(jù)架構(gòu)中最重要的計算引擎組件,目前主要的應(yīng)用場景還是在做傳統(tǒng)的數(shù)據(jù)計算和處理,也就是傳統(tǒng)的BI(比如實時數(shù)據(jù)倉庫,實時統(tǒng)計報表等等)。而21世紀將是一個AI爆發(fā)的世紀,越來越多的企業(yè)和行業(yè)開始啟用AI技術(shù)來重新革命自己的行業(yè)。Flink作為一個大數(shù)據(jù)計算引擎在這一革命中不可或缺。雖然Flink并不是為機器學(xué)習(xí)而生的,但是在機器學(xué)習(xí)中也將扮演不可或缺的角色。未來Flink在機器學(xué)習(xí)領(lǐng)域主要有3件大事可以做

  • 機器學(xué)習(xí)Pipeline的構(gòu)建

  • 傳統(tǒng)機器學(xué)習(xí)算法的支持

  • 與其他深度學(xué)習(xí)框架的整合

機器學(xué)習(xí)主要分2個階段:Training和Predication。但Training和Predication只是做機器學(xué)習(xí)的一小部分,在Training之前要做數(shù)據(jù)的清洗,轉(zhuǎn)換以及Normalization等等,Training之后要做Model的Evaluation。Predication階段也是如此。對于一個復(fù)雜的機器學(xué)習(xí)系統(tǒng),如何將每個步驟很好的整合起來對于一個系統(tǒng)的健壯性和可擴展性顯得尤為重要。FLINK-11095 就是社區(qū)為此正在做的努力。

目前Flink有個flink-ml的模塊實現(xiàn)了一些傳統(tǒng)的機器學(xué)習(xí)方法,但是仍然需要進一步的改進。

對于深度學(xué)習(xí)的支持,F(xiàn)link社區(qū)也在這個領(lǐng)域也在積極努力。阿里巴巴內(nèi)部有TensorFlow on Flink的項目,用戶可以在Flink Job中運行Tensorflow,F(xiàn)link做數(shù)據(jù)處理,然后將處理完之后的數(shù)據(jù)發(fā)送給Tensorflow的Python進程做深度學(xué)習(xí)訓(xùn)練。在語言層面,F(xiàn)link正在做對Python的支持。目前Flink只支持Java和Scala的API。這2種語言都是基于JVM的語言,比較適合做系統(tǒng)的大數(shù)據(jù)工程師,而不適合做數(shù)據(jù)分析的Data Analyst和做機器學(xué)習(xí)的Data Scientist。做數(shù)據(jù)分析和機器學(xué)習(xí)的人一般會比較喜歡用Python和R等這類更高級的語言。目前Flink社區(qū)也在這方面努力,首先Flink會支持Python, 社區(qū)已經(jīng)在這塊開始討論,因為Python在近幾年發(fā)展的特別快,這主要得益于AI和Deep Learning的發(fā)展。目前流行的Deep Learning的library都提供Python的API,比如TensorFlow,Pytorch,Keras等等。通過對Python語言的支持,用戶可以用一種語言將整個機器學(xué)習(xí)的Pipeline串接起來,從而提高開發(fā)的效率。

Flink Job的提交和運維

在開發(fā)環(huán)境里,一般是通過執(zhí)行shell 命令 bin/flink run 來提交Flink Job。但在真正生產(chǎn)環(huán)境里面,這種方式就會有很多問題。比如如何跟蹤管理Job的狀態(tài),在Job失敗的情況下如何重試,如何并發(fā)啟動多個Flink Job,如何方便修改提交Job的參數(shù)等等。這些問題雖然可以通過人工干預(yù)來解決,但在生產(chǎn)環(huán)境里人工干預(yù)是最危險的,能自動化的操作我們都要將其自動化。在Flink生態(tài)圈里目前的確缺少這樣一個工具。阿里巴巴內(nèi)部已經(jīng)有了這樣一個工具,而且在生產(chǎn)環(huán)境里穩(wěn)定運行了很長時間,已經(jīng)被實踐證明是一個可靠穩(wěn)定的提交和運維Flink Job的工具。目前阿里巴巴正在準備開源這個項目,剝離一些阿里巴巴內(nèi)部依賴的組件,預(yù)計2019年上半年會開源。

總的來說,F(xiàn)link生態(tài)目前問題很多,機會也很多。Apache Flink社區(qū)在不斷努力去構(gòu)建一個更加強大的Flink生態(tài)來發(fā)揮其強大的計算引擎能力,希望有志參與其中的人可以積極參與,讓我們一起努力來構(gòu)建一個健康強大的Flink生態(tài)圈。

更多資訊請訪問 Apache Flink 中文社區(qū)網(wǎng)站

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文題目:ApacheFlink?生態(tài)所面臨的機遇與挑戰(zhàn)-創(chuàng)新互聯(lián)
瀏覽路徑:http://www.muchs.cn/article20/coipco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站排名、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、軟件開發(fā)小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名