Dinky 安装部署并配置提交 Flink Yarn 任务

官方文档

https://www.dinky.org.cn/docs/1.1/deploy_guide/normal_deploy

版本

  • dinky 1.1.0、1.2.3 当前最新发布版本为 1.2.3 ,但是官方文档最新稳定版为 1.1 ,所以先选择 1.1.0,验证通过后,再尝试 1.2.3 ,发现 1.1.0 和 1.2.3 的安装配置完全一样,都能正常使用。
  • Flink 1.15.3

安装包

https://github.com/DataLinkDC/dinky/releases/download/v1.1.0/dinky-release-1.15-1.1.0.tar.gz
https://github.com/DataLinkDC/dinky/releases/download/v1.2.3/dinky-release-1.15-1.2.3.tar.gz

解压

复制代码
tar -zxvf dinky-release-1.15-1.1.0.tar.gz
mv dinky-release-1.15-1.1.0 dinky
mv dinky /opt/

数据库初始化

创建库和用户

myql-5.x

sql 复制代码
#登录mysql
mysql -uroot -p
#创建数据库
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;

msyql-8.x

sql 复制代码
#登录mysql
mysql -uroot -p
#创建数据库
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;

初始化表

sql 复制代码
mysql> use dinky;
mysql> source /opt/dinky/sql/dinky-mysql.sql

配置

创建好数据库后,修改 Dinky 配置文件,选择默认数据源为 mysql。

bash 复制代码
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 的配置文件。

bash 复制代码
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

注意:当MySQL 和 Dinky 在相同的机器,虽然配置 MySQL 的IP 为默认的 127.0.0.1,Dinky 也能正常运行,但是当提交 yarn-application任务时,ApplicationMaster需要连接 MySQL 获取任务信息,如果ApplicationMaster在别的节点,则会报连接MySQL失败,所以需要将 IP 由 127.0.0.1 改为别的节点也能连接的 IP

上传依赖

主要是将 flink lib 下的jar 包传到 extends/flink${FLINK_VERSION}

bash 复制代码
cp lib/* /opt/dinky/extends/flink1.15/dinky/

例如

bash 复制代码
flink-cep-1.15.3.jar
flink-connector-files-1.15.3.jar
flink-connector-jdbc-1.15.3.jar
flink-csv-1.15.3.jar
flink-dist-1.15.3.jar
flink-json-1.15.3.jar
flink-scala_2.12-1.15.3.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.15.3.jar
# !!!特别注意,flink自带lib里的planner是带loader的,比如:flink-table-planner-loader-1.15.3.jar,
# 需要删除带loader的jar包,换一个不带loader的jar, 可前往flink根下的opt目录中找到
# 对于standalone,hdfs,k8s等集群上的flink集群同样要做此操作
flink-table-planner_2.12-1.15.3.jar

flink-table-runtime-1.15.3.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

启动 Dinky

bash 复制代码
#启动
sh auto.sh start
#停止
sh auto.sh stop
#重启
sh auto.sh restart
#查看状态
sh auto.sh status

# 前台启动(调试使用,会输出日志,阻塞当前终端,结束请Ctrl+C,但是会直接退出服务,仅供启动时无日志输出且在排查问题时使用)
sh auto.sh startOnPending

说明

服务启动后,默认端口 8888,http://127.0.0.1:8888 , 默认用户名/密码: admin/dinky123!@# ,如需修改,请使用默认用户名/密码登录后,在认证中心->用户中修改
Dinky 部署需要 MySQL5.7 以上版本

以下是对应版本的截图

1.1.0


1.2.3

相比于 1.1.0 ,1.2.3 版本在第一次安装登录时,多了一些初始配置界面。






源码编译

官网

https://www.dinky.org.cn/docs/1.1/deploy_guide/compile_deploy
https://github.com/DataLinkDC/dinky

打包命令

bash 复制代码
# 需要网络能下载 nodejs、npm
mvn clean package -DskipTests=true -P prod,flink-single-version,aliyun,flink-1.15,web

编译结果

编译完成后,请查看编译后的目录,如果编译成功,会在 dinky/build 目录下生成对应的版本的 tar.gz 包

问题解决

1.1.0 以及最新的 1.3.0-SNAPSHOT(dev分支)打包都正常,但是 1.2.3 会报:

java 复制代码
[ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.27.1:check (spotless-check) on project dinky-common: Execution spotless-check of goal com.diffplug.spotless:spotless-maven-plugin:2.27.1:check failed: java.lang.reflect.InvocationTargetException: com/palantir/javaformat/java/JavaFormatterOptions has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 -> [Help 1]

解决方法:将 pom 中的 spotless-maven-plugin 配置删掉

首先需要创建集群,官方文档:https://www.dinky.org.cn/docs/1.1/user_guide/register_center/cluster_manage
Flink 路径:和在 上传依赖 步骤中一样,将Flink 的lib 包上传到对应的 HDFS 路径
Jar 文件路径: 将 $DINKY_HOME/jar 下面的 jar 包上传到对应的 HDFS 路径

1.1.0

创建集群

默认禁用,需要启用

数据开发-> 创建作业

提交到yarn: 选择刚才创建的集群

1.2.3

创建集群

默认启用

数据开发-> 创建作业

yarn-per-job: 选择刚才创建的集群

yarn-application

异常解决

java 复制代码
Caused by: java.lang.IncompatibleClassChangeError: org/apache/flink/sql/parser/validate/FlinkSqlConformance

原因为在升级 Hudi 0.13.0时添加了 calcite-core-1.10.0.jar, 导致冲突,删掉即可。

java 复制代码
Caused by: org.dinky.data.exception.BusException: The JobID or JobManagerAddress is null. 

1.1.0 yarn-application 模式报该异常,未解决,升级到 1.2.3 即可。

相关推荐
计蒙不吃鱼3 小时前
一篇文章实现Android图片拼接并保存至相册
android·java·前端
LucianaiB4 小时前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
水银嘻嘻4 小时前
adb 连不上真机设备问题汇总
adb
duwei_wang9 小时前
[Android]-Admob配置过多导致的慢消息
android
雨白10 小时前
发送自定义广播
android
雨白10 小时前
深入理解广播机制 (BroadcastReceiver)
android
Doker 多克12 小时前
Flink CDC —部署模式
大数据·flink
酷爱码13 小时前
Spring Boot 整合 Apache Flink 的详细过程
spring boot·flink·apache
问道飞鱼13 小时前
Flink 高可用集群部署指南
flink·部署·批处理·流式批处理
秃头摸鱼侠14 小时前
MySQL安装与配置
数据库·mysql·adb