Flink on Zeppelin 系列之:Yarn Application 模式支持
作者:章劍鋒(簡鋒)
去年 Flink Forward 在講 Flink on Zeppelin 這個項目的未來時我們談到了對Application 模式的支持,今天就有一個好消息要告訴大家,社區已經實現了這一Feature,歡迎大家加入 Flink on Zeppelin 的釘釘群(32803524),下載最新版來使用這個Feature。
GitHub 地址
https://github.com/apache/flink
歡迎大家給 Flink 點贊送 star~
Application mode 是 Flink 1.11 之后引入的新的運行模式,所要解決的問題就是減少客戶端的壓力,把用戶的 main 函數運行在 JobManager 里而不是在用戶客戶端。這種模式是非常適合 Flink on Zeppelin 的,因為 Flink on Zeppelin 的客戶端就是 Flink interpreter 進程,而 Flink interpreter 是一個 long running 的 main 函數,不斷接受來自前端的命令,進行相應的操作(比如提交 Job,停止 Job 等等)。接下來我們就要詳細講下 Zeppelin 如何實現了 Yarn Application 模式,以及如何使用這一模式。
一、架構
在講 Yarn Application 模式架構的時候,我們順便來講下 Flink on Zeppelin 的架構演變過程。
普通的 Flink on Yarn 運行模式
這種模式的客戶端中,Flink Interpreter 進程運行在 Zeppelin server這臺機器上,每個客戶端對應一個 Yarn 上的 Flink Cluster,如果 Flink Interpreter 進程很多,會對 Zeppelin 這臺機器造成很大的壓力。
參考文檔:https://www.yuque.com/jeffzhangjianfeng/gldg8w/wt1g3h
參考視頻:
https://www.bilibili.com/video/BV1Te411W73b?p=6
Yarn Interpreter 模式
Yarn Interpreter 把客戶端 (Flink Interpreter)移到了 Yarn 集群,把資源壓力轉移到了 Yarn 集群,解決上上面普通 Flink on Yarn 運行模式的一部分問題,這種模式會需要為每個 Flink Cluster 額外申請一個 Yarn Container 來運行這個 Flink Interpreter,在資源利用方面并不是很高效。
參考文檔:https://www.yuque.com/jeffzhangjianfeng/gldg8w/gcah8t
參考視頻:
https://www.bilibili.com/video/BV1Te411W73b?p=24
Yarn Application 模式
Yarn Application 模式徹底解決了前面 2 種模式的問題,把 Flink interpreter 跑在了 JobManager 里,這樣既不影響 Zeppelin Server 這臺機器的資源壓力,也不會對 Yarn 集群資源造成任何浪費。
二、如何使用 Yarn Application 模式
配置 Yarn Application 模式非常簡單,只要把 flink.execution.mode 設為yarn-application 即可。其他所有配置與其他模式沒有區別。下面的所有 Flink on Zeppelin 的特性在 Yarn Application 模式下都可以照常使用。我們也借這個機會來 Review下Flink on Zeppelin 的所有功能。
多語言支持
在同一個 Flink Cluster 內支持以下 3 種語言,并且打通這 3 種語言(共享Catalog,共享 ExecutionEnvironment):
- Scala (%flink)
- PyFlink (%flink.pyflink)
- SQL (%flink.ssql, %flink.bsql)
https://www.yuque.com/jeffzhangjianfeng/gldg8w/pg5s82
https://www.yuque.com/jeffzhangjianfeng/gldg8w/ggxz76
https://www.yuque.com/jeffzhangjianfeng/gldg8w/te2l1c
參考視頻:
https://www.bilibili.com/video/BV1Te411W73b?p=4
Hive 整合
簡單配置就可以啟用 Hive。
參考文檔:https://www.yuque.com/jeffzhangjianfeng/gldg8w/agf94n
參考視頻:
https://www.bilibili.com/video/BV1Te411W73b?p=10
UDF 支持
支持以下 4 種方式定義和使用 Flink UDF:
- 在 Zeppelin 中直接寫 Scala UDF;
- 在 Zeppelin 中直接寫 PyFlink UDF;
- 用 SQL 創建 UDF;
- 使用 flink.udf.jars 來指定含有 udf 的 jar。
https://www.yuque.com/jeffzhangjianfeng/gldg8w/dthfu2
參考視頻:
https://www.bilibili.com/video/BV1Te411W73b?p=17
https://www.bilibili.com/video/BV1Te411W73b?p=18
https://www.bilibili.com/video/BV1Te411W73b?p=19
第三方依賴
在 Zeppelin 里可以用以下 2 種方式來指定第三方依賴,具體:
- flink.excuetion.packages
- flink.execution.jars (需要注意的是在 Yarn Application 模式下,這里需要指定 HDFS 路徑,因為 Flink Interpreter 運行在 JobManager 里,而JobManager 是跑在 yarn container, 在 yarn container 那臺 NodeManager 機器上不一定有你要指定的 jar)
https://www.yuque.com/jeffzhangjianfeng/gldg8w/rn6g1s
參考視頻:
https://www.bilibili.com/video/BV1Te411W73b?p=15
Checkpoint & Savepoint
Checkpoint 和 Savepoint 照常使用。
參考文檔:https://www.yuque.com/jeffzhangjianfeng/gldg8w/mlnswx
SQL 高級功能
Zeppelin 對 Flink SQL做了一系列增強功能,這些增強功能都可以照常使用,比如:
- 同時支持 Batch SQL 和 Streaming SQL
- 多語句支持
- Comment 支持
- Job 并行度支持
- Multiple insert 支持
- JobName 的設置
- Stream SQL 流式數據可視化
https://www.yuque.com/jeffzhangjianfeng/gldg8w/te2l1c
另外,阿里云開放平臺團隊長期招聘優秀大數據人才(包括實習+社招)。我們的主要職責為阿里云上的各大中小企業客戶提供大數據和 AI 的基礎服務。你的工作將是圍繞 Spark,Flink,Hadoop,Tensorflow,PyTorch 等開源組件構建一個易用的,企業級的大數據和 AI 開放平臺。不僅有技術的挑戰,也需要做產品的激情。我們采用大量的開源技術(Hadoop, Flink, Spark, Zeppelin, Kubernetes,Tensorflow,Pytorch等等),并且致力于回饋到開源社區。
如果你對開源,大數據或者 AI 感興趣,這里有最好的土壤。擁有在 Apache Flink, Apache Kafka, Apache Zeppelin,Apache Beam,Apache Druid,Apache Hbase 等諸多開源領域的 Committer & PMC。感興趣的同學請發簡歷到:jeffzhang.zjf@alibaba-inc.com
原文鏈接:https://developer.aliyun.com/article/783891?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的Flink on Zeppelin 系列之:Yarn Application 模式支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百信银行基于 Apache Hudi 实
- 下一篇: 5天让你技能加满的“王炸组合”,速来!