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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 带你读《企业级云原生白皮书项目实战》——5.3.2 Flink任务开发相关(3)

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


5.3.2.2 DataStream任务打包

Datastream作业开发时往往会遇到一些jar包冲突等问题,本文主要讲解作业开发时需要引入哪些依赖以及哪些需要被打包进作业的jar中,从而避免不必要的依赖被打入了作业jar中以及可能产生的依赖冲突。

一个Datastream作业主要涉及下述依赖:

Flink的核心依赖以及应用程序自身的依赖

每一个Flink应用程序都依赖于一系列相关的库,其中至少应该包括Flink的API. 许多应用程序还依赖于连接器相关的库(如 Kafka, Cassandra等).在运行Flink应用程序时,无论是在运行在分布式的环境下还是在本地IDE进行测试,Flink的运行时相关依赖都是必须的。

与大多数运行用户自定义应用程序的系统一样,Flink 中有两大类依赖项:

•Flink核心依赖:Flink 本身由一组运行系统所必需的类和依赖项组成,例如协调器、网络、检查点、容错、API、算子(例如窗口)、资源管理等。 所有这些类和依赖项的集合构成了 Flink 运行时的核心,在 Flink 应用程序启动时必须存在。这些核心类和依赖项都被打包在 flflink-dist jar 中。 它们是 Flink 的 lib 文件夹的一部分,也是Flink基础容器镜像的一部分。这些依赖之于Flink就像Java 运行所需的包含 String 和 List 等类的核心库(rt.jar、charsets.jar 等)之于Java。Flink的核心依赖不包含任何连接器或扩展库(CEP、SQL、ML等),这使得Flink的核心依赖尽可能小,以避免默认情况下类路径中有过多的依赖项,同时减少依赖冲突。

•用户应用程序依赖项:指特定用户应用程序所需的所有连接器、Format或扩展库。用户应用程序通常被打包成一个 jar文件,其中包含应用程序代码以及所需的连接器和库依赖项。用户应用程序依赖项不应包括 Flink DataStream API 和运行时依赖项,因为这些已经被包含在了Flink 的核心依赖中。依赖配置步骤

1.添加基础依赖

每一个Flink应用程序的开发至少需要添加对相关API的基础依赖。

手动配置项目时,需要添加对Java/Scala API的依赖(这里以Maven为例,在其他构建工具(Gradle,SBT等)中可以使用同样的依赖)。

<dependency>
 <groupId>org.apache.flflink</groupId>
 <artifactId>flflink-streaming-java_2.11</artifactId>
 <version>1.12.3</version>
 <scope>provided</scope>
</dependency>

重要提示:请注意,所有这些依赖项都将其范围设置为"provided"。这意味着需要对它们进行编译,但不应将它们打包到项目生成的应用程序jar文件中——这些依赖项是Flink核心依赖项,在实际运行时已经被加载。

强烈建议将依赖项设置成"provided"的范围,如果未将它们设置为"provided",最好的情况下会导致生成的jar变得臃肿,因为它还包含所有Flink核心依赖项。而最怀的情况下,添加到应用程序jar文件中的Flink核心依赖项与您自己的一些依赖项会发生版本冲突(通常通过Flink的反向类加载机制来避免)。

关于IntelliJ的注意事项:为了使应用程序在IntelliJ IDEA中运行,有必要在运行配置中勾选"Include dependencies with "Provided" scope"选项框。如果没有该选项(可能是由于使用较旧的IntelliJ IDEA版本),那么一个简单的解决方法是创建一个调用应用程序 main() 方法的测试用例。


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

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
打赏
0
0
0
0
68
分享
相关文章
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
Hologres+Flink企业级实时数仓核心能力介绍-2024实时数仓Hologres线上公开课03
本次分享由阿里云产品经理骆撷冬(观秋)主讲,主题为“Hologres+Flink企业级实时数仓核心能力”,是2024实时数仓Hologres线上公开课的第三期。课程详细介绍了Hologres与Flink结合搭建的企业级实时数仓的核心能力,包括解决实时数仓分层问题、基于Flink Catalog的Streaming Warehouse实践,并通过典型客户案例展示了其应用效果。
66 10
Hologres+Flink企业级实时数仓核心能力介绍-2024实时数仓Hologres线上公开课03
软硬结合助力倚天云原生算力再进化,加速大数据、视频转码上云步伐
本文介绍了云原生算力的进化,重点讨论了倚天710 CPU在大数据和视频转码场景中的应用与优势。倚天710采用ARM架构,通过物理核设计和CIPU加速卡优化,显著提升了高负载下的性能稳定性,并在实际应用中帮助客户实现了20%-40%的性能提升和成本降低。此外,文章还探讨了操作系统、编译器等底层软件的优化,以及如何通过龙蜥社区和阿里云平台支持更多应用场景,助力企业实现高效迁移和性能优化。
MongoDB云原生化:为企业开发注入高效动力
MongoDB云原生化为企业开发注入高效动力,分为三部分:1. 介绍阿里云和MongoDB的服务;2. 阿里云MongoDB解决自建模型痛点的功能,包括隔离性、海量数据处理、弹性能力及运维操作优化;3. 客户案例展示。通过云原生架构,MongoDB实现了灵活的扩展、高效的备份恢复和快速的回档能力,显著提升了企业的业务迭代速度和数据管理效率。典型客户如吉比特、莉莉丝、掌阅等受益于这些功能,实现了更稳定和高效的数据库服务。
通义灵码对云原生应用开发的支持
通义灵码是阿里巴巴云推出的一款强大的云原生应用开发工具,支持容器化、编排技术等,提供从Dockerfile生成、容器镜像构建与推送,到Kubernetes配置文件生成及与Kubernetes集群集成的全方位支持,极大简化了云原生应用开发流程,提升了开发效率和应用质量。
通义灵码对云原生应用开发的支持
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
187 0
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
140 3
|
5月前
|
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
221 4
来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法
计算馆将展示中国最先进的云计算产业链全景,从底层硬件到数据创新,从云计算基础设施到数据管理服务、人工智能平台和模型服务,全景式呈现 AI 时代云计算最新技术形态和产品进展。计算馆有哪些推荐?往下看!
实时计算 Flink版产品使用问题之如何实现ZooKeeper抖动导致任务失败时,能从最近的检查点重新启动任务
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等