Flink On Zeppelin 運維實戰(zhàn)
? ? Apache?Flink是一個框架和分布式處理引擎,用于在無邊界和有邊界數(shù)據(jù)流上進行有狀態(tài)的計算。Flink?能在所有常見集群環(huán)境中運行,并能以內存速度和任意規(guī)模進行計算。是實時計算,實時數(shù)據(jù)倉的常用技術之一。但是Flink自帶的web頁面和console直接用來做開發(fā),其任務的管理與編輯的確有點不自然。對此,進行Flink任務管理相關平臺的調研。
1.Flink?web工具調研
????Flink的任務管理,出現(xiàn)了很多新興的管理工具,對此也做了一些此方面的調研。這里采用Flink?1.13.2?版本。對Dinky,flink-web,tair,zeppelin等進行了一些測試和對比。
???其中就頁面可觀性與使用規(guī)范,功能強度來說,Dinky是最好的。如果實時平臺采用FLink?SQL進行模塊開發(fā)的話,這是一個不錯的選擇。Flink-web全稱是flink-streaming-platform-web,在最新版本,頁面做了很大的優(yōu)化客觀了很多,但是在Flink版本調試的時候,F(xiàn)link?1.13.2?只能使用它的老版本,一下心里落差就很大。就放棄了他們的測試驗證。Tair當時采用官網(wǎng)的Docker案例進行安裝,發(fā)現(xiàn)安裝過程中就有一堆坑,就沒繼續(xù)進行下去了。整體而言,Dinky是一個美觀,高效,功能完整的Flink開發(fā)管理平臺。
???但是,相對來說,公司已經(jīng)有一套元數(shù)據(jù)管理功能模塊,可以將Flink進行接入,不想再要一套Flink?的元數(shù)據(jù)。并且在Dinky與Flink的調試過程中,存在依賴jar之間的沖突。所以,最后還是將重點偏移到Zeppelin上。
???Zeppelin,支撐比較多的查詢模式。環(huán)境中已經(jīng)集成有HIVE,Presto,Spark-SQL,Spark等功能模塊,并且可以稍加配置就可以進行Flink的支撐。在調試過程中,整體難度相對nice,所以最終還是選擇了Zeppelin。
2.部署安裝
2.1.版本選擇
??Flink有個很大的坑點,對依賴的版本特別嚴重,一個沖突就完全GG,經(jīng)過調試與驗收。Flink?1.13.2?+?zeppelin?0.10.1?可以運行。切記,另外一個版本配置是:Flink?1.11.6?+?Zeppelin?0.9.0?也可以。本著高版本的想法,最后選擇了Flink?1.13.2?+?zeppelin?1.10.1?進行實際的驗證。而Hadoop,這是使用HDP?3.0.0進行hadoop集群的提供。
2.2部署安裝
??Flink?采用的本地模式安裝,安裝在宿主機的目錄和系統(tǒng)中,安裝步驟百度會有很多方法,這里不做描述。而對于zeppelin,屬于web類應用,并且前期為了各種測試環(huán)境,防止把系統(tǒng)配置出錯,所以采用的docker模式安裝。經(jīng)過N多次的測試,以下啟動命令可直接使用。
用以上docker啟動命令,即可啟動一個zeppelin的案例。啟動后,直接訪問:http://${zeppelin_host_ip}:8080
3.?zeppelin與flink相關配置
3.1?flink的配置
??在flink啟動時候,需要設置HADOOP_CONF_DIR目錄配置,并且確保hadoop命令在系統(tǒng)的環(huán)境變量中,確定能使用hadoop?classhome?來進行信息讀取。為了防止主機與docker中環(huán)境變量的設置。額外做了設置。
在flink的命令:${FLINK_HOME}/bin/flink,${FLINK_HOME}/bin/config.sh中添加環(huán)境變量設置
3.2?Zeppelin配置
zeppelin?的配置,已經(jīng)映射到本地/data/zeppelin/conf,只需要改下面的配置即可。
1.開啟用戶驗證
直接anyone的訪問是不安全的。所以最開始需要啟動用戶驗證功能。
其中默認自帶了admin和user用戶的配置。測試階段,默認即可。
修改完成后,zeppelin需要登錄后才能訪問

2.zeppelin-site.xml
此文件是zeppelin的重點配置文件。很多配置項目均在這里配置。主要修改網(wǎng)絡監(jiān)聽網(wǎng)斷與端口即可。其他配置,自行研究。
4.Flink?On?Zeppelin
調試Flink在Zeppelin上的支持,其中Zeppelin在Demo中提供很多Flink的測試安裝。在測試環(huán)境關聯(lián)性階段,直接使用第一個文件即可。

接下來,進行flink多個模式的調試。
4.1?Local
local?模式,會在本地啟動一個flink集群,然后再啟動具體的任務。
配置的話想對簡單,只需要配置FLINK_HOME與flink.execution.mode=local

配置完成后,運行demo信息。第一次需要建立集群,想對較慢。

注意,此模式,需要本地啟用flink集群,端口8081不能被占用。
4.?2?remote(yarn-session)
如果已經(jīng)有現(xiàn)成flink集群,那么采用remote模式進行安裝調試。其中你的集群可以是Flink的cluster模式。也可以是yarn-session模式。
補充:yarn-session模式查看url的方法:???????????????????????
1.?在啟動日志中查詢

2.在yarn的app日志中查詢

2.zeppelin?配置
主要修改為flink的地址,需要修改三個參數(shù):flink.execution.mode=remote,flink.execution.remote.host=實際主機地址,flink.execution.remote.port=?實際運行IP

4.3?yarn
yarn模式是Flink的Deprecated模式。會在Yarn集群中動態(tài)創(chuàng)建一個Flink?Cluster,然后你就可以往這個Flink?Session?Cluster提交Flink?Job。
配置參數(shù)如下:

截圖如下:

4.4?Yarn-Application
Yarn?App模式,是將所有的flink任務都丟到Yarn上面去運行,生產(chǎn)環(huán)境中,建議使用此模式進行運行。此處需要特殊說明,需要zeppelin?需要0.10.0?以上版本,F(xiàn)link?需要1.11?以上版本,才能支持這個參數(shù)的配置,否者會報錯,無此mode。
flink.execution.mode=yarn-application
以上方式,均可進行Zeppelin中進行關于Flink?Demo?1.Flink?Basics任務的調用。其他任務還有其他依賴,需要在Flink中加入依賴包。加入的依賴包與Zeppelin可能有沖突,再后續(xù)額外說明。
Yarn?App模式的運行截圖。

補充說明
·1.普通的Flink?on?Yarn?運行模式
這種模式客戶端?Flink?Interpreter?進程運行在?Zeppelin所在的機器這邊,每個客戶端對應一個Yarn上的Flink?Cluster,如果Flink?Interpreter進程很多,會對Zeppelin這臺機器造成很大的壓力。

·2?.Yarn?Interpreter?模式
??Yarn?Interpreter?把客戶端?Flink?Interpreter?進程移到了?Yarn集群,把資源壓力轉移到了Yarn集群,解決上上面普通Flink?on?Yarn?運行模式的一部分問題,這種模式會需要為每個Flink?Cluster額外申請一個Yarn?Container來運行這個Flink?Interpreter,在資源利用方面并不是很高效。

·3.?Yarn?Application?模式
Yarn?Application?模式徹底解決了前面2種模式的問題,把Flink?interpreter?跑在了JobManager里,這樣既不影響Zeppelin?Server這臺機器的資源壓力,也不會對Yarn集群資源造成任何浪費。

參考文檔:
? ? 看完阿里樹哥的文哥,想跟樹哥一樣做個進階的大數(shù)據(jù)運維嗎?
????滌生大數(shù)據(jù)運維課程全部基于生產(chǎn)標準服務器錄制課程,實戰(zhàn)使用,目前十幾家中小公司買我們的運維課程拿過去直接就可以用。大數(shù)據(jù)運維課程老師阿里樹哥,前百度強哥,包括我都是管理上千節(jié)點集群的人,此外課程還由騰訊,美團小伙伴合作錄制。
? ? ?全網(wǎng)獨家大數(shù)據(jù)運維實戰(zhàn)課程, 大數(shù)據(jù)運維課程適合哪些人?
1.大數(shù)據(jù)運維在職的人進階,進一步提升拿高薪
2.準備轉行大數(shù)據(jù)運維的人。
3.大數(shù)據(jù)開發(fā)儲備學習準備去中小公司的人:既懂開發(fā)也懂運維去小公司很吃香,做管理層,大數(shù)據(jù)架構。
