Dinky 是一个开箱即用的一站式实时计算平台
Dinky 是一个开箱即用、易扩展的一站式实时计算平台,以 Apache Flink 为内核构建,连接 OLAP 和数据湖等众多框架,致力于流批一体和湖仓一体的建设与实践。
Dinky 项目主要使用 Java 语言开发,基于 Apache 2.0 开源协议,代码托管在 GitHub:
https://github.com/DataLinkDC/dinky
核心特性
- 沉浸式 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、SQL Server、StarRocks 等。
- 支持实时在线调试预览 Table、 ChangeLog、统计图和 UDF。
- 支持 Flink Catalog、Dinky 内置 Catalog 增强,数据源元数据在线查询及管理。
- 支持自动托管的 SavePoint/CheckPoint 恢复及触发机制:最近一次、最早一次、指定一次等。
- 支持实时任务运维:作业信息、集群信息、作业快照、异常信息、历史版本、报警记录等。
- 支持作为多版本 FlinkSQL Server 以及 OpenApi 的能力。
- 支持实时作业报警及报警组:钉钉、微信企业号、飞书、邮箱等。
- 支持多种资源管理:集群实例、集群配置、数据源、报警组、报警实例、文档、系统配置等。
- 支持企业级管理功能:多租户、用户、角色、命名空间等。
下载安装
推荐使用 Docker 快速体验 Dinky 的功能:
# 拉取镜像
docker pull dinkydocker/dinky-standalone-server:1.2.4-flink1.20
# 运行程序
docker run -p 8888:8888 \
--name dinky dinkydocker/dinky-standalone-server:1.2.4-flink1.20
启动服务后,在浏览器里输入以下地址:
http://localhost:8888
设置初始用户(admin)的密码和相关信息之后,登录系统。
接下来我们新建一个 Flink 任务,在数据开发页面左侧“项目”标签点击“+”新建根目录:
点击新建的目录,右键创建作业,选择 FlinkSQL 作业类型,填写作业名称,点击确定。
输入以下语句:
CREATE TABLE Orders (order_number BIGINT,price DECIMAL(32,2),buyer ROW<first_name STRING, last_name STRING>,order_time TIMESTAMP(3)
) WITH ('connector' = 'datagen','rows-per-second' = '1','number-of-rows' = '50'
);
select order_number,price,first_name,last_name,order_time from Orders
点击“查询”按钮进行调试,启动 local 集群并执行任务,下方控制台会实时显示运行日志,提交成功后会切换到结果选项卡,点击“获取最新数据”即可查看 Select 语句的执行结果。
停止调试,点击“运行”按钮提交任务到集群。
此时,进入运维中心页面可以看到任务列表:
点击作业详情按钮即可查看作业的运行状态、日志、监控等信息。
官方文档:
https://www.dinky.org.cn/docs/next/get_started/overview
总结
Dinky 致力于简化 Flink 任务开发,提升 Flink 任务运维能力,降低 Flink 入门成本,提供一站式的 Flink 任务开发、运维、监控、报警、调度、数据管理等功能。