1.Dinky是什么?
Dinky 是一个开箱即用的一站式实时计算平台,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架,致力于流批一体和湖仓一体的建设与实践。Dinky 让Flink作业纵享丝滑,为 Apache Flink 深度定制的新一代实时计算平台,提供敏捷的 Flink SQL, Flink Jar 作业开发、部署及监控能力,助力实时计算高效应用。
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 的能力
- 支持实时作业报警及报警组:钉钉、微信企业号、飞书、邮箱等
- 支持多种资源管理:集群实例、集群配置、数据源、报警组、报警实例、文档、系统配置等
- 支持企业级管理功能:多租户、用户、角色、命名空间等
- 更多隐藏功能等待小伙伴们探索
3.官方文档及项目地址
https://dinky.org.cn/docs/next/get_started/overview
https://github.com/DataLinkDC/dinky
4.安装部署
4.1安装mysql数据库
首先需要安装一个mysql数据,可以参考如下文章:
https://blog.csdn.net/qq_34905631/article/details/134951201?spm=1001.2014.3001.5501
https://mp.weixin.qq.com/s/5PC_VXtNc8689ag8b8cYLA
4.2 数据库初始化
本文安装的数据库是mysql8.0.28,所以这里执行如下mysql的脚本:
#登录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;
mysql5.x需要执行如下脚本:
#登录mysql
mysql -uroot -p
#创建数据库
mysql>
create database dinky;
#授权
mysql>
grant all privileges on dinky.* to 'dinky'@'%' identified by 'dinky' with grant option;
mysql>
flush privileges;
本文使用Docker-Desktop桌面版安装的docker,有兴趣的可以参看我写的相关文章,在windows上安装docker就省略了,需要进入容器里面执行上面的脚本,相关脚本官方文档上都有详细的说明。
接下来就需要执行sql脚本,本文安装的dink的版本是1.0.3单机版,使用docker方式部署
https://github.com/DataLinkDC/dinky/blob/1.0.3/script/sql/dinky-mysql.sql
4.3挂载及启动命令
挂载路径如下:
Windows10启动脚本:
docker run --restart=always -d -p 8888:8888 --name dinky -e DB_ACTIVE=mysql -e MYSQL_ADDR=192.168.40.49:3306 -e MYSQL_DATABASE=dinky -e MYSQL_USERNAME=dinky -e MYSQL_PASSWORD=dinky -v "D:\dinky\lib":/opt/dinky/customJar/ dinkydocker/dinky-standalone-server:1.0.3-flink1.17
Linux启动脚本:
docker run --restart=always -d -p 8888:8888 --name dinky -e DB_ACTIVE=mysql -e MYSQL_ADDR=192.168.40.49:3306 -e MYSQL_DATABASE=dinky -e MYSQL_USERNAME=dinky -e MYSQL_PASSWORD=dinky -v /opt/lib:/opt/dinky/customJar/ dinkydocker/dinky-standalone-server:1.0.3-flink1.17
需要注意的是MYSQL_ADDR需要填写docker部署mysql的wifi网络的ip,不要填写本机127.0.0.1,填写本机127.0.0.1启动回报数据库连接被拒绝的异常,需要数据库网络通畅且前一步的脚步执行正确(创建数据库,用户、执行建表sql脚本及授权都整对),还有要注意一点就是,相关flink版本的镜像需要去国外的docker仓库上搜索dinkydocker,下载指定的tag的镜像即可,还有需要注意一点需要科学上网才可以将镜像下载下来。
https://hub.docker.com/
5.登录体验
初始账户名密码如下:
初始账户
用户名: admin
密码 :dinky123!@#
6.总结
Dinky的部署方式还有很多:二进制可执行包部署,源码编译部署,docker-compose部署,k8s部署等,支持多种flink模式提交任务,使用flink支持整库同步、增量和实时CDC数据同步,还集成DolphinScheduler(小海豚调度平台),支持主流的关系型数据库、OLAP数据库和数据湖产品,还有运维监控功能,可视化管理flink任务,Dink 让Flink作业纵享丝滑,由于我本机没有flink的环境(flink的环境搭建起来比较麻烦,后续有实践在搞 一个完整的作业环境分享),单纯的部署了一个单机版的体验了下,然后看了下官方的文档也比较详细,各种环境搞起来还是有点难搞的,之前也分享了StreamPark、SeaTunnel,新的开源的东西,让我们有更多的选择,根据自己的需求来选择适合的开源平台解决业务的痛点问题是比较耐思的,希望我的分享对你有所启发和帮助,请一键三连,么么么哒!