带你读《企业级云原生白皮书项目实战》——5.3.2 Flink任务开发相关(4)

简介: 带你读《企业级云原生白皮书项目实战》——5.3.2 Flink任务开发相关(4)

《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.2 Flink任务开发相关(3) https://developer.aliyun.com/article/1228384?groupCode=supportservice


2.添加连接器和库的依赖

大多数应用程序的运行需要特定的连接器或库,例如Kafka、Cassandra等连接器。这些连接器不是Flink核心依赖项的一部分,必须作为额外依赖项添加到应用程序中。

下述代码是添加Kafka连接器依赖项的示例(Maven语法):

<dependency>
 <groupId>org.apache.flflink</groupId>
 <artifactId>flflink-connector-kafka_2.11</artifactId>
 <version>1.12.3</version>
</dependency>

我们建议将应用程序代码和它所有的依赖以jar-with-dependencies 的形式打包到一个application jar中。这个应用程序jar包可以被提交到已经存在的Flink集群上去,或者被加入到Flink应用程序的容器镜像中去。

从Maven作业模版(见下文Maven作业模版部分)创建的项目,通过mvn clean package命令会自动把依赖打到应用程序的jar包中去。对于没有使用模版进行配置的情况,建议使用Maven Shade Plugin (配置如附录所示) 来构建包含依赖的jar包。

重要提示:对于Maven(和其他构建工具)来说,要将依赖项正确打包到应用程序jar中,这些应用程序依赖项的scope必须指定为"compile"(与核心依赖项不同,核心依赖项的scope必须指定为"provided")。

注意事项

Scala版本

Scala的不同版本(2.11,2.12等)相互之间是不兼容的。因此,Scala 2.11对应的Flink版本不能用于使用Scala 2.12的应用程序。

所有依赖(或传递依赖)于Scala的Flink依赖项都以构建它们的Scala版本作为后缀,例如flflink-streaming-scala_2.11。

只使用Java进行开发时可以选择任何Scala版本,使用Scala开发时需要选择与其应用程序的Scala版本匹配的Flink依赖版本。

注:2.12.8之后的Scala版本与之前的2.12.x版本不兼容,因此Flink项目无法将其2.12.x版本升级到2.12.8之后的版本。用户可以在本地自己编译对应Scala版本的Flink。为了使其能够正常工作,需要添加-Djapicmp.skip以在构建时跳过二进制兼容性检查。

Hadoop依赖

一般的规则: 永远不要将Hadoop相关依赖直接添加到应用程序中. (唯一的例外是将现有的Hadoop输入/输出Format与Flink的Hadoop兼容包一起使用时)

如果希望将Flink与Hadoop结合使用,则需要包含Hadoop依赖的Flink启动项,而不是将Hadoop添加为应用程序依赖项。Flink将使用HADOOP_CLASSPATH环境变量指定的Hadoop依赖项,可通过以下方式进行设置:

export HADOOP_CLASSPATH=`hadoop classpath`

这种设计有两个主要原因:

•一些与Hadoop的交互可能发生在Flink的核心模块中,并且在用户应用程序启动之前,例如为检查点设置HDFS、通过Hadoop的Kerberos令牌进行身份验证,或者在YARN上进行部署等。

•Flink的反向类加载机制从核心依赖项中隐藏了许多可传递的依赖项。这不仅适用于Flink自己的核心依赖项,而且适用于Hadoop的依赖项。这样,应用程序就可以使用相同依赖项的不同版本,而不会发生依赖项冲突(相信我们,这是一件大事,因为Hadoop依赖树非常庞大。)

如果在IDE内部的测试或开发过程中需要Hadoop依赖项(例如HDFS访问),请将这些依赖项的scope配置为test 或则 provided。

Transform table connector/format resources #

Flink使用Java的Service Provider Interfaces (SPI) 机制通过特定标识符加载table的connector/format工厂。由于每个table的connector/format的名为org.apache.flflink.table.factories.Factory的SPI资源文件位于同一目录:META-INF/services下,因此在构建使用多个table connector/format的项目的uber jar时,这些资源文件将相互覆盖,这将导致Flink无法正确加载工厂类。


《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.2 Flink任务开发相关(5) https://developer.aliyun.com/article/1228379?groupCode=supportservice

相关实践学习
基于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日以线上峰会的形式与大家见面。
相关文章
|
人工智能 关系型数据库 OLAP
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
1112 17
|
10月前
|
前端开发 JavaScript 物联网
全栈开发:从LAMP到云原生的技术革命
🌟蒋星熠Jaxonic,全栈探索者。从Web到AI、IoT、区块链,深耕垂直领域,践行“T型人才”理念。分享技术演进与实战经验,助你在代码星河中找到属于自己的航向。
全栈开发:从LAMP到云原生的技术革命
|
10月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
624 7
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1281 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
12月前
|
存储 分布式计算 数据处理
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
阿里云实时计算Flink团队,全球领先的流计算引擎缔造者,支撑双11万亿级数据处理,推动Apache Flink技术发展。现招募Flink执行引擎、存储引擎、数据通道、平台管控及产品经理人才,地点覆盖北京、杭州、上海。技术深度参与开源核心,打造企业级实时计算解决方案,助力全球企业实现毫秒洞察。
948 0
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
|
SQL 运维 Java
蚂蚁 Flink 实时计算编译任务 Koupleless 架构改造
本文介绍了对Flink实时计算编译任务的Koupleless架构改造。为解决进程模型带来的响应慢、资源消耗大等问题,团队将进程模型改为线程模型,并借助Koupleless的类加载隔离能力实现版本和包的隔离。通过动态装配Plugin及其Classpath,以及Biz运行时仅对依赖Plugin可见的设计,大幅优化了编译任务的性能。结果表明,新架构使编译耗时降低50%,吞吐量提升5倍以上。
蚂蚁 Flink 实时计算编译任务 Koupleless 架构改造
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
4760 74
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
3309 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
SQL 存储 大数据
Flink 基础详解:大数据处理的强大引擎
Apache Flink 是一个分布式流批一体化的开源平台,专为大规模数据处理设计。它支持实时流处理和批处理,具有高吞吐量、低延迟特性。Flink 提供统一的编程抽象,简化大数据应用开发,并在流处理方面表现卓越,广泛应用于实时监控、金融交易分析等场景。其架构包括 JobManager、TaskManager 和 Client,支持并行度、水位线、时间语义等基础属性。Flink 还提供了丰富的算子、状态管理和容错机制,如检查点和 Savepoint,确保作业的可靠性和一致性。此外,Flink 支持 SQL 查询和 CDC 功能,实现实时数据捕获与同步,广泛应用于数据仓库和实时数据分析领域。
11442 42

热门文章

最新文章