实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。
Dinky 架构于 Apache Flink,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限。
最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
Dinky(原 Dlink):
1.Dinky 英译为 “ 小巧而精致的 ” ,最直观的表明了它的特征:轻量级但又具备复杂的大数据开发能力。
2.为 “ Data Integrate No Knotty ” 的首字母组合,英译 “ 数据整合不难 ”,寓意 “ 易于建设批流一体平台及应用 ”。
3.从 Dlink 改名为 Dinky 过渡平滑,更加形象的阐明了开源项目的目标,始终指引参与者们 “不忘初心,方得始终 ”。
注意:以下功能均为对应版本已实现的功能,实测可用。
应用 | 方向 | 功能 | 进展 |
---|---|---|---|
开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 |
支持 Flink 所有 Configuration | 0.4.0 | ||
支持 Flink 所有 Connector | 0.4.0 | ||
支持 SELECT、SHOW 等查询实时预览 | 0.4.0 | ||
支持 INSERT 语句集 | 0.4.0 | ||
新增 SQL 片段语法 | 0.4.0 | ||
新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 | ||
新增 FlinkSQLEnv 执行环境复用 | 0.5.0 | ||
新增 Flink Catalog 交互查询 | 0.4.0 | ||
新增 执行环境的共享与私有会话机制 | 0.4.0 | ||
新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 | ||
新增 作业配置与执行配置管理 | 0.4.0 | ||
新增 基于 Explain 的语法校验与逻辑解析 | 0.4.0 | ||
新增 JobPlan 图预览 | 0.5.0 | ||
新增 基于 StreamGraph 的表级血缘分析 | 0.4.0 | ||
新增 基于上下文元数据自动提示与补全 | 0.4.0 | ||
新增 自定义规则的自动提示与补全 | 0.4.0 | ||
新增 关键字高亮与代码缩略图 | 0.4.0 | ||
新增 选中片段执行 | 0.4.0 | ||
新增 布局拖拽 | 0.4.0 | ||
新增 SQL导出 | 0.5.0 | ||
支持 local 模式下 FlinkSQL 提交 | 0.4.0 | ||
支持 standalone 模式下 FlinkSQL 提交 | 0.4.0 | ||
支持 yarn session 模式下 FlinkSQL 提交 | 0.4.0 | ||
支持 yarn per-job 模式下 FlinkSQL 提交 | 0.4.0 | ||
支持 yarn application 模式下 FlinkSQL 提交 | 0.4.0 | ||
支持 kubernetes session 模式下 FlinkSQL 提交 | 0.5.0 | ||
支持 kubernetes application 模式下 FlinkSQL 提交 | 0.5.0 | ||
Flink 作业 | 支持 yarn application 模式下 Jar 提交 | 0.4.0 | |
支持 k8s application 模式下 Jar 提交 | 0.5.0 | ||
支持 作业 Cancel | 0.4.0 | ||
支持 作业 SavePoint 的 Cancel、Stop、Trigger | 0.4.0 | ||
新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 | ||
新增 UDF java方言代码的开发 | 0.5.0 | ||
Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 | |
新增 自动注册 Yarn 创建的集群 | 0.4.0 | ||
SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 | |
新增 外部数据源的 SQL 执行与预览 | 0.5.0 | ||
元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 | |
归档 | 新增 执行与提交历史 | 0.4.0 | |
运维中心 | 暂无 | 暂无 | 0.4.0 |
注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
新增 外部 Flink 集群实例心态检测与版本获取 | 0.4.0 | ||
新增 外部 Flink 集群手动一键回收 | 0.4.0 | ||
Flink 集群配置 | 新增 Flink On Yarn 集群配置注册及测试 | 0.4.0 | |
User Jar | 新增 外部 User Jar 注册 | 0.4.0 | |
数据源 | 新增 Mysql 数据源注册及测试 | 0.4.0 | |
新增 Oracle 数据源注册及测试 | 0.4.0 | ||
新增 postgreSql 数据源注册及测试 | 0.4.0 | ||
新增 ClickHouse 数据源注册及测试 | 0.4.0 | ||
OpenApi | 调度 | 新增 submitTask 调度接口 | 0.5.0 |
FlinkSQL | 新增 executeSql 提交接口 | 0.5.0 | |
新增 explainSql 验证接口 | 0.5.0 | ||
新增 getJobPlan 计划接口 | 0.5.0 | ||
新增 getStreamGraph 计划接口 | 0.5.0 | ||
新增 getJobData 数据接口 | 0.5.0 | ||
Flink | 新增 executeJar 提交接口 | 0.5.0 | |
新增 cancel 停止接口 | 0.5.0 | ||
新增 savepoint 触发接口 | 0.5.0 | ||
关于 | 关于 Dlink | 版本更新记录 | 0.4.0 |
抢先体验( main 主支):dlink-0.5.0-SNAPSHOT
稳定版本( 0.4.0 分支):dlink-0.4.0
config/ -- 配置文件
|- application.yml
extends/ -- 扩展
|- dlink-client-1.11.jar
|- dlink-client-1.12.jar
|- dlink-client-1.14.jar
html/ -- 前端编译产物,用于Nginx
jar/ -- dlink application模式提交sql用到的jar
lib/ -- 内部组件
|- dlink-client-1.13.jar -- 必需
|- dlink-connector-jdbc.jar
|- dlink-function.jar
|- dlink-metadata-clickhouse.jar
|- dlink-metadata-mysql.jar
|- dlink-metadata-oracle.jar
|- dlink-metadata-postgresql.jar
plugins/
|- flink-connector-jdbc_2.11-1.13.3.jar
|- flink-csv-1.13.3.jar
|- flink-dist_2.11-1.13.3.jar
|- flink-json-1.13.3.jar
|- flink-shaded-hadoop-3-uber-3.1.1.7.2.1.0-327-9.0.jar
|- flink-shaded-zookeeper-3.4.14.jar
|- flink-table-blink_2.11-1.13.3.jar
|- flink-table_2.11-1.13.3.jar
|- mysql-connector-java-8.0.21.jar
sql/
|- dlink.sql -- Mysql初始化脚本(首次部署执行这个)
|- dlink_history.sql -- Mysql各版本及时间点升级脚本
auto.sh --启动停止脚本
dlink-admin.jar --程序包
解压后结构如上所示,修改配置文件内容。lib 文件夹下存放 dlink 自身的扩展文件,plugins 文件夹下存放 flink 及 hadoop 的官方扩展文件( 如果plugins下引入了flink-shaded-hadoop-3-uber 或者其他可能冲突的jar,请手动删除内部的 javax.servlet 等冲突内容)。其中 plugins 中的所有 jar 需要根据版本号自行下载并添加,才能体验完整功能,当然也可以放自己修改的 Flink 源码编译包。extends 文件夹只作为扩展插件的备份管理,不会被 dlink 加载。
在Mysql数据库中创建 dlink 数据库并执行初始化脚本 dlink.sql。
执行以下命令管理应用。
sh auto.sh start
sh auto.sh stop
sh auto.sh restart
sh auto.sh status
前端快捷访问: 如果plugins下引入了flink-shaded-hadoop-3-uber 的jar,请手动删除内部的 javax.servlet 后既可以访问默认 8888 端口号(如127.0.0.1:8888),正常打开前端页面。
前后端分离部署—— Nginx 部署(推荐): Nginx 如何部署请见百度或谷歌。 将 html 文件夹上传至 nginx 的 html 文件夹下或者指定 nginx 配置文件的静态资源绝对路径,修改 nginx 配置文件并重启。
server {
listen 9999;
server_name localhost;
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
location / {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ^~ /api {
proxy_pass http://127.0.0.1:8888;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
- server.listen 填写前端访问端口
- proxy_pass 填写后端地址如 http://127.0.0.1:8888
- 将 html 文件夹下打包好的前端资源上传到 nginx 的 html 文件夹中,如果 nginx 已经启动,则执行 nginx -s reload 重载配置,访问即可。
dlink -- 父项目
|-dlink-admin -- 管理中心
|-dlink-app -- Application Jar
|-dlink-assembly -- 打包配置
|-dlink-client -- Client 中心
| |-dlink-client-1.11 -- Client-1.11 实现
| |-dlink-client-1.12 -- Client-1.12 实现
| |-dlink-client-1.13 -- Client-1.13 实现
| |-dlink-client-1.14 -- Client-1.14 实现
|-dlink-common -- 通用中心
|-dlink-connectors -- Connectors 中心
| |-dlink-connector-jdbc -- Jdbc 扩展
|-dlink-core -- 执行中心
|-dlink-doc -- 文档
| |-bin -- 启动脚本
| |-config -- 配置文件
| |-doc -- 使用文档
| |-extends -- Docker K8S模板
| |-sql -- sql脚本
|-dlink-executor -- 执行中心
|-dlink-extends -- 扩展中心
|-dlink-function -- 函数中心
|-dlink-gateway -- Flink 网关中心
|-dlink-metadata -- 元数据中心
| |-dlink-metadata-base -- 元数据基础组件
| |-dlink-metadata-clickhouse -- 元数据- clickhouse 实现
| |-dlink-metadata-mysql -- 元数据- mysql 实现
| |-dlink-metadata-oracle -- 元数据- oracle 实现
| |-dlink-metadata-postgresql -- 元数据- postgresql 实现
|-dlink-web -- React 前端
以下环境版本实测编译成功:
环境 | 版本 |
---|---|
npm | 7.19.0 |
node.js | 14.17.0 |
jdk | 1.8.0_201 |
maven | 3.6.0 |
lombok | 1.18.16 |
mysql | 5.7+ |
mvn clean install -Dmaven.test.skip=true
将 Flink 集群上已扩展好的 Connector 和 UDF 直接放入 Dlink 的 plugins 下,然后重启即可。定制 Connector 过程同 Flink 官方一样。
遵循SPI。请参考 dlink-meta-mysql 的实现。
Flink 的版本取决于 lib 下的 dlink-client-1.13.jar。当前版本默认为 Flink 1.13.5 API。向其他版本的集群提交任务可能存在问题,已实现 1.11、1.12、1.13, 1.14,切换版本时只需要将对应依赖在lib下进行替换,然后重启即可。
切换版本时需要同时更新 plugins 下的 Flink 依赖。
7.Dlink On Yarn 三种 Flink 执行方式的实践
8.Dlink 在 Flink-mysql-cdc 到 Doris 的实践
感谢 JetBrains 提供的免费开源 License 赞助
1.任务生命周期管理
2.作业监控及运维
3.流作业自动恢复
4.作业日志查看
5.钉钉报警和推送
欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。
在此非常感谢大家的支持~
QQ社区群:543709668,申请备注 “ Dinky ”,不写不批
微信社区群(推荐):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dinky + 企业名 + 职位”,不写不批
公众号(最新消息获取建议关注):DataLink数据中台
登录页
首页
Studio SQL 开发提示与补全
Studio 语法和逻辑检查
Studio 批流SELECT预览
Studio 异常反馈
Studio 进程监控
Studio 执行历史
Studio 数据回放
Studio SavePoint 管理
Studio 血缘分析
Studio 函数浏览
Studio 共享会话
集群管理
集群配置管理
数据源管理