逍遥谷

记录日常的点点滴滴

0%

Dinky0.7安装文档

Dinky部署

Dinky 不依赖任何外部的 Hadoop 或者 Flink 环境,可以单独部署在 flink、 hadoop 和 K8S 集群之外,完全解耦,支持同时连接多个不同的集群实例进行运维。

1
2
3
tar -zxvf dinky-release-{version}.tar.gz
mv dinky-release-{version} dinky
cd dinky

配置文件

创建好数据库后,修改 Dinky 连接 mysql 的配置文件。

1
2
3
#切换目录
cd /opt/dinky/config/
vim application.yml

加载依赖

Dinky 需要具备自身的 Flink 环境,该 Flink 环境的实现需要用户自己在 Dinky 根目录下 plugins/flink${FLINK_VERSION} 文件夹并上传相关的 Flink 依赖,如 flink-dist, flink-table 等,具体见下文。当然也可在启动文件中指定 FLINK_HOME,但不建议这样做。

注意事项

Dinky 当前版本的 yarn 的 perjob 与 application 执行模式依赖 flink-shade-hadoop ,如果你的 Hadoop 版本为 2+ 或 3+,需要额外添加 flink-shade-hadoop-uber-3 包,请手动删除该包内部的 javax.servlet 等冲突内容。 当然如果你的 Hadoop 为 3+ 也可以自行编译对于版本的 dinky-client-hadoop.jar 以替代 uber 包

将 flink-shade-hadoop 上传到到 plugins 文件目录下,使用 flink-shade-hadoop-3 地址如下:

1
https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-3-uber?repo=cloudera-repos

如果是 CDH 及 HDP 使用开源 flink-shade 对 Dinky 没有任何影响,其他用到的依赖取决于 CDH 或者 HDP 与开源版本的兼容性,需要自行根据兼容性添加依赖即可正常使用 Dinky 的所有功能。

最终项目根目录如下,仅供参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
├── auto.sh -- 启动停止脚本
├── config -- 配置文件
│ ├── DinkyFlinkDockerfile -- k8s 集群配置自动构建镜像的Dockerfile
│ └── log4j2.xml -- 日志文件
│ └── application.yml -- 主要程序运行配置文件
├── jar
│ ├── Dockerfile
│ ├── dlink-app-1.11-0.7.0-jar-with-dependencies.jar -- 适配 Flink1.11.x application
│ ├── dlink-app-1.12-0.7.0-jar-with-dependencies.jar -- 适配 Flink1.12.x application
│ ├── dlink-app-1.13-0.7.0-jar-with-dependencies.jar -- 适配 Flink1.13.x application
│ ├── dlink-app-1.14-0.7.0-jar-with-dependencies.jar -- 适配 Flink1.14.x application
│ ├── dlink-app-1.15-0.7.0-jar-with-dependencies.jar -- 适配 Flink1.15.x application
│ └── dlink-app-1.16-0.7.0-jar-with-dependencies.jar -- 适配 Flink1.16.x application
├── lib
│ ├── dlink-admin-0.7.0.jar --主程序包
│ ├── dlink-alert-base-0.7.0.jar
│ ├── dlink-alert-dingtalk-0.7.0.jar
│ ├── dlink-alert-email-0.7.0.jar
│ ├── dlink-alert-feishu-0.7.0.jar
│ ├── dlink-alert-wechat-0.7.0.jar
│ ├── dlink-client-base-0.7.0.jar
│ ├── dlink-common-0.7.0.jar
│ ├── dlink-core-0.7.0.jar
│ ├── dlink-daemon-0.7.0.jar
│ ├── dlink-executor-0.7.0.jar
│ ├── dlink-function-0.7.0.jar
│ ├── dlink-gateway-0.7.0.jar
│ ├── dlink-metadata-base-0.7.0.jar
│ ├── dlink-metadata-clickhouse-0.7.0.jar
│ ├── dlink-metadata-doris-0.7.0.jar
│ ├── dlink-metadata-hive-0.7.0.jar
│ ├── dlink-metadata-mysql-0.7.0.jar
│ ├── dlink-metadata-oracle-0.7.0.jar
│ ├── dlink-metadata-phoenix-0.7.0.jar
│ ├── dlink-metadata-postgresql-0.7.0.jar
│ ├── dlink-metadata-presto-0.7.0.jar
│ ├── dlink-metadata-sqlserver-0.7.0.jar
│ ├── dlink-metadata-starrocks-0.7.0.jar
│ ├── dlink-process-0.7.0.jar
│ ├── dlink-scheduler-0.7.0.jar
├── plugins
│ ├── flink1.11 -- 适配 Flink1.11.x
│ │ └── dlink-client-1.11-0.7.0.jar
│ ├── flink1.12 -- 适配 Flink1.12.x
│ │ └── dlink-client-1.12-0.7.0.jar
│ ├── flink1.13 -- 适配 Flink1.13.x
│ │ ├── dlink-catalog-mysql-1.13-0.7.0.jar -- dlink 的 catalog 实现
│ │ └── dlink-client-1.13-0.7.0.jar
│ ├── flink1.14 -- 适配 Flink1.14.x,默认
│ │ ├── dlink-catalog-mysql-1.14-0.7.0.jar -- dlink 的 catalog 实现
│ │ └── dlink-client-1.14-0.7.0.jar
│ │ └── flink-shaded-hadoop-3-uber-3.1.1.7.2.1.0-327-9.0.jar
│ ├── flink1.15 -- 适配 Flink1.15.x
│ │ ├── dlink-catalog-mysql-1.15-0.7.0.jar -- dlink 的 catalog 实现
│ │ └── dlink-client-1.15-0.7.0.jar
│ └── flink1.16 -- 适配 Flink1.15.x
│ ├── dlink-catalog-mysql-1.16-0.7.0.jar -- dlink 的 catalog 实现
│ └── dlink-client-1.16-0.7.0.jar
└── sql
├── dinky.sql -- Mysql初始化脚本
└── upgrade -- 各个版本的升级 SQL

提示

推荐公共 jar 包放在 plugins 目录下,Flink 版本化的依赖放在 plugins/flink${FLINK_VERSION}

启动Dinky

1
2
3
4
5
6
7
8
#启动
$sh auto.sh start
#停止
$sh auto.sh stop
#重启
$sh auto.sh restart
#查看状态
$sh auto.sh status

版本适配

启动指令的第二个参数则是版本选择,支持 【1.11, 1.12, 1.13, 1.14, 1.15, 1.16,1.17】,参考指令如下:

1
2
#启动
$sh auto.sh start 1.17

对应 Flink 版本的依赖,放在Dinky 安装目录下 plugins/flink${FLINK_VERSION}下

数据库初始化

Dinky 采用 mysql 作为后端的存储库,mysql 支持 5.7+。这里假设你已经安装了 mysql 。首先需要创建 Dinky 的后端数据库,这里以配置文件中默认库创建。

在 Dinky 根目录 sql 文件夹下分别放置了 dinky.sql 、 upgrade/${version}_schema/mysql/ddl 和 dml。如果第一次部署,可以直接将 sql/dinky.sql 文件在 dinky 数据库下执行。(如果之前已经部署,那 upgrade 目录下 存放了各版本的升级 sql ,根据版本号按需执行即可)

MySQL-5.x

1
2
3
4
5
6
7
8
9
10
11
12
#登录mysql
mysql -uroot -proot@123
#创建数据库
mysql>
create database dinky;
#授权
mysql>
grant all privileges on dinky.* to 'dinky'@'%' identified by 'dinky' with grant option;
mysql>
flush privileges;
#此处用 dinky 用户登录
mysql -h fdw1 -udinky -pdinky

MySQL-8.x

1
2
3
4
5
6
7
8
9
10
11
12
13
#登录mysql
mysql -uroot -proot@123
#创建数据库
mysql>
CREATE DATABASE dinky;
#创建用户并允许远程登录
mysql>
create user 'dinky'@'%' IDENTIFIED WITH mysql_native_password by 'dinky';
#授权
mysql>
grant ALL PRIVILEGES ON dinky.* to 'dinky'@'%';
mysql>
flush privileges;

第一次部署

1
2
3
4
5
#首先登录 mysql
mysql -h fdw1 -udinky -pdinky
mysql>
use dinky;
mysql> source /opt/dinky/sql/dinky.sql

参考链接:http://www.dlink.top/docs/0.7/deploy_guide/build