带你读《企业级云原生白皮书项目实战》——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学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
16天前
|
Cloud Native 安全 大数据
云原生与大数据
【8月更文挑战第27天】云原生与大数据
34 5
|
24天前
|
SQL 消息中间件 Kafka
实时计算 Flink版产品使用问题之如何在EMR-Flink的Flink SOL中针对source表单独设置并行度
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
13天前
|
存储 SQL 大数据
用实时计算释放当下企业大数据潜能
本文整理自阿里云高级产品解决方案架构师王启华(敖北)老师在 Flink Forward Asia 2023 中闭门会的分享。
277 8
用实时计算释放当下企业大数据潜能
|
19天前
|
大数据 API 数据处理
揭秘!Flink如何从默默无闻到大数据界的璀璨明星?起源、设计理念与实战秘籍大公开!
【8月更文挑战第24天】Apache Flink是一款源自Stratosphere项目的开源流处理框架,由柏林理工大学等机构于2010至2014年间开发,并于2014年捐赠给Apache软件基金会。Flink设计之初即聚焦于提供统一的数据处理模型,支持事件时间处理、精确一次状态一致性等特性,实现了流批一体化处理。其核心优势包括高吞吐量、低延迟及强大的容错机制。
33 1
|
1月前
|
消息中间件 大数据 Kafka
"Apache Flink:重塑大数据实时处理新纪元,卓越性能与灵活性的实时数据流处理王者"
【8月更文挑战第10天】Apache Flink以卓越性能和高度灵活性在大数据实时处理领域崭露头角。它打破批处理与流处理的传统界限,采用统一模型处理有界和无界数据流,提升了开发效率和系统灵活性。Flink支持毫秒级低延迟处理,通过时间窗口、状态管理和自动并行化等关键技术确保高性能与可靠性。示例代码展示了如何使用Flink从Kafka读取实时数据并进行处理,简明扼要地呈现了Flink的强大能力。随着技术进步,Flink将在更多场景中提供高效可靠的解决方案,持续引领大数据实时处理的发展趋势。
65 7
|
11天前
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
25 0
|
11天前
|
Java Spring 安全
Spring 框架邂逅 OAuth2:解锁现代应用安全认证的秘密武器,你准备好迎接变革了吗?
【8月更文挑战第31天】现代化应用的安全性至关重要,OAuth2 作为实现认证和授权的标准协议之一,被广泛采用。Spring 框架通过 Spring Security 提供了强大的 OAuth2 支持,简化了集成过程。本文将通过问答形式详细介绍如何在 Spring 应用中集成 OAuth2,包括 OAuth2 的基本概念、集成步骤及资源服务器保护方法。首先,需要在项目中添加 `spring-security-oauth2-client` 和 `spring-security-oauth2-resource-server` 依赖。
28 0
|
14天前
|
消息中间件 数据挖掘 Kafka
揭秘大数据时代的极速王者!Flink:颠覆性流处理引擎,让实时数据分析燃爆你的想象力!
【8月更文挑战第29天】Apache Flink 是一个高性能的分布式流处理框架,适用于高吞吐量和低延迟的实时数据处理。它采用统一执行引擎处理有界和无界数据流,具备精确状态管理和灵活窗口操作等特性。Flink 支持毫秒级处理和广泛生态集成,但学习曲线较陡峭,社区相对较小。通过实时日志分析示例,我们展示了如何利用 Flink 从 Kafka 中读取数据并进行词频统计,体现了其强大功能和灵活性。
27 0
|
17天前
|
机器学习/深度学习 监控 大数据
Serverless 应用的监控与调试问题之Flink在整个开源大数据生态中应该如何定位,差异化该如何保持
Serverless 应用的监控与调试问题之Flink在整个开源大数据生态中应该如何定位,差异化该如何保持
|
1月前
|
存储 运维 Cloud Native
"Flink+Paimon:阿里云大数据云原生运维数仓的创新实践,引领实时数据处理新纪元"
【8月更文挑战第2天】Flink+Paimon在阿里云大数据云原生运维数仓的实践
208 3