开发者社区> 阿里云实时计算Flink> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Flink on Zeppelin 系列之:Yarn Application 模式支持

简介: 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

image.png

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

image.png

Yarn Application 模式

Yarn Application 模式彻底解决了前面 2 种模式的问题,把 Flink interpreter 跑在了 JobManager 里,这样既不影响 Zeppelin Server 这台机器的资源压力,也不会对 Yarn 集群资源造成任何浪费。

image.png

二、如何使用 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

更多 Flink 相关技术问题,可扫码加入社区钉钉交流群~

image.png

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:
99元试用实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制T恤;另包3个月及以上还有85折优惠!
了解活动详情:https://www.aliyun.com/product/bigdata/sc

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云实时计算 Flink 版 x Hologres: 构建企业级一站式实时数仓
阿里云 Flink、阿里云 Hologres 构建实时数仓上所具备的核心能力以及二者结合的最佳解决方案。
533 0
基于 Flink x TiDB,智慧芽打造实时分析新方案
智慧芽数据仓库架构师曲明星在 FFA 2021 的演讲。
638 0
基于 Flink 构建大规模实时风控系统在阿里巴巴的落地
阿里云实时计算产品经理李佳林(风元)在 Flink 峰会的演讲。
882 0
基于 Flink CDC 打通数据实时入湖
基于 Flink CDC 打通数据实时入湖
128 0
Flink 在 讯飞 AI 营销业务的实时数据分析实践
科大讯飞中级大数据工程师汪李之在 FFA 2021 的演讲。
661 0
Flink实战:消费Wikipedia实时消息
Wikipedia Edit Stream是Flink官网提供的一个经典demo,该应用消费的消息来自维基百科,今天咱们就来一起实战这个demo的开发(比官方demo略有不同)、部署、验证过程
28 0
Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询
这篇教程将展示如何使用 Flink CDC + Iceberg + Doris 构建实时湖仓一体的联邦查询分析,Doris 1.1版本提供了Iceberg的支持,本文主要展示Doris和Iceberg怎么使用,同时本教程整个环境是都基于伪分布式环境搭建,大家按照步骤可以一步步完成。完整体验整个搭建操作的过程。
338 0
体验PolarDB-X与Flink搭建实时数据大屏
体验PolarDB-X与Flink搭建实时数据大屏
90 0
体验有奖:使用PolarDB-X与Flink搭建实时数据大屏
场景将提供一台配置了CentOS 8.5操作系统的ECS实例(云服务器)。通过本教程的操作带您体验如何使用PolarDB-X与Flink搭建一个实时数据链路,模拟阿里巴巴双十一GMV大屏。
316 0
实时数据治理—当Atlas遇见Flink
实时数据治理—当Atlas遇见Flink
220 0
673
文章
18
问答
来源圈子
更多
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载