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

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
920 3
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
871 9
|
资源调度 关系型数据库 MySQL
【Flink on YARN + CDC 3.0】神操作!看完这篇教程,你也能成为数据流处理高手!从零开始,一步步教会你在Flink on YARN模式下如何配置Debezium CDC 3.0,让你的数据库变更数据瞬间飞起来!
【8月更文挑战第15天】随着Apache Flink的普及,企业广泛采用Flink on YARN部署流处理应用,高效利用集群资源。变更数据捕获(CDC)工具在现代数据栈中至关重要,能实时捕捉数据库变化并转发给下游系统处理。本文以Flink on YARN为例,介绍如何在Debezium CDC 3.0中配置MySQL连接器,实现数据流处理。首先确保YARN上已部署Flink集群,接着安装Debezium MySQL连接器并配置Kafka Connect。最后,创建Flink任务消费变更事件并提交任务到Flink集群。通过这些步骤,可以构建出从数据库变更到实时处理的无缝数据管道。
1307 2
|
资源调度 分布式计算 大数据
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
595 0
|
资源调度 Oracle Java
实时计算 Flink版产品使用问题之在YARN集群上运行时,如何查看每个并行度的详细处理数据情况
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
SQL 资源调度 数据处理
实时计算 Flink版产品使用问题之-s参数在yarn-session.sh命令中是否有效
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
10月前
|
存储 分布式计算 数据处理
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
阿里云实时计算Flink团队,全球领先的流计算引擎缔造者,支撑双11万亿级数据处理,推动Apache Flink技术发展。现招募Flink执行引擎、存储引擎、数据通道、平台管控及产品经理人才,地点覆盖北京、杭州、上海。技术深度参与开源核心,打造企业级实时计算解决方案,助力全球企业实现毫秒洞察。
840 0
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
4533 74
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎

相关产品

  • 实时计算 Flink版