当前位置: 首页 > news >正文

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

提前须知

本博客专门针对南昌航空大学数据科学与大数据处理专业的同学们,帮助大家轻松愉快地实现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: .  # 使用当前目录中的 Dockerfileports:- "8085:8081"command: jobmanagerenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanager1- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMEDnetworks:- netkafkajobmanager2:build: .  # 使用当前目录中的 Dockerfilecommand: jobmanagerenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanager2- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMEDnetworks:- netkafkataskmanager1:build: .  # 使用当前目录中的 Dockerfiledepends_on:- jobmanager1command: taskmanagerenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanager1- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMEDnetworks:- netkafkataskmanager2:build: .  # 使用当前目录中的 Dockerfiledepends_on:- jobmanager1command: taskmanagerenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanager1- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMEDnetworks:- netkafkataskmanager3:build: .  # 使用当前目录中的 Dockerfiledepends_on:- jobmanager1command: taskmanagerenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanager1- FLINK_ENV_JAVA_OPTS=--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMEDnetworks:- netkafkanetworks:netkafka:name: netkafkadriver: bridgeipam:driver: defaultconfig:- subnet: 172.23.0.0/25gateway: 172.23.0.1

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

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

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

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

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

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

整体流程

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

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

http://www.dtcms.com/a/536124.html

相关文章:

  • Milvus简介
  • 高并发内存池 - 开发记录08,09
  • 廊坊网站排名优化公司哪家好哈尔滨网站制作公司
  • Node.js 数据查询优化技巧
  • 最新电子电气架构(EEA)调研-2
  • 【数据结构】顺序表+回调函数
  • 图像归一化:OpenCV 高效映射 [0,255] → [-1,1] 性能实测
  • allWebPlugin.IE扩展使用介绍
  • C语言输入输出函数完整指南:从基础到高级应用
  • 20.10 多模态PPT生成准确率突破93%!ChatPPT v3.0动态权重技术深度解析
  • 中国移动通信联合会人工智能与元宇宙产业委联席秘书长叶毓睿受聘为“北京设计学会无障碍设计专业委员会指导专家”
  • 励志网站织梦源码建个人网上银行登录入口
  • Nginx清除浏览器缓存的三个缓存响应头的关系详解
  • 14天极限复习软考-day5 软件工程 、UML
  • 基于M4-R1开发板的OpenHarmony开发实战丨创建第一个应用工程
  • 【计算机视觉】Python 验证码图片分割:基于 OpenCV 的字符区域提取实现
  • 时序论文速递:覆盖时间序列预测、分类、异常检测及交叉应用!(10.20-10.24)
  • wordpress 建视频网站福步外贸论坛怎样注册
  • 没有网站可以做的广告联盟家居企业网站建设精英
  • navicat11不支持mysql8.0的加密方式
  • 程序综合实践第五次DP1
  • 架构论文《论系统超融合架构的设计与应用》
  • PCB行业数字化转型样本:兴森科技携手盘古信息MOM系统,实现生产效率跃升
  • ESP32-C3赋能物联网设备,开启产品智能化,乐鑫代理商飞睿科技
  • 奥比中光相机pythonAPI color.py运行报错 (-5:Bad argument) in function ‘cvtColor‘
  • 南和网站建设公司建筑设计网课
  • 网站建设与管理 自考网络营销的四大基础理论
  • 毫秒级自动对焦,超高景深液态镜头在机器视觉检测中的应用
  • 了解一下攻击树(从攻击者的视角审视自身系统)
  • 【MySQL体系】第7篇:MySQL锁机制深度解析与实战