尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

深入解析:flink实验三:实时数据流处理(踩坑记录)

深入解析:flink实验三:实时数据流处理(踩坑记录)
📅 发布时间:2026/6/19 19:33:01

提前须知

本博客专门针对南昌航空大学数据科学与大数据处理专业的同学们,帮助大家轻松愉快地实现flink实验三的内容,以下是我总结的踩坑点,希望大家提前避免,以免来来回回修改与运行。

本地flink测试时设置BootstrapServers服务地址

在这里插入图片描述
也就是这部分的代码,在老师给我们的代码中只有几处需要大家进行修改,这里就是最关键的地方,这个服务器是指的我们在docker中运行的kafka的地址,由于是本地测试的,所以直接写localhost就可以,而后面的端口号并不是运行的时候设置的那个,而是需要我们知道外部的那个端口号,所以需要我们在docker中运行docker ps,查看kafka容器的外接端口。

具体内容大家可以查看解决博客

同时这里解释一下后面两个设置,groupid是消费组,我最开始会很疑惑这个是怎么得到的,后面查阅资料发现是我们去给我们这个消费者一个唯一的id,所以写什么都可以,后面这个话题是实验二创建的,所以只要同名就可以。

本地flink测试时连接mysql数据库

在这里插入图片描述
实话说,本地测试里面就需要修改这两个部分就能实现,将3306/后面改为自己的数据库,修改用户名和密码。

版本问题(核心重点)

这部分会有两次版本问题,一个是flink版本,一个是java版本

flink版本

老师发的maven环境的配置中的flink是1.18.0,而如果我们直接docker拉取镜像,大概率拉取的是最新版本的镜像,这会导致两个版本不匹配,所以在compose中就需要指定1.18.0版本,compose文件我后续会给出。(头铁者也可以尝试修改代码中的版本)
在这里插入图片描述

java版本

这个问题因人而易,每个人用的java版本不一样,但是如果你用的版本与flink镜像的默认版本不一致的话后续也会出现问题,而1.18.0的默认java版本是11,所以解决方法有两个:1.你跑的java代码用java11;2.你给flink升级java版本,这里介绍一下第二种方法,因为我是java17。

解决方法

创建一个Dockerfile文件,名字叫Dockerfile,并且不要后缀,写入以下内容,可以根据自己的java版本修改。将这个文件与compose文件放在一个目录下。

# 使用官方 Flink 镜像作为基础镜像
FROM flink:1.18.0
# 安装 Java 17
RUN apt-get update && apt-get install -y openjdk-17-jdk
# 设置 JAVA_HOME 环境变量,确保 Flink 使用 Java 17
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV PATH=$JAVA_HOME/bin:$PATH
# 设置 Flink 默认启动命令
CMD ["jobmanager"]

compose内容

如果不需要修改java版本,删除build那一行,networks根据自己设置的网络名进行修改,最好跟kafka在一个网络下。

services:
jobmanager1:
build: .  # 使用当前目录中的 Dockerfile
ports:
- "8085:8081"
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager1
- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
networks:
- netkafka
jobmanager2:
build: .  # 使用当前目录中的 Dockerfile
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager2
- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
networks:
- netkafka
taskmanager1:
build: .  # 使用当前目录中的 Dockerfile
depends_on:
- jobmanager1
command: taskmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager1
- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
networks:
- netkafka
taskmanager2:
build: .  # 使用当前目录中的 Dockerfile
depends_on:
- jobmanager1
command: taskmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager1
- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
networks:
- netkafka
taskmanager3:
build: .  # 使用当前目录中的 Dockerfile
depends_on:
- jobmanager1
command: taskmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager1
- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
networks:
- netkafka
networks:
netkafka:
name: netkafka
driver: bridge
ipam:
driver: default
config:
- subnet: 172.23.0.0/25
gateway: 172.23.0.1

部署flink测试时设置BootstrapServers服务地址

在这里插入图片描述
这个地方将原来的localhost改为你电脑的ip地址即可

部署flink测试时连接mysql数据库

在这里插入图片描述
这里需要注意的地方有两点,一是跟上面一样要修改ip地址,二是部署是不能使用root用户,需要创建新的用户,并且赋予其一定的权力。

mysql -u root -p
CREATE USER 'flink_user'@'%' IDENTIFIED BY '123456';
-- 授予对特定数据库的权限
GRANT ALL PRIVILEGES ON flinkdatabase.* TO 'flink_user'@'%';

这里要记得修改为自己数据库的名字哦!

整体流程

写到这里有点微微累了哈哈,所以就直接借用前辈的博客

我写这个实验的时候就是参考的这篇博客,所以跟我写的是能对应上的,只不过多了部分踩坑经验。

相关新闻

  • 触觉感知机器人如何规划与执行动作
  • SHOW STATUS LIKE Aborted_connects; 这个连接是啥意思
  • 人工智能之编程进阶 Python高级:第十一章 过渡项目

最新新闻

  • 合肥想养猫狗先看看,萌宠宠园探店记录 - 园友3800037
  • 厦门二手奢侈品回收怎么避坑?高净值客户必须看的三个参数 - 奢品小当家
  • 2026昆山地下室防水市场专业解析与四家服务商适配推荐 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • FitGirl Repack Launcher:你的游戏下载管家,让找游戏变得简单有趣
  • 01人月神话阅读笔记
  • 民国老文书老照片别丢!北京记录者商行上门回收民国照片、任命书、毕业证书 - 深鉴新闻

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号