如何将实时计算 Flink 与自身环境打通
簡(jiǎn)介: 如何使用實(shí)時(shí)計(jì)算 Flink 搞定數(shù)據(jù)處理難題?實(shí)時(shí)計(jì)算 Flink 客訓(xùn)練營(yíng)產(chǎn)品、技術(shù)專家齊上陣,從 Flink的發(fā)展、 Flink 的技術(shù)原理、應(yīng)用場(chǎng)景及行業(yè)案例,到開(kāi)源Flink功能介紹和實(shí)時(shí)計(jì)算 Flink 優(yōu)勢(shì)詳解,現(xiàn)場(chǎng)實(shí)操,9天即可上手! 本篇內(nèi)容將介紹如何實(shí)時(shí)計(jì)算 Flink 與自身環(huán)境打通。
一、運(yùn)行作業(yè)的Jar如何存儲(chǔ)在OSS上
在VVP平臺(tái)有兩種方法可以上傳作業(yè)的jar。
方法一,借助VVP提供的資源上傳功能,可以直接使用這個(gè)功能對(duì)Jar進(jìn)行上傳目前該功能支持200兆以內(nèi)的Jar包上傳。使用時(shí),直接在創(chuàng)建作業(yè)的時(shí)候選擇上傳的jar包就可以了,演示如下:
● 進(jìn)入到VVP平臺(tái),點(diǎn)擊左側(cè)資源上傳功能,然后在打開(kāi)頁(yè)面點(diǎn)擊右上角的上傳資源,選擇要上傳的Jar包,完成上傳;
● 上傳成功后,點(diǎn)擊左側(cè)創(chuàng)建作業(yè),完善作業(yè)名等信息。在Jar URI欄,下拉選擇剛剛上傳的Jar包,點(diǎn)擊確定完成創(chuàng)建作業(yè),然后啟動(dòng)即可使用。
方法二,直接在OSS的控制臺(tái)上面,將要使用的Jar上傳上去,然后使用OSS是提供的Jar鏈接來(lái)行使用。使用的時(shí)候也比較簡(jiǎn)單,直接使用OSS提供的Jar鏈接,演示如下:
● 打開(kāi)OSS控制臺(tái),選擇在創(chuàng)建VVP時(shí)候使用的Bucket,再選擇目錄,點(diǎn)擊上傳文件,上傳時(shí)可以將它的權(quán)限設(shè)置為公共讀,點(diǎn)擊上傳文件即完成;
● 使用時(shí),OSS控制臺(tái)上點(diǎn)擊已上傳包右側(cè)的“詳情”,獲取該Jar包的URL鏈接。
● 創(chuàng)建作業(yè)時(shí),將jar包的URL的鏈接填入Jar URI,如下圖所示:
需要注意,OSS詳情頁(yè)面提供的鏈接是公網(wǎng)訪問(wèn)的,開(kāi)通的VVP并不能直接訪問(wèn)公網(wǎng),所以在創(chuàng)建作業(yè)使用HTTPS的時(shí)候,需要使用VPC訪問(wèn)的endpoint(例如:https://vvp-training.oss-cn-shanghai-internal.aliyuncs.com/artifacts/namespaces/vvp-training/WordCount.jar),這樣才能正常的啟動(dòng)作業(yè)。
如果想用公網(wǎng)獲取一個(gè)HTTPS的鏈接,怎么操作呢?可以首先對(duì)VVP進(jìn)行公網(wǎng)打通,打通的操作流程可以參考阿里云幫助文檔中的《Flink 全托管集群如何訪問(wèn)公網(wǎng)》(https://help.aliyun.com/document_detail/174840.html),簡(jiǎn)單來(lái)說(shuō)步驟如下:
● 首先,創(chuàng)建一個(gè)NAT網(wǎng)關(guān)。創(chuàng)建時(shí)選擇“組合購(gòu)買ERP”,然后選擇區(qū)域并補(bǔ)充名稱等信息,然后綁定彈性公網(wǎng)IP,完成創(chuàng)建;
● 其次,創(chuàng)建SNAT條目。創(chuàng)建好NAT之后,點(diǎn)擊“創(chuàng)建SNAT條目”,在彈窗選擇交換機(jī)并補(bǔ)充名稱信息,完成創(chuàng)建。
完成上述兩個(gè)步驟,該VVP實(shí)例就已經(jīng)打通公網(wǎng),在創(chuàng)建Deployment時(shí)就可以直接使用https公網(wǎng)可訪問(wèn)的jar包了。
二、在VVP平臺(tái)上 Flink 如何與典型數(shù)據(jù)源進(jìn)行交互
這部介紹如何通過(guò)SQL以及connectors與外部的一些數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以SLS,Kafka作為數(shù)據(jù)源讀寫數(shù)據(jù)為例。
(實(shí)操演示)點(diǎn)擊SQL編輯器,創(chuàng)建一個(gè)Datagen Table,它是用于數(shù)據(jù)的隨機(jī)生成的,然后點(diǎn)擊運(yùn)行。然后再點(diǎn)擊生成一個(gè)SLS Table,補(bǔ)充所需參數(shù)信息,然后點(diǎn)擊創(chuàng)建完成。
創(chuàng)建完成后,寫入SQL語(yǔ)句,比如insert into sls select id, name from datagen,然后另存后點(diǎn)擊運(yùn)行,創(chuàng)建Deployment并啟動(dòng)。
當(dāng)作業(yè)成功運(yùn)行后,在SLS上查詢數(shù)據(jù)。如下圖所示,說(shuō)明datagen已經(jīng)生成數(shù)據(jù)并成功寫入SLS。
類似的,我們可以按照上面的步驟從SLS讀數(shù)據(jù)然后寫入Kafka:
● 在vvp的sql編輯器頁(yè)面創(chuàng)建一個(gè)Kafka table
● 用SQL語(yǔ)法從SLS讀取數(shù)據(jù)寫入Kafka中并啟動(dòng)
● 作業(yè)運(yùn)行成功后,即開(kāi)始從SLS讀數(shù)據(jù)寫入Kafka中
三、如何將VVP平臺(tái)上 Flink的指標(biāo)打入外部Metrics系統(tǒng)
接下介紹如果想把運(yùn)行作業(yè)的指標(biāo)放入到一些系統(tǒng)當(dāng)中去,并進(jìn)行指標(biāo)觀測(cè)。VVP提供了兩種方法:
方法一,VVP默認(rèn)的將 Flink 作業(yè)指標(biāo)打入到arms,不需要額外的處理,直接運(yùn)行作業(yè)之后,就能通過(guò)指標(biāo)按鈕看到,如下圖所示:
方法二,如果自己有指標(biāo)系統(tǒng),想把 Flink 的作業(yè)指標(biāo)打入到自己的系統(tǒng)里,主要有兩點(diǎn):首先保證VVP上作業(yè)與自己指標(biāo)系統(tǒng)網(wǎng)絡(luò)的連通性;其次在 Flink conf 中配置好相應(yīng)的metrics reporter。如下圖所示,在創(chuàng)建作業(yè)過(guò)程中,進(jìn)行metric配置(metrics reporters配置參考:https://ci.apache.org/projects/flink/flink-docs-release-1.11/monitoring/metrics.html):
例:使用premetheus的pushGateway方式,所以reporter class就選擇org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter。按上圖所示配置pushGateway的port和host,Metric reporter就配置完成了。作業(yè)啟動(dòng)成功后在配置好的grafana大盤上查看指標(biāo),如下例所示。
四、如何將Flink作業(yè)日志打入到外部系統(tǒng)
如果在作業(yè)運(yùn)行中,突然運(yùn)行失敗,我們想要查看運(yùn)行失敗作業(yè)的日志,就需要把 Flink 作業(yè)的日志保存下來(lái)。在VVP平臺(tái)為這個(gè)目的提供了兩種方案,將Logs寫入OSS中或SLS中,簡(jiǎn)單來(lái)說(shuō),在創(chuàng)建作業(yè)的時(shí)候, 在Log配置項(xiàng)里面配置一些Log參數(shù)。
配置參考文檔:https://help.aliyun.com/document_detail/173646.html
方法一,將日志寫入OSS中。在創(chuàng)建作業(yè)的時(shí)候,在高級(jí)配置中的Log配置里,選擇使用用戶自定義,然后將(幫助文檔)里面的配置放在自定義的配置中去,再將一些參數(shù)換成OSS的必要參數(shù)就可以了。
需要查看日志時(shí),可以通過(guò)幫助文檔的指導(dǎo),找到日志存放的文件,然后點(diǎn)擊下載查看。
方法二,將日志寫入SLS中。與方法一類似,只是LOG配置項(xiàng)稍有差異;下載和查看方法與方法一一致。
作者:阿里云實(shí)時(shí)計(jì)算Flink
原文鏈接?
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載
?
總結(jié)
以上是生活随笔為你收集整理的如何将实时计算 Flink 与自身环境打通的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何用Netty写一个高性能的分布式服务
- 下一篇: 10问10答:你真的了解线程池吗?