作者:簡(jiǎn)鋒
為陸港等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及陸港網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、陸港網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!在談生態(tài)之前,我們來(lái)聊聊什么是生態(tài)。生態(tài)是指在某個(gè)特定領(lǐng)域,以某個(gè)組件為核心衍生出來(lái)其他多個(gè)組件,這些組件可以間接或者直接用到這個(gè)核心組件,然后輔助這個(gè)核心組件共同完成一個(gè)更大或者更特殊的任務(wù)。Flink生態(tài)圈就是指以Flink為核心的生態(tài)圈,F(xiàn)link屬于大數(shù)據(jù)生態(tài)里的計(jì)算環(huán)節(jié),只做計(jì)算,不做存儲(chǔ)。但是在實(shí)際工作當(dāng)中,你會(huì)發(fā)現(xiàn)往往單獨(dú)用Flink是不夠的。比如你的數(shù)據(jù)是從哪里讀出來(lái),F(xiàn)link計(jì)算完之后數(shù)據(jù)又將存到哪里,又怎么消費(fèi)這些數(shù)據(jù)。如何利用Flink來(lái)完成某個(gè)垂直領(lǐng)域的特殊任務(wù)等等。這些涉及到上下游,或者更高抽象的任務(wù)都需要一個(gè)強(qiáng)大的生態(tài)圈來(lái)完成。
在講清楚了什么是生態(tài)之后,我們來(lái)聊聊目前Flink生態(tài)的現(xiàn)狀。整體而言Flink生態(tài)還處于相對(duì)初級(jí)的階段。Flink生態(tài)目前主要側(cè)重于各種上下游的connector和對(duì)各種集群的支持。
截至目前Flink支持的connector有:Kafka,Cassandra,Elasticsearch,Kinesis,RabbitMQ,JDBC,HDFS等等,基本支持所有主流數(shù)據(jù)源。在集群支持方面,目前Flink支持Standalone和YARN。基于目前生態(tài)的狀況,F(xiàn)link仍然主要應(yīng)用于流數(shù)據(jù)的計(jì)算。如果要用Flink要做其他一些場(chǎng)景(機(jī)器學(xué)習(xí),交互式分析)就會(huì)比較復(fù)雜,用戶(hù)體驗(yàn)上還有很大的提升空間。這也正是Flink生態(tài)所面臨的挑戰(zhàn)和機(jī)遇。
Flink致力于作為一個(gè)批流統(tǒng)一的大數(shù)據(jù)計(jì)算平臺(tái),還有很多潛力沒(méi)有發(fā)揮出來(lái),要完全發(fā)揮出它的潛力,就需要一個(gè)強(qiáng)大的生態(tài)系統(tǒng)。總的來(lái)說(shuō)我們可以從2個(gè)維度來(lái)看這個(gè)生態(tài)系統(tǒng):
橫向維度。 橫向維度的生態(tài)主要是為構(gòu)建一個(gè)端到端的解決方案。比如連接上下游數(shù)據(jù)源的各種connector,與下游機(jī)器學(xué)習(xí)框架的整合,與下游BI工具的整合,方便提交和運(yùn)維Flink Job的工具,提供更好交互式分析體驗(yàn)的Notebook。
下圖是對(duì)整個(gè)Flink生態(tài)在橫向和縱向2個(gè)維度的描述。
接下來(lái)我會(huì)對(duì)幾個(gè)主要的生態(tài)點(diǎn)進(jìn)行逐個(gè)闡述
Apache Hive是一個(gè)有將近10年歷史的Apache頂級(jí)項(xiàng)目。項(xiàng)目最初在MapReduce引擎的基礎(chǔ)上封裝了SQL,用戶(hù)不再需要寫(xiě)復(fù)雜的MapReduce Job,而只需寫(xiě)簡(jiǎn)單熟悉的SQL語(yǔ)句,用戶(hù)的SQL會(huì)被翻譯成一個(gè)或多個(gè)MapReduce Job。隨著項(xiàng)目的不斷演進(jìn),Hive的計(jì)算引擎發(fā)展成可以插拔式,比如,現(xiàn)在Hive就支持MR, Tez, Spark 3種計(jì)算引擎。Apache Hive現(xiàn)在已經(jīng)成為Hadoop生態(tài)圈中事實(shí)上數(shù)據(jù)倉(cāng)庫(kù)的標(biāo)準(zhǔn),很多公司的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)已經(jīng)在Hive上運(yùn)轉(zhuǎn)了很多年。
Flink作為一個(gè)批流統(tǒng)一的計(jì)算框架,與Hive的集成就變得很自然了。比如通過(guò)Flink來(lái)做實(shí)時(shí)ETL,構(gòu)建實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù),然后用Hive SQL做實(shí)時(shí)數(shù)據(jù)的查詢(xún)。
Flink社區(qū)已經(jīng)創(chuàng)建了 FLINK-10556 來(lái)對(duì)Hive更好的集成和支持。主要實(shí)現(xiàn)的功能有以下幾點(diǎn):
允許Flink訪(fǎng)問(wèn)Hive的元數(shù)據(jù)
允許Flink訪(fǎng)問(wèn)Hive的表數(shù)據(jù)
Flink兼容Hive的數(shù)據(jù)類(lèi)型
Flink可以使用Hive UDF
Flink社區(qū)正在逐漸實(shí)現(xiàn)以上功能。如果你想提前體驗(yàn)以上功能,可以試用阿里巴巴開(kāi)源的Blink。開(kāi)源的Blink已經(jīng)在元數(shù)據(jù)(meta data)和數(shù)據(jù)層將Flink和Hive對(duì)接和打通, 用戶(hù)可以直接用Flink SQL去查詢(xún)Hive的數(shù)據(jù),真正能夠做到在Hive引擎和Flink引擎之間的自由切換。為了打通元數(shù)據(jù),Blink重構(gòu)了Flink catalog的實(shí)現(xiàn),并且增加了兩種catalog,一個(gè)是基于內(nèi)存存儲(chǔ)的FlinkInMemoryCatalog,另外一個(gè)是能夠橋接Hive MetaStore的HiveCatalog。有了這個(gè)HiveCatalog,F(xiàn)link作業(yè)就能讀取Hive的MetaData。為了打通數(shù)據(jù),Blink實(shí)現(xiàn)了HiveTableSource,使得Flink job可以直接讀取Hive中普通表和分區(qū)表的數(shù)據(jù)。因此,通過(guò)這個(gè)版本,用戶(hù)可以使用Flink SQL讀取已有的Hive meta和data,做數(shù)據(jù)處理。未來(lái)阿里巴巴將在Flink上繼續(xù)加大對(duì)Hive兼容性的支持,包括支持Hive特有的query,data type,和Hive UDF等等,這些改進(jìn)都會(huì)陸續(xù)回饋到Flink社區(qū)。
批處理是流處理之外另一個(gè)更大的應(yīng)用場(chǎng)景。而交互式分析又是批處理的一個(gè)大類(lèi),特別對(duì)于數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家,交互式分析尤為重要。
對(duì)于交互式分析,F(xiàn)link本身需要做進(jìn)一步的改進(jìn),以提高Flink在交互式分析方面的性能要求。比如 FLINK-11199,現(xiàn)在在同一個(gè)Flink App中的多個(gè)Job之間是沒(méi)法共享數(shù)據(jù)的,每個(gè)Job的DAG是獨(dú)立的,F(xiàn)LINK-11199 就是要解決這個(gè)問(wèn)題,從而對(duì)交互式分析提供更友好的支持。
此外,我們需要提供一個(gè)交互式分析的平臺(tái)讓數(shù)據(jù)分析師/數(shù)據(jù)科學(xué)家更高效得使用Flink。在這方面Apache Zeppelin已經(jīng)做了很多工作。 Apache Zeppelin也是Apache的頂級(jí)項(xiàng)目,Zeppelin提供一個(gè)交互式開(kāi)發(fā)環(huán)境,支持Scala,Python,SQL等多種語(yǔ)言,此外Zeppelin天然具有極強(qiáng)的可擴(kuò)展性,支持多種大數(shù)據(jù)引擎,比如Spark,Hive,Pig等等。阿里巴巴做了大量的工作讓Zeppelin能夠更好的支持Flink。用戶(hù)可以直接在Zeppelin里面寫(xiě)Flink代碼(Scala或者SQL),而不用在本地打包,然后用bin/flink腳本來(lái)手動(dòng)提交Job,在Zeppelin里你可以直接提交Job,然后看到Job的結(jié)果,Job結(jié)果既可以是文本形式,也可以是可視化出來(lái),特別對(duì)于SQL的結(jié)果,可視化尤為顯得重要。下面這些是Zeppelin對(duì)Flink支持的一些要點(diǎn):
支持3種運(yùn)行模式:Local, Remote和Yarn
支持運(yùn)行Scala,Batch Sql和Stream Sql
支持可視化靜態(tài)table和動(dòng)態(tài)table
自動(dòng)關(guān)聯(lián)Job URL
支持Cancel Job
支持Flink job的savepoint
支持ZeppelinContext的高級(jí)功能,比如創(chuàng)建控件
這些改動(dòng)有些是在Flink上的,有些是在Zeppelin上的。在這些改動(dòng)全部推回Flink和Zeppelin社區(qū)之前,大家可以使用這個(gè)Zeppelin Docker Image (Blink開(kāi)源文檔里的examples中有具體如何下載安裝的細(xì)節(jié))來(lái)測(cè)試和使用這些功能。為了方便用戶(hù)試用,我們?cè)谶@一版zeppelin中提供3個(gè)built-in的Flink tutorial的例子: 一個(gè)是做Streaming ETL的例子, 另外兩個(gè)分別是做Flink Batch, Flink Stream的基礎(chǔ)樣例。具體如何使用,可以參考以下2個(gè)鏈接
https://flink-china.org/doc/blink/ops/zeppelin.html
Flink作為一個(gè)大數(shù)據(jù)架構(gòu)中最重要的計(jì)算引擎組件,目前主要的應(yīng)用場(chǎng)景還是在做傳統(tǒng)的數(shù)據(jù)計(jì)算和處理,也就是傳統(tǒng)的BI(比如實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù),實(shí)時(shí)統(tǒng)計(jì)報(bào)表等等)。而21世紀(jì)將是一個(gè)AI爆發(fā)的世紀(jì),越來(lái)越多的企業(yè)和行業(yè)開(kāi)始啟用AI技術(shù)來(lái)重新革命自己的行業(yè)。Flink作為一個(gè)大數(shù)據(jù)計(jì)算引擎在這一革命中不可或缺。雖然Flink并不是為機(jī)器學(xué)習(xí)而生的,但是在機(jī)器學(xué)習(xí)中也將扮演不可或缺的角色。未來(lái)Flink在機(jī)器學(xué)習(xí)領(lǐng)域主要有3件大事可以做
機(jī)器學(xué)習(xí)Pipeline的構(gòu)建
傳統(tǒng)機(jī)器學(xué)習(xí)算法的支持
機(jī)器學(xué)習(xí)主要分2個(gè)階段:Training和Predication。但Training和Predication只是做機(jī)器學(xué)習(xí)的一小部分,在Training之前要做數(shù)據(jù)的清洗,轉(zhuǎn)換以及Normalization等等,Training之后要做Model的Evaluation。Predication階段也是如此。對(duì)于一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)系統(tǒng),如何將每個(gè)步驟很好的整合起來(lái)對(duì)于一個(gè)系統(tǒng)的健壯性和可擴(kuò)展性顯得尤為重要。FLINK-11095 就是社區(qū)為此正在做的努力。
目前Flink有個(gè)flink-ml的模塊實(shí)現(xiàn)了一些傳統(tǒng)的機(jī)器學(xué)習(xí)方法,但是仍然需要進(jìn)一步的改進(jìn)。
對(duì)于深度學(xué)習(xí)的支持,F(xiàn)link社區(qū)也在這個(gè)領(lǐng)域也在積極努力。阿里巴巴內(nèi)部有TensorFlow on Flink的項(xiàng)目,用戶(hù)可以在Flink Job中運(yùn)行Tensorflow,F(xiàn)link做數(shù)據(jù)處理,然后將處理完之后的數(shù)據(jù)發(fā)送給Tensorflow的Python進(jìn)程做深度學(xué)習(xí)訓(xùn)練。在語(yǔ)言層面,F(xiàn)link正在做對(duì)Python的支持。目前Flink只支持Java和Scala的API。這2種語(yǔ)言都是基于JVM的語(yǔ)言,比較適合做系統(tǒng)的大數(shù)據(jù)工程師,而不適合做數(shù)據(jù)分析的Data Analyst和做機(jī)器學(xué)習(xí)的Data Scientist。做數(shù)據(jù)分析和機(jī)器學(xué)習(xí)的人一般會(huì)比較喜歡用Python和R等這類(lèi)更高級(jí)的語(yǔ)言。目前Flink社區(qū)也在這方面努力,首先Flink會(huì)支持Python, 社區(qū)已經(jīng)在這塊開(kāi)始討論,因?yàn)镻ython在近幾年發(fā)展的特別快,這主要得益于AI和Deep Learning的發(fā)展。目前流行的Deep Learning的library都提供Python的API,比如TensorFlow,Pytorch,Keras等等。通過(guò)對(duì)Python語(yǔ)言的支持,用戶(hù)可以用一種語(yǔ)言將整個(gè)機(jī)器學(xué)習(xí)的Pipeline串接起來(lái),從而提高開(kāi)發(fā)的效率。
在開(kāi)發(fā)環(huán)境里,一般是通過(guò)執(zhí)行shell 命令 bin/flink run 來(lái)提交Flink Job。但在真正生產(chǎn)環(huán)境里面,這種方式就會(huì)有很多問(wèn)題。比如如何跟蹤管理Job的狀態(tài),在Job失敗的情況下如何重試,如何并發(fā)啟動(dòng)多個(gè)Flink Job,如何方便修改提交Job的參數(shù)等等。這些問(wèn)題雖然可以通過(guò)人工干預(yù)來(lái)解決,但在生產(chǎn)環(huán)境里人工干預(yù)是最危險(xiǎn)的,能自動(dòng)化的操作我們都要將其自動(dòng)化。在Flink生態(tài)圈里目前的確缺少這樣一個(gè)工具。阿里巴巴內(nèi)部已經(jīng)有了這樣一個(gè)工具,而且在生產(chǎn)環(huán)境里穩(wěn)定運(yùn)行了很長(zhǎng)時(shí)間,已經(jīng)被實(shí)踐證明是一個(gè)可靠穩(wěn)定的提交和運(yùn)維Flink Job的工具。目前阿里巴巴正在準(zhǔn)備開(kāi)源這個(gè)項(xiàng)目,剝離一些阿里巴巴內(nèi)部依賴(lài)的組件,預(yù)計(jì)2019年上半年會(huì)開(kāi)源。
總的來(lái)說(shuō),F(xiàn)link生態(tài)目前問(wèn)題很多,機(jī)會(huì)也很多。Apache Flink社區(qū)在不斷努力去構(gòu)建一個(gè)更加強(qiáng)大的Flink生態(tài)來(lái)發(fā)揮其強(qiáng)大的計(jì)算引擎能力,希望有志參與其中的人可以積極參與,讓我們一起努力來(lái)構(gòu)建一個(gè)健康強(qiáng)大的Flink生態(tài)圈。
更多資訊請(qǐng)?jiān)L問(wèn) Apache Flink 中文社區(qū)網(wǎng)站
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
本文題目:ApacheFlink?生態(tài)所面臨的機(jī)遇與挑戰(zhàn)-創(chuàng)新互聯(lián)
瀏覽路徑:http://m.newbst.com/article20/coipco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站排名、全網(wǎng)營(yíng)銷(xiāo)推廣、靜態(tài)網(wǎng)站、軟件開(kāi)發(fā)、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容