Flink与Spring Boot的集成

本文探讨了在Flink 1.10.0和Spring Boot 2.2.2.RELEASE环境下集成的挑战,包括Spring容器集成点、依赖管理、打包问题以及包冲突的解决方案。主要难点在于如何在Flink的Source和Sink中初始化Spring容器,并在Yarn集群中运行。目前的方法限制了使用Spring Boot环境参数,但提出了通过序列化启动环境来改善集成的思路。
摘要由CSDN通过智能技术生成
  • flink 1.10.0
  • spring boot 2.2.2.RELEASE

这方面的资料很少,网上有的方法不完整。基本思路是把spring容器的初始化放在sink的open方法中执行。

要么只使用spring framework组件,甚至使用xml这样的方式配置bean(使用ClassPathXmlApplicationContext );要么直接在open中启动了SpringApplication。有可能在单机的flink上能运行,但是on yarn的时候不行了。

其实想要达到的目的很简单:

  • 使用spring的IoC容器管理组件
  • 注解配置和自动配置
  • 使用springboot的外部化配置(application.yml)
  • 需要可以运行在yarn集群中

但是里面的坑非常多,除了需要了解一些flink的任务提交部署原理,需要对spring framework, spring boot, maven,hadoop yarn有一些了解。有些地方需要深入了解,否则莫名其妙入坑,半天爬不出来。所以需要记录一下,已方便后来者别再浪费时间。Flink的官方文档真的是很简短。

Spring容器的集成点

需要算子(Operator)具体Function(Source、Sink)的初始化中,因为这些算子会被序列化到分布式计算节点中执行。所以通常的main只是任务提交的入口,并不是最终算子执行初始化入口。

所以,在Source和Sink的open方法中初始化容器。由于通常Source都由比较固定的组件,比如kafka集成了FlinkKafkaConsumer,所以这部分没有过多的需要编写处理逻辑,从而没有引入spring容器。但是,初始化这部分组件有配置参数传递的需求。

依赖jar包注意点

引入flink或者hadoop等等这种运行时会提供的jar包时,记得把作用域置scope设为provided

典型的flink依赖包引入如下:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.10.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-java_2.11</artifactId>
  <version>1.10.0</version>
  <scope>provided</scope>
</dependency>

如果是kafka连接器这样的依赖,非flink核心依赖,则是需要打包时打进去的,使用默认的scope就行。

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kafka-0.10_2.11</artifactId>
    <version>1.10.0</version>
</dependency>

这里是一个自定义Sink的例子,在open中初始化spring的容器。

@Slf4j
public 
  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Flink CDC是一个可以实现从MySQL、PostgreSQL等数据库直接读取全量数据和增量变更数据的source组件。在结合Spring Boot使用Flink CDC时,您可以使用Spring Boot提供的各种特性和功能来构建和管理Flink CDC应用程序。 首先,您可以使用Spring Boot的依赖管理和自动配置功能,简化Flink CDC应用程序的配置和启动过程。通过添加相应的starter依赖,您可以轻松引入Flink CDC和Spring Boot的核心组件,并进行必要的配置。 其次,您可以使用Spring Boot的注解驱动开发模式,将Flink CDC的配置和逻辑与业务逻辑集成在一起。通过使用注解,您可以将Flink CDC的source组件和Spring Boot的功能组件通过依赖注入的方式进行集成,实现数据的采集和处理。 此外,使用Spring Boot还可以方便地配置Flink CDC应用程序的其他组件,例如数据源、目标存储、数据转换等。您可以通过Spring Boot的配置文件来定义这些组件的属性,并利用Spring Boot的自动配置功能来实现其初始化和管理。 最后,您可以利用Spring Boot的监控和管理功能,对Flink CDC应用程序进行监控和管理。通过集成Spring Boot Actuator,您可以轻松地暴露Flink CDC应用程序的健康状态、指标和日志信息,并通过HTTP端点进行监控和管理。 总之,结合Spring Boot使用Flink CDC可以提供便捷的配置、开发、监控和管理功能,使您能够更加高效地构建和运行Flink CDC应用程序。您可以参考提供的代码地址来了解更多关于Flink CDC和Spring Boot集成的示例代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [大数据技术之Flink CDC视频教程](https://download.csdn.net/download/qq359605040/85964849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Spring Boot+Flink CDC —— MySQL 同步 Elasticsearch (DataStream方式)](https://blog.csdn.net/MHXSH_1_0/article/details/130429611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Spring Boot+Flink CDC —— MySQL 同步 Elasticsearch (Table API方式)](https://blog.csdn.net/MHXSH_1_0/article/details/130466116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值