更多趣文请关注一臻数据
❝基于Docker搭建一套演示环境,分钟级快速体验Doris实时数仓的"采-存-用"链路。 引用: https://mp.weixin.qq.com/s/DVAIX0nCuappAZMhs7_EKg
1.1 硬件信息
1.2 软件信息
version: "3"
services:
mysql:
image: mysql:8.0.31
volumes:
- /data/mysql/script:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: doris-test
MYSQL_PASSWORD: 123456
command:
--character-set-server=utf8
hostname: mysql
ports:
- 3306:3306
jobmanager:
image: apache/flink:1.17-scala_2.12
expose:
- 6123
ports:
- 8081:8081
volumes:
- /data/flink/flink-doris-connector-1.17-1.6.2.jar:/opt/flink/lib/flink-doris-connector-1.17-1.6.2.jar
- /data/flink/flink-sql-connector-mysql-cdc-2.4.2.jar:/opt/flink/lib/flink-sql-connector-mysql-cdc-2.4.2.jar
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
taskmanager:
image: apache/flink:1.17-scala_2.12
expose:
- 6121
- 6122
depends_on:
- jobmanager
volumes:
- /data/flink/flink-doris-connector-1.17-1.6.2.jar:/opt/flink/lib/flink-doris-connector-1.17-1.6.2.jar
- /data/flink/flink-sql-connector-mysql-cdc-2.4.2.jar:/opt/flink/lib/flink-sql-connector-mysql-cdc-2.4.2.jar
command: taskmanager
links:
- "jobmanager:jobmanager"
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
doris:
image: registry.cn-hangzhou.aliyuncs.com/freeoneplus/doris:2.1.4-all
hostname: doris
ports:
- 8030:8030
- 9030:9030
- 8040:8040
network_mode: host
superset:
image: selectdb/superset_3.0.1-cloud_3.0.3:latest
user: "root"
environment:
- SUPERSET_SECRET_KEY="doris"
command:
- "sh"
- -c
- |
superset db upgrade
superset fab create-admin --username admin --password doris --firstname Superset --lastname Admin --email admin@superset.com
superset init
/bin/sh -c /usr/bin/run-server.sh
ports:
- 8088:8088
restart: on-failure
network_mode: host
yaml脚本共5个进程:
其中,需要将Flink依赖的 Flink-MySQL-Connector 和 Flink-Doris-Connector 两个依赖jar包下载至对应宿主机目录,这里使用的是/data/flink目录,可根据自身需要调整:
# flink-doris-connector-1.17-1.6.2 下载地址
https://repo1.maven.org/maven2/org/apache/doris/flink-doris-connector-1.17/1.6.2/flink-doris-connector-1.17-1.6.2.jar
# flink-sql-connector-mysql-cdc-2.4.2 下载地址
https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/2.4.2/flink-sql-connector-mysql-cdc-2.4.2.jar
# 后台启动
docker-compose -f ./doris-demo.yaml up -d
# 停止
docker-compose -f ./doris-demo.yaml stop
初次up会先pull对应的镜像image包:
mysql:8.0.31
apache/flink:1.17-scala_2.12
registry.cn-hangzhou.aliyuncs.com/freeoneplus/doris:2.1.4-all
selectdb/superset_3.0.1-cloud_3.0.3:latest
再进行构建启动,这边提前pull好了所以直接显示Running 6/6 了。
启动yaml脚本后,就可以开始体验了。
首先初始化一下mysql源的数据,直接基于 docker-compose exec命令 创建了一张名为 orders 的表,并初始化三条数据。
docker-compose -f ./doris-demo.yaml exec mysql mysql -uroot -p123456 -e "
DROP TABLE IF EXISTS \`doris-test\`.\`orders\`;
CREATE TABLE \`doris-test\`.\`orders\` (
order_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_date DATETIME NOT NULL,
customer_name VARCHAR(255) NOT NULL,
price DECIMAL(10, 5) NOT NULL,
product_id INTEGER NOT NULL,
order_status BOOLEAN NOT NULL -- Whether order has been placed
) AUTO_INCREMENT = 10001;
INSERT INTO \`doris-test\`.\`orders\`
VALUES (default, '2020-07-05 10:08:22', 'Jark', 50.50, 102, false),
(default, '2020-07-05 10:11:09', 'Sally', 15.00, 105, false),
(default, '2020-07-05 12:00:30', 'Edward', 25.25, 106, false);"
查询验证:
-- 进入mysql client
docker-compose -f ./doris-demo.yaml exec mysql mysql -uroot -p123456
-- 查询验证
select * from orders;
基于mysql源表创建 Flink同步任务,自动同步mysql源的表结构并创建 cdc 常驻任务持续导入数据(具体脚本说明可参考Doris官网的Flink-Doris-Connector 章节):
docker-compose -f ./doris-demo.yaml exec jobmanager /opt/flink/bin/flink run \
-Dexecution.checkpointing.interval=5s \
-Dparallelism.default=1 \
-c org.apache.doris.flink.tools.cdc.CdcTools \
/opt/flink/lib/flink-doris-connector-1.17-1.6.2.jar \
mysql-sync-database \
--database mysql_demo \
--mysql-conf hostname=${改为你的机器内网IP地址} \
--mysql-conf username=root \
--mysql-conf password=123456 \
--mysql-conf port=3306 \
--mysql-conf database-name=doris-test \
--sink-conf fenodes=${改为你的机器内网IP地址}:8030 \
--sink-conf benodes=${改为你的机器内网IP地址}:8040 \
--sink-conf username=root \
--sink-conf password= \
--sink-conf jdbc-url=jdbc:mysql://${改为你的机器内网IP地址}:9030 \
--sink-conf sink.label-prefix=label \
--single-sinktrue \
--table-conf replication_num=1 ;
当mysql源数据初始化和flink同步任务启动后,采-存的链路已经搭建完成,通过 docker-compose exec 命令快速对doris数据进行结果验证:
docker-compose -f ./doris-demo.yaml exec doris mysql -uroot -P9030 -h127.0.0.1 -e "select * from mysql_demo.orders"
"采-存-用"的用,这里以SuperSet为例,进行一个常见场景的实时报表演示。
http://${改为你的机器内网IP地址} :8088/login/
右上角点击➕的【Connect database】
可以点击一下中间的【TEST CONNECTION】进行链路通信测试,然后点击【CONNECT】完成数据源配置
完成【配置数据源】后,选择对应的DATABASE、SCHEMA和TABLE,点击右下角【CREATE DATABASE AND CREATE CHART】完成数据集创建
右上角点击➕的【Databoard】进行数据看板创建
创建看板后,开始配置图标,点击【CREATE A NEW CHART】
按下图指示选择对应展示图表类似,也可以DIY
配置展示的X-值,然后进行刷新预览
完成图表配置后,进行保存
完成图表创建
图表默认是不进行自动刷新,这边为了演示【实时】选择10秒刷新并保存配置。
在mysql数据源端新增测试数据:
docker-compose -f ./doris-demo.yaml exec mysql mysql -uroot -p123456 -e "
INSERT INTO \`doris-test\`.\`orders\`
VALUES (default, '2020-07-05 10:30:15', 'Tom', 12.50, 104, false),
(default, '2020-07-05 10:35:09', 'Sally', 35.00, 108, false),
(default, '2020-07-05 11:00:30', 'Jark', 66.15, 106, false);"
查看SuperSet 看板实时更新:
至此,我们从0到1快速体验了Doris实时数仓的"采-存-用"链路。
如果没有因为网络因素卡在pull image,分钟级即可完成全链路的体验。
本次demo主要是为了快速入门体验,切记不可上生产!
实际生产需要按上述流程步骤进行拆解重组,基于物理机或虚拟机等其它方式部署。
下期,我们将一起探讨其它更有趣有用有价值的内容,敬请期待!