引言
哈喽各位看官老爷,又见面了~
先说个好消息:Apache Doris 补习班公众号粉丝突破 2k!
这是一个新的里程碑,感谢大家的支持~
昨晚在直播的结束时刻,我说尽快会给大家一份通过 Docker 快速搭建部署一套演示环境的 Demo 文章示例,那么本篇就应昨天的承诺,给大家来一篇简单、高效、可复刻的快速搭建演示环境的教程。
文章不长,所以大家有兴趣的话完全可以上手来测测,一共就八步,天龙八部(步)。
话不多说,开干!
环境准备
1. 本次用的镜像是基于x86做的,故此需要一台 x86 机器
2. 部署好 docker 服务和 docker-compose
3. 硬件规格最小 4C8G
操作流程
1.上传或创建 Docker-Compose 的 doris-demo.yaml
脚本到服务器
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 脚本中一共有五个进程:
• MySQL:TP库,模拟业务库,初始化密码为
123456
,初始化的数据库为doris-test
• JobManager:Flink-Job-Manager,负责 Flink 任务管理等
• TaskManager:Flink-Task-Manager,负责 Flink 任务执行等
• Doris:All-In-One 的镜像,内置 1FE 1BE,且会自动注册
• SuperSet:All-In-One 的镜像,里面内置了 Apache Doris 数据源,用户名为
admin
,密码为doris
2.将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
3.启动 Docker-Compose 脚本
docker-compose -f doris-demo.yaml up -d
4.连接 MySQL 创建库表并初始化数据,这里有两种方式,一种可以通过 MySQL-Client、Navicat 或者 DBeaver 去连接,使用 MySQL-JDBC 连接方式,账号为root
,密码为123456
,端口为 3306
,连接成功后执行创建库表语句和初始化插入语句,另一种可通过 docker-compose exec
命令完成库表创建,命令如下:
docker-compose 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);"
这里我们创建了一张名为 orders
的表,并初始化了三条数据。
5.根据源表创建 FlinkJob 任务,自动同步表结构并创建 CDC 任务持续导入数据,可使用如下命令提交 Job 任务:
docker-compose 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 ;
把IP地址改为你的内网IP地址即可,其他不用改变,具体若希望知道每个参数都是代表什么意思,可在 Doris 官网的 Flink-Doris-Connector 章节找到所有参数。
6.查询 Doris 是否成功创建表和同步数据,同样可通过 DBeaver、MySQL-Client、Navicat 等工具连接到 Doris 查看,数据源选择 MySQL,账号为root
,密码为空,端口为9030
,连接成功后执行查询即可。或通过 docker-compose exec
命令进行查询,命令如下:
docker-compose exec doris mysql -uroot -P9030 -h127.0.0.1 -e "select * from mysql_demo.orders"
7.登录 SuperSet 界面,配置数据源、数据集、图表、看板,并设置自动刷新
• 登录
• 配置数据源
• 创建数据集
• 配置图表
• 创建看板
• 设置自动刷新
8.MySQL端实时插入数据,SuperSet 看板实时更新
docker-compose 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);"
视频教程
今晚发布于 B站 Apache Doris 补习班。
小结
后续我会制作更多诸如此类的简单易用快速上手的 Demo 演示环境教程供大家去体验,甚至后续的 3.0 存算分离,也会有类似这样的形态去尝试和玩耍。
但这里一定注意一点:不可上生产!不可上生产!不可上生产!!!
这是为了轻松入门和快速学习调试使用的,不要在生产上使用!
制作不易,来个点赞和在看鼓励鼓励吧!
如果你们还想拥有怎样的 Demo 环境,也可以留言,后续有精力会一一去做的~
感谢支持!