Centos安装部署Dinky
Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。致力于简化Flink任务开发,提升Flink任务运维能力,降低Flink入门成本,提供一站式的Flink任务开发、运维、监控、报警、调度、数据管理等功能。
一、Dinky介绍
1.1、概述
Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 致力于简化Flink任务开发,提升Flink任务运维能力,降低Flink入门成本,提供一站式的Flink任务开发、运维、监控、报警、调度、数据管理等功能。
1.2、特性
- 沉浸式 FlinkSQL 数据开发:自动提示补全、语法高亮、语句美化、在线调试、语法校验、执行计划、Catalog支持、血缘分析等
- Flink SQL语法增强,如 CDC任务,jar任务,实时打印表数据,实时数据预览,全局变量增强,语句合并、整库同步等
- 适配 FlinkSQL 多种执行模式:Local、Standalone、Yarn/Kubernetes Session、Yarn Per-Job、Yarn/Kubernetes Application
- 增强 Flink 生态拓展:Connector、FlinkCDC、Table Store 等
- 支持 FlinkCDC 整库实时入仓入湖、多库输出、自动建表、模式演变
- 支持 Flink Java / Scala / Python UDF 开发与自动提交
- 支持 SQL 作业开发:ClickHouse、Doris、Hive、Mysql、Oracle、Phoenix、PostgreSql、Presto、SqlServer、StarRocks 等
- 支持实时在线调试预览 Table、 ChangeLog、统计图和 UDF
- 支持 Flink Catalog、Dinky内置Catalog增强,数据源元数据在线查询及管理
- 支持自动托管的 SavePoint/CheckPoint 恢复及触发机制:最近一次、最早一次、指定一次等
- 支持实时任务运维:作业信息、集群信息、作业快照、异常信息、历史版本、报警记录等
- 支持作为多版本 FlinkSQL Server 以及 OpenApi 的能力
- 支持实时作业报警及报警组:钉钉、微信企业号、飞书、邮箱等
- 支持多种资源管理:集群实例、集群配置、数据源、报警组、报警实例、文档、系统配置等
- 支持企业级管理功能:多租户、用户、角色、命名空间等
- 更多隐藏功能等待小伙伴们探索
GitHub:https://github.com/DataLinkDC/dinky
文档:https://www.dinky.org.cn/docs/next/get_started/quick_experience/
1.3、主要功能

1.4、原理

二、安装部署
Dinky不依赖任何外部环境,完全解耦,支持同时连接多个不同的集群实例进行运维。
2.1、准备安装包
下载Dinky解压包(也可以通过官网下载 Dinky ,然后上传到服务器)
wget https://github.com/DataLinkDC/dinky/releases/download/v1.2.3/dinky-release-1.17-1.2.3.tar.gz
下载java jdk1.8+上传到服务器并且配置好java环境变量
2.2、初始化 MySQL 数据库
登录mysql
mysql -u root -p
创建数据库dinky
CREATE DATABASE dinky;
创建用户,并给予权限,并刷新权限
CREATE USER 'dinky'@'%' IDENTIFIED WITH mysql_native_password BY 'dinky';
GRANT ALL PRIVILEGES ON dinky.* TO 'dinky'@'%';
FLUSH PRIVILEGES;
注意:
Dinky使用Flyway进行数据库版本管理,在第一次部署时,无需手动建表, Flyway 会自动完成。用户只需配置好数据库连接信息,其他配置文件默认即可。
2.3、Dinky 部署
解压安装包到指定目录下
tar -zxvf dinky-release-1.17-1.2.3.tar.gz -C /opt/
将解压后的dinky文件改名
cd /opt
mv dinky-release-1.17-1.2.3 dinky
修改 Dinky 配置文件,选择默认数据源为 mysql
cd /opt/dinky/config/
vi application.yml
# 修改 Dinky 所使用的数据库类型为 mysql
spring:
application:
name: Dinky
profiles:
# The h2 database is used by default. If you need to use other databases, please set the configuration active to: mysql, currently supports [mysql, pgsql, h2]
# If you use mysql database, please configure mysql database connection information in application-mysql.yml
# If you use pgsql database, please configure pgsql database connection information in application-pgsql.yml
# If you use the h2 database, please configure the h2 database connection information in application-h2.yml,
# note: the h2 database is only for experience use, and the related data that has been created cannot be migrated, please use it with caution
active: ${DB_ACTIVE:mysql} #[h2,mysql,pgsql]
修改 Dinky 的 mysql 的配置文件
vi application-mysql.yml
# 修改 Dinky 的 mysql 链接配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_ADDR:127.0.0.1:3306}/${MYSQL_DATABASE:dinky}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: ${MYSQL_USERNAME:dinky}
password: ${MYSQL_PASSWORD:dinky}
driver-class-name: com.mysql.cj.jdbc.Driver
上传依赖
- Dinky 需要具备内置的 Flink 环境,该 Flink 环境的实现需要用户自己在 Dinky 根目录下
extends/flink${FLINK_VERSION}文件夹上传相关的 Flink 依赖,如 flink-dist, flink-table 等。- Dinky 采用 【h2,mysql,postgresql 】作为后端的存储库,mysql 支持 5.7+。选择mysql作为存储库时,需要把mysql驱动包上传到 Dinky 根目录下
lib文件夹里。
注意事项:
- Dinky 当前版本的 yarn 的 per-job 与 application 执行模式依赖 flink-shaded-hadoop ,需要额外添加 flink-shaded-hadoop-uber 包,如果您使用的是
flink-shaded-hadoop-uber-3请手动删除该包内部的 javax.servlet 等冲突内容。 当然如果你的 Hadoop 为 3+ 也可以自行编译对于版本的 dinky-client-hadoop.jar 以替代 uber 包,- Dinky所有监控相关功能目前强依赖hadoop,即使你不需要任何hadoop功能,也需要上传flink-shaded-hadoop-uber,否则会导致监控功能无法正常使用
将 flink-shaded-hadoop 上传到到 extends 文件目录下,使用 flink-shaded-hadoop-3 地址如下:https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-3-uber?repo=cloudera-repos
如果是 CDH 及 HDP 使用开源 flink-shaded 对 Dinky 目前没有影响,其他用到的依赖取决于 CDH 或者 HDP 与开源版本的兼容性,需要自行根据兼容性添加依赖即可正常使用 Dinky 的所有功能。
最终项目根目录如下:
├── auto.sh -- 启动停止脚本
├── config -- 配置文件
│ ├── jmx
│ │ └── jmx_exporter_config.yaml -- JMX 监控集成
│ ├── application.yml -- 主要程序运行配置文件
│ ├── application-h2.yml -- h2 配置文件
│ ├── application-jmx.yml -- jmx 配置文件
│ ├── application-mysql.yml -- mysql 配置文件
│ ├── application-pgsql.yml -- pgsql 配置文件
│ ├── DinkyFlinkDockerfile -- k8s 集群配置自动构建镜像的Dockerfile
│ └── log4j2.xml -- 日志配置
├── dinky-loader
│ ├── ExpressionVariableClass -- 全局变量动态加载的表达式扫描配置文件
│ └── FlinkConfClass -- 全局变量动态加载 Flink 配置的扫描配置文件
├── extends
│ ├── flink1.14 -- 适配 Flink1.14.x
│ │ └── dinky
│ │ ├── dinky-catalog-mysql-1.14-${VERSION}.jar -- dinky 的 catalog 实现
│ │ ├── dinky-client-1.14-${VERSION}.jar
│ │ └── dinky-connector-jdbc-1.14-${VERSION}.jar -- dinky 的 jdbc 连接器增强实现
│ ├── flink1.15 -- 适配 Flink1.15.x
│ │ └── dinky
│ │ ├── dinky-catalog-mysql-1.15-${VERSION}.jar -- dinky 的 catalog 实现
│ │ └── dinky-client-1.15-${VERSION}.jar
│ ├── flink1.16 -- 适配 Flink1.16.x
│ │ └── dinky
│ │ ├── dinky-catalog-mysql-1.16-${VERSION}.jar -- dinky 的 catalog 实现
│ │ └── dinky-client-1.16-${VERSION}.jar
│ ├── flink1.17 -- 适配 Flink1.17.x
│ │ └── dinky
│ │ ├── dinky-catalog-mysql-1.17-${VERSION}.jar -- dinky 的 catalog 实现
│ │ └── dinky-client-1.17-${VERSION}.jar
│ └── flink1.18 -- 适配 Flink1.18.x
│ │ └── dinky
│ │ ├── dinky-catalog-mysql-1.18-${VERSION}.jar -- dinky 的 catalog 实现
│ │ └── dinky-client-1.18-${VERSION}.jar
├── jar
│ ├── dinky-app-1.14-${VERSION}-jar-with-dependencies.jar -- 适配 Flink1.14.x application
│ ├── dinky-app-1.15-${VERSION}-jar-with-dependencies.jar -- 适配 Flink1.15.x application
│ ├── dinky-app-1.16-${VERSION}-jar-with-dependencies.jar -- 适配 Flink1.16.x application
│ ├── dinky-app-1.17-${VERSION}-jar-with-dependencies.jar -- 适配 Flink1.17.x application
│ └── dinky-app-1.18-${VERSION}-jar-with-dependencies.jar -- 适配 Flink1.18.x application
├── lib
│ └── ... -- Dinky 的内部依赖
└── sql
├── dinky-mysql.sql -- Mysql 首次初始化脚本
├── dinky-pg.sql -- PGSql 首次初始化脚本
└── upgrade -- 各个版本的升级 SQL
添加Flink依赖
下载对应的
Flink版本,把Flink解压后,把Flink的lib目录下的依赖包拷贝放在 Dinky 安装目录extends/flink${FLINK_VERSION}下
例如:
flink-cep-1.17.1.jar
flink-connector-files-1.17.1.jar
flink-connector-jdbc-1.17.1.jar
flink-csv-1.17.1.jar
flink-dist-1.17.1.jar
flink-json-1.17.1.jar
flink-scala_2.12-1.17.1.jar
flink-shaded-hadoop-2-uber-2.7.5-8.0.jar
flink-shaded-zookeeper-3.5.9.jar
flink-table-api-java-uber-1.17.1.jarflink-table-planner_2.12-1.17.1.jar
flink-table-runtime-1.17.1.jar
log4j-1.2-api-2.17.1.jar
log4j-api-2.17.1.jar
log4j-core-2.17.1.jar
log4j-slf4j-impl-2.17.1.jar
特别注意:
# flink自带lib里的planner是带loader的,比如:flink-table-planner-loader-1.17.1.jar,
# 需要删除带loader的jar包,换一个不带loader的jar, 可前往flink根下的opt目录中找到
# 对于standalone,hdfs,k8s等集群上的flink集群同样要做此操作
Flink官方历史版本:https://archive.apache.org/dist/flink/
2.4、Dinky 启动
Dinky一些相关命令
#启动
sh ./bin/auto.sh start 1.17
#停止
sh ./bin/auto.sh stop
#重启
sh ./bin/auto.sh restart
#查看状态
sh ./bin/auto.sh status
# 前台启动(调试使用,会输出日志,阻塞当前终端,结束请Ctrl+C,但是会直接退出服务,仅供启动时无日志输出且在排查问题时使用)
sh auto.sh startOnPending 1.17
版本适配
启动指令的第二个参数则是版本选择,支持 【1.14, 1.15, 1.16, 1.17, 1.18, 1.19】,参考指令如下:
自 1.0.2 版本开始加入了自动检测 Flink 版本的功能,如果不传入版本号,则会自动检测 Flink 版本作为启动版本(即检测 extends 目录下的
flink${FLINK_VERSION}文件夹)
启动dlinky
#启动
sh ./bin/auto.sh start 1.17

注意:
如启动报错,查看启动日志,根据错误信息排查问题,如下命令:
cat dinky/logs/dinky-start.log
检查进程
ps aux | grep dinky-admin
检查端口监听
netstat -tuln | grep 8888

本地访问测试
curl http://localhost:8888
以上没有检测到进程和端口就需要重新启动dinky
sh ./bin/auto.sh stop
sh ./bin/auto.sh start 1.17
登录dinky网页
服务启动后,默认端口 8888,访问:
http://IP:8888账号:admin
密码:初次登录需自己设置密码


更多推荐

所有评论(0)