https://hub.docker.com/r/dinkydocker/dinky-standalone-server
https://github.com/DataLinkDC/dlink/releases
http://www.dlink.top/
https://gitee.com/DataLinkDC/dlink
http://www.dlink.top/#/zh-CN/introduce
docker run -d --restart=always --name dinky -p 8888:8888 -p 8081:8081 -e MYSQL_ADDR='mariadb:3306' -e TZ='Asia/Shanghai' --ulimit nofile=262144:262144 -v /etc/localtime:/etc/localtime:ro -v /data/site/docker/env/bizdata/dlink:/opt/dinky/lib:rw --link mariadb dinkydocker/dinky-standalone-server:0.7.4-flink15
http://g.htmltoo.com:8888
默认用户名/密码: admin/admin
docker exec -it dinky /bin/bash
-dinky-mysql
source /opt/dinky/sql/dinky-mysql.sql
docker cp /data/site/docker/env/bizdata/dlink/clickhouse-jdbc-0.4.6.jar dinky:/opt/dinky/lib/clickhouse-jdbc-0.4.6.jar
docker cp /data/site/docker/env/bizdata/dlink/mysql-connector-java-8.0.30.jar dinky:/opt/dinky/lib/mysql-connector-java-8.0.30.jar
---环境准备
npm 7.19.0
node.js 14.19.0
jdk 1.8.0_201
maven 3.6.3
lombok 1.18.16 如果在idea编译,需要自行安装 插件
mysql 5.6+
---Dinky源码编译
git clone https://github.com/DataLinkDC/dlink.git
cd dlink
mvn clean install -Dmaven.test.skip=true
Copy to clipboardErrorCopied
切换到Dinky根目录下得build文件夹下,即可出现编译后的安装包。
tar -zxvf dlink-release-0.5.0-SNAPSHOT.tar.gz
mv dlink-release-0.5.0-SNAPSHOT dlink
cd dlink
---初始化数据库
grant all privileges on *.* to 'dlink'@'%' identified by 'dlink' with grant option;
grant all privileges on *.* to 'dlink'@'fdw1' identified by 'dlink' with grant option;
flush privileges;
mysql -h fdw1 -udlink -pdlink
create database dlink;
-在dlink根目录sql文件夹下有2个sql文件,分别是dlink.sql和dlink_history.sql。如果第一次部署,可以直接将dlink.sql文件在dlink数据库下执行。(如果之前已经建立了 dlink 的数据库,那 dlink_history.sql 存放了各版本的升级 sql ,根据版本号按需执行即可)
use dlink;
source /opt/dlink/sql/dlink.sql
---配置文件
cd /opt/dlink/config/
vim application.yml
---nginx中配置dlink
server {
listen 9999;
......
location / {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ^~ /api {
proxy_pass http://192.168.0.0:8888;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
---加载依赖
#创建目录
cd /opt/dlink/
mkdir plugins
-根目录下创建 plugins 文件夹并上传相关的 Flink 依赖,如 flink-dist, flink-table 等,具体请阅 Readme(后续的扩展依赖也放到该目录下)
https://mvnrepository.com/artifact/org.apache.flink
将Flink-shade-hadoop上传到到plugins文件目录下,对于使用hadoop2 或者 hadoop 3 的均可使用 flink-shade-hadoop-3 地址如下:
https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-3-uber?repo=cloudera-repos
解压后结构如上所示,修改配置文件内容。lib 文件夹下存放 dlink 自身的扩展文件,plugins 文件夹下存放 flink 及 hadoop 的官方扩展文件( 如果plugins下引入了flink-shaded-hadoop-3-uber 或者其他可能冲突的jar,请手动删除内部的 javax.servlet 等冲突内容)。其中 plugins 中的所有 jar 需要根据版本号自行下载并添加,才能体验完整功能,当然也可以放自己修改的 Flink 源码编译包。extends 文件夹只作为扩展插件的备份管理,不会被 dlink 加载。
请检查 plugins 下是否添加了 flink 对应版本的 flink-dist,flink-table,flink-shaded-hadoop-3-uber 等如上所示的依赖!!!
请检查 plugins 下是否添加了 flink 对应版本的 flink-dist,flink-table,flink-shaded-hadoop-3-uber 等如上所示的依赖!!!
请检查 plugins 下是否添加了 flink 对应版本的 flink-dist,flink-table,flink-shaded-hadoop-3-uber 等如上所示的依赖!!!
如果plugins下引入了flink-shaded-hadoop-3-uber 的jar,请手动删除内部的 javax.servlet 后既可以访问默认 8888 端口号(如127.0.0.1:8888),正常打开前端页面。
如果是CDH及HDP使用开源flink-shade对Dlink没有任何影响,其他用到的依赖取决于CDH或者HDP与开源版本的兼容性,需要自行根据兼容性添加依赖即可正常使用 Dlink 的所有功能。
---启动Dlink
#启动
$sh auto.sh start
#停止
$sh auto.sh stop
#重启
$sh auto.sh restart
#查看状态
$sh auto.sh status
访问 127.0.0.1:8000 可见登录页
默认用户名/密码:admin/admin
Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设。
Dinky 架构于 Apache Flink,增强 Flink 的应用与体验,探索流式数仓。
--基本概念
-JobManager
JobManager 作为 Dinky 的作业管理的统一入口,负责 Flink 的各种作业执行方式及其他功能的调度。
-Executor
Executor 是 Dinky 定制的 FlinkSQL 执行器,来模拟真实的 Flink 执行环境,负责 FlinkSQL 的 Catalog 管理、UDF管理、片段管理、配置管理、语句集管理、语法校验、逻辑验证、计划优化、生成 JobGraph、本地执行、远程提交、SELECT 及 SHOW 预览等核心功能。
-Interceptor
Interceptor 是 Dinky 的 Flink 执行拦截器,负责对其进行片段解析、UDF注册、SET 和 AGGTABLE 等增强语法解析。
-Gateway
Gateway 并非是开源项目 flink-sql-gateway,而是 Dinky 自己定制的 Gateway,负责进行基于 Yarn 环境的任务提交与管理,主要有Yarn-Per-Job 和 Yarn-Application 的 FlinkSQL 提交、停止、SavePoint 以及配置测试,而 User Jar 目前只开放了 Yarn-Application 的提交。
-Flink SDK
Dinky 主要通过调用 flink-client 和 flink-table 模块进行二次开发。
-Yarn SDK
Dinky 通过调用 flink-yarn 模块进行二次开发。
-Flink API
Dinky 也支持通过调用 JobManager 的 RestAPI 对任务进行管理等操作,系统配置可以控制开启和停用。
-Yarn-Session
Dinky 通过已注册的 Flink Session 集群实例可以对 Standalone 和 Yarn-Session 两种集群进行 FlinkSQL 的提交、Catalog 的交互式管理以及对 SELECT 和 SHOW 等语句的执行结果预览。
-Yarn-Per-Job
Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例,然后将本地解析生产的 JobGraph 与 Configuration 提交至 Yarn 来创建 Flink-Per-Job 应用。
-Yarn-Application
Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例。对于 User Jar,将 Jar 相关配置与 Configuration 提交至 Yarn 来创建 Flink-Application 应用;对于 Flink SQL,Dinky 则将作业 ID 及数据库连接配置作为 Main 入参和 dlink-app.jar 以及 Configuration 提交至 Yarn 来创建 Flink-Application 应用。