docker-compose部署Flink及Dinky
docker-compose部署Flink及Dinky
服务器环境:centos7
1. 配置hosts
vim /etc/hostsx.x.x.x jobmanager
x.x.x.x taskmanager
x.x.x.x dinky-mysql
2. 文件目录结构
.
├── conf
│ ├── JobManager
│ │ ├── flink-conf.yaml
│ │ ├── log4j-cli.properties
│ │ ├── log4j-console.properties
│ │ ├── log4j.properties
│ │ ├── log4j-session.properties
│ │ ├── logback-console.xml
│ │ ├── logback-session.xml
│ │ ├── logback.xml
│ │ ├── masters
│ │ ├── workers
│ │ └── zoo.cfg
│ └── TaskManager
│ ├── flink-conf.yaml
│ ├── log4j-cli.properties
│ ├── log4j-console.properties
│ ├── log4j.properties
│ ├── log4j-session.properties
│ ├── logback-console.xml
│ ├── logback-session.xml
│ ├── logback.xml
│ ├── masters
│ ├── workers
│ └── zoo.cfg
├── dinky
│ ├── config
│ │ └── application.yml
│ └── lib
├── dinky-mysql
│ ├── conf
│ │ └── my.cnf
│ └── data
├── docker-compose-flink-dinky.yml
├── jar
├── plugins
└── sql
说明:
(建议第一次启动容器时不映射配置文件及lib包路径,将默认的配置文件和lib包复制到宿主机后,第二次启动时再映射配置文件及lib包路径,方便后期功能扩展)
- flink/conf/JobManager/flink-conf.yaml - flink JobManager的配置文件
- flink/conf/TaskManager/flink-conf.yaml - flink TaskManager的配置文件
- flink/jar/ - JobManager和TaskManager的依赖包,映射容器内的/opt/flink/lib/ 目录。
- flink/dinky/config/application.yml - dinky的配置文件,可以配置连接的mysql库
- flink/dinky/lib/ - dinky的依赖包,映射容器内的/opt/dinky/lib/ 目录。
- flink/dinky-mysql/conf/my.cnf - dinky-mysql的配置文件,需配置 max_allowed_packet=1073741824,否则导入数据会失败。
- flink/dinky-mysql/data/ - dinky-mysql的数据映射目录
3. 创建容器
-
docker-compose-flink-dinky.yml
version: '3' services:jobmanager:image: flink:1.14.0-scala_2.12-java8container_name: jobmanagerhostname: jobmanagerexpose: - "6123"ports:- "48081:8081" # Flink Web UI- "6123:6123" # JobManager RPC- "6124:6124" # JobManager REST- "8082:8082" # Metrics- "6125:6125" # Blob Servercommand: jobmanagernetworks: - flink-netrestart: alwaysvolumes:- /opt/flink/conf/JobManager/:/opt/flink/conf/ #第一次启动不映射,将conf复制到宿主机后,第二次启动再映射- /opt/flink/jar/:/opt/flink/lib/ #第一次启动不映射,将lib复制到宿主机后,第二次启动再映射- /opt/flink/plugins/:/opt/flink/plugins/- /opt/flink/sql/:/opt/flink/sql/taskmanager:image: flink:1.14.0-scala_2.12-java8container_name: taskmanagerhostname: taskmanagerdepends_on:- jobmanagerscale: 1 # 可以根据需要增加 TaskManagers 的数量command: taskmanagernetworks:- flink-netrestart: alwaysenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanagervolumes:- /opt/flink/conf/TaskManager/:/opt/flink/conf/ #第一次启动不映射,将conf复制到宿主机后,第二次启动再映射- /opt/flink/jar/:/opt/flink/lib/ #第一次启动不映射,将lib复制到宿主机后,第二次启动再映射- /opt/flink/plugins/:/opt/flink/plugins/- /opt/flink/sql/:/opt/flink/sql/dinky:image: dinkydocker/dinky-standalone-server:0.7.0-flink14container_name: dinkyhostname: dinkyports:- "38081:8081"- "38888:8888"networks:- flink-netrestart: alwaysenvironment:- SPRING_PROFILES_ACTIVE=prod- MYSQL_HOST=dinky-mysql- MYSQL_PORT=33306- MYSQL_DATABASE=dlink- MYSQL_USERNAME=dlink- MYSQL_PASSWORD=dlinkdepends_on:- dinky-mysqlvolumes:- /opt/flink/dinky/config/application.yml:/opt/dinky/config/application.yml #第一次启动不映射,将application.yml复制到宿主机后,第二次启动再映射- /opt/flink/dinky/lib/:/opt/dinky/lib/ #第一次启动不映射,将lib复制到宿主机后,第二次启动再映射dinky-mysql: image: dinkydocker/dinky-mysql-server:0.7.0container_name: dinky-mysqlhostname: dinky-mysqlports:- "33306:3306"networks:- flink-netrestart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=dlink- MYSQL_DATABASE=dlinkvolumes:- /opt/flink/dinky-mysql/data/:/var/lib/mysql/- /opt/flink/dinky-mysql/conf/:/etc/mysql/conf.d/networks:flink-net:driver: bridge
-
创建容器
docker-compose -f docker-compose-flink-dinky.yml up -d
如果创建容器时,报错 iptables: No chain/target/match by that name. 需开启防火墙(systemctl start firewalld)
-
查看容器状态
如果容器都是up状态,但是web页面访问不到,注意一下两点:
- 防火墙是否关闭,或开放指定端口
- 进入docker 容器的logs目录下查看日志
4. web访问验证
-
flink:http://ip:48081/
-
dinky:http://ip:38888/
用户名/密码:admin/admin
5. Dinky 配置及测试
5.1 配置flink实例
在 dinky --> 注册中心 --> 集群管理 --> Flink实例管理 中配置 flink的JobManager地址
5.2 执行sql
-
在测试数据库创建数据表user_source 和 target_source
-
在dinky创建sql并执行
-- 创建源表映射语句 DROP TABLE if exists user_source_1; CREATE TABLE IF NOT EXISTS user_source_1 (`id` STRING,`name` STRING,`age` INT ) WITH ('connector' = 'jdbc','url' = 'jdbc:mysql://ip:3306/test_database?characterEncoding=UTF-8&allowMultiQueries=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true','table-name' = 'user_source','username' = 'root','password' = '123456' );-- 创建目标表映射语句 DROP TABLE if exists user_target_1; CREATE TABLE IF NOT EXISTS user_target_1 (`id` STRING,`name` STRING,`age` INT ) WITH ('connector' = 'jdbc','url' = 'jdbc:mysql://ip:3306/test_database?characterEncoding=UTF-8&allowMultiQueries=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true','table-name' = 'user_target','username' = 'root','password' = '123456' );-- 同步数据语句 insert into user_target_1 select * from user_source_1;
-
配置执行模式,并执行sql。执行完成后在flink管理页面也可以看到执行的sql任务
-
如果在执行sql过程中有下面报错,是因为缺少对应的jar包,需要将包传入dinky的lib目录
Caused by: org.apache.flink.table.api.ValidationException: Cannot discover a connector using option: 'connector'='jdbc' at org.apache.flink.table.factories.FactoryUtil.enrichNoMatchingConnectorError(FactoryUtil.java:587) at org.apache.flink.table.factories.FactoryUtil.getDynamicTableFactory(FactoryUtil.java:561) at org.apache.flink.table.factories.FactoryUtil.createTableSource(FactoryUtil.java:146) ... 112 more Caused by: org.apache.flink.table.api.ValidationException: Could not find any factory for identifier 'jdbc' that implements 'org.apache.flink.table.factories.DynamicTableFactory' in the classpath. Available factory identifiers are: blackhole datagen filesystem print at org.apache.flink.table.factories.FactoryUtil.discoverFactory(FactoryUtil.java:399) at org.apache.flink.table.factories.FactoryUtil.enrichNoMatchingConnectorError(FactoryUtil.java:583) ... 114 more
相关文章:

docker-compose部署Flink及Dinky
docker-compose部署Flink及Dinky 服务器环境:centos7 1. 配置hosts vim /etc/hostsx.x.x.x jobmanager x.x.x.x taskmanager x.x.x.x dinky-mysql2. 文件目录结构 . ├── conf │ ├── JobManager │ │ ├── flink-conf.yaml │ │ ├── log…...

数字时代的文化革命:Facebook的社会影响
随着数字技术的飞速发展和互联网的普及,社交网络如今已成为人们日常生活中不可或缺的一部分。在众多社交平台中,Facebook作为最大的社交网络之一,不仅连接了全球数十亿用户,更深刻影响了人们的社会互动方式、文化认同和信息传播模…...
66.前端接口调用返回400的错误
错误代码400通常表示由于无效的请求导致服务器无法处理请求。这可能是由于以下原因之一: 1.语法错误:客户端发送的请求可能存在语法错误,例如缺少必需的参数、格式不正确等。 2.未授权:如果API需要认证,而客户端没有提…...

Hadoop 安装与伪分布的搭建
目录 1 SSH免密登录 1.1 修改主机名称 1.2 修改hosts文件 1.3 创建hadoop用户 1.4 生成密钥对免密登录 2 搭建hadoop环境与jdk环境 2.1 将下载好的压缩包进行解压 2.2 编写hadoop环境变量脚本文件 2.3 修改hadoop配置文件,指定jdk路径 2.4 查看环境是否搭建完成 3 …...
网络安全:渗透测试思路.(面试)
网络安全:渗透测试思路.(面试) 渗透测试,也称为 "pen testing",是一种模拟黑客攻击的网络安全实践,目的是评估计算机系统、网络或Web应用程序的安全性. 目录: 网络安全:…...
优化堆排序
优化堆排序 堆排序是一种基于比较的排序算法,它利用堆这种数据结构来进行排序。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。堆排序算法分为两个大的步骤:首先将待排序的序列构造成一个最大堆,此时,整个序…...

vue3使用一些组件的方法
iconpark...
OceanBase 4.2.1 离线安装
OceanBase 4.2.1 离线安装 4.2 版本的OceanBase支持一键安装,所以在线版本的安装简单了很多,但在无法连接网络的情况下安装就只能手动离线安装。 注:如下安装过程都是在同一台机器上面进行,也就是只有一个节点,多个节…...
ForkJoin
线程数超过CPU核心数是没有任何意义的【因为要使用CPU密集型运算】 Fork/Join:线程池的实现,体现是分治思想,适用于能够进行任务拆分的 CPU 密集型运算,用于并行计算 任务拆分:将一个大任务拆分为算法上相同的小任务…...

实验2 色彩模式转换
1. 实验目的 ①了解常用的色彩模式,理解色彩模式转换原理; ②掌握Photoshop中常用的颜色管理工具和色彩模式转换方法; ③掌握使用Matlab/PythonOpenCV编程实现色彩模式转换的方法。 2. 实验内容 ①使用Photoshop中的颜色管理工具ÿ…...

AES加密算法及AES-CMAC原理白话版系统解析
本文框架 前言1. AES加密理论1.1 不同AES算法区别1.2 加密过程介绍1.2.1 加密模式和填充方案选择1.2.2 密钥扩展1.2.3分组处理1.2.4多轮加密1.2.4.1字节替换1.2.4.2行移位1.2.4.3列混淆1.2.4.4轮密钥加1.3 加密模式1.3.1ECB模式1.3.2CBC模式1.3.3CTR模式1.3.4CFB模式1.3.5 OFB模…...

24年hvv前夕,微步也要收费了,情报共享会在今年结束么?
一个人走的很快,但一群人才能走的更远。吉祥同学学安全https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&scene21#wechat_redirect这个星球🔗里面已经沉淀了: 《Ja…...

【地理库 Turf.js】
非常全面的地理库 , 这里枚举一些比较常用,重点的功能, 重点功能 提供地理相关的类:包括点,线,面等类。 测量功能:点到线段的距离,点和线的关系等。 判断功能: 点是否在…...

springboot在线考试 LW +PPT+源码+讲解
第三章 系统分析 3.1 可行性分析 一个完整的系统,可行性分析是必须要有的,因为他关系到系统生存问题,对开发的意义进行分析,能否通过本系统来补充线下在线考试管理模式中的缺限,去解决其中的不足等,通过对…...
JDBC中的事务及其ACID特性
在JDBC(Java Database Connectivity)中,事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作。这些操作要么全部执行,要么全部不执行,从而确保数据库的完整性和一致性。事务是现代数据库…...

Python | Leetcode Python题解之第204题计数质数
题目: 题解: MX5000000 is_prime [1] * MX is_prime[0]is_prime[1]0 for i in range(2, MX):if is_prime[i]:for j in range(i * i, MX, i):#循环每次增加iis_prime[j] 0 class Solution:def countPrimes(self, n: int) -> int:return sum(is_prim…...

【课程总结】Day10:卷积网络的基本组件
前言 由于接下来的课程内容将围绕计算机视觉展开,其中接触最多的内容是卷积、卷积神经网络等…因此,本篇内容将从卷积入手,梳理理解:卷积的意义、卷积在图像处理中的作用以及卷积神经网络的概念,最后利用pytorch搭建一…...

ModuleNotFoundError: No module named ‘_sysconfigdata_x86_64_conda_linux_gnu‘
ModuleNotFoundError: No module named _sysconfigdata_x86_64_conda_linux_gnu 1.软件环境⚙️2.问题描述🔍3.解决方法🐡4.结果预览🤔 1.软件环境⚙️ Ubuntu 20.04 Python 3.7.0 2.问题描述🔍 今天发现更新conda之后࿰…...

【物联网】室内定位技术及定位方式简介
目录 一、概述 二、常用的室内定位技术 2.1 WIFI技术 2.2 UWB超宽带 2.3 蓝牙BLE 2.4 ZigBee技术 2.5 RFID技术 三、常用的室内定位方式 3.1 信号到达时间 3.2 信号到达时间差 3.3 信号到达角 3.4 接收信号强度 一、概述 GPS是目前应用最广泛的定位技术࿰…...

Leetcode[反转链表]
LCR 024. 反转链表 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...