官方文檔
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
#登錄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
#登錄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;
初始化表
mysql> use dinky;
mysql> source /opt/dinky/sql/dinky-mysql.sql
配置
創建好數據庫后,修改 Dinky 配置文件,選擇默認數據源為 mysql。
cd /opt/dinky/config/
vi application.yml
# 修改 Dinky 所使用的數據庫類型為 mysql
spring:application:name: Dinkyprofiles:# 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 cautionactive: ${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=trueusername: ${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}
cp lib/* /opt/dinky/extends/flink1.15/dinky/
例如
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.jarflink-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
#啟動
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
打包命令
# 需要網絡能下載 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 會報:
[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 配置刪掉
提交 Flink Yarn 任務
首先需要創建集群,官方文檔: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
異常解決
Caused by: java.lang.IncompatibleClassChangeError: org/apache/flink/sql/parser/validate/FlinkSqlConformance
原因為在升級 Hudi 0.13.0時添加了 calcite-core-1.10.0.jar, 導致沖突,刪掉即可。
Caused by: org.dinky.data.exception.BusException: The JobID or JobManagerAddress is null.
1.1.0 yarn-application 模式報該異常,未解決,升級到 1.2.3 即可。