作者:章剑锋(简锋)
去年Flink Forward在讲Flink on Zeppelin这个项目的未来时我们谈到了对Application 模式的支持,今天就有一个好消息要告诉大家,社区已经实现了这一Feature,欢迎大家下载最新版来使用这个Feature。
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这边,每个客户端对应一个Yarn上的Flink Cluster,如果Flink Interpreter进程很多,会对Zeppelin这台机器造成很大的压力。
Yarn Interpreter 模式
Yarn Interpreter 把客户端 (Flink Interpreter)移到了 Yarn集群,把资源压力转移到了Yarn集群,解决上上面普通Flink on Yarn 运行模式的一部分问题,这种模式会需要为每个Flink Cluster额外申请一个Yarn Container来运行这个Flink Interpreter,在资源利用方面并不是很高效。
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
Hive整合
简单配置就可以启用Hive:
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
第三方依赖
在Zeppelin里可以用以下2种方式来指定第三方依赖,具体
- flink.excuetion.packages
- flink.execution.jars (需要注意的是在Yarn Application 模式下,这里需要指定HDFS路径,因为Flink Interpreter运行在JobManager里,而JobManager是跑在yarn container, 在yarn container那台NodeManager机器上不一定有你要指定的jar)
Checkpoint & Savepoint
Checkpoint 和 Savepoint 照常使用,
参考文档:https://www.yuque.com/jeffzhangjianfeng/gldg8w/mlnswx
SQL高级功能
Zeppelin 对 Flink SQL做了一系列增强功能,这些增强功能都可以照常使用,比如:
具体参考文档:https://www.yuque.com/jeffzhangjianfeng/gldg8w/te2l1c
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。