前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Doris之旅基础篇|Docker快速体验(二)

Doris之旅基础篇|Docker快速体验(二)

作者头像
一臻数据
发布2025-01-07 14:18:53
发布2025-01-07 14:18:53
14300
代码可运行
举报
文章被收录于专栏:一臻数据一臻数据
运行总次数:0
代码可运行

更多趣文请关注一臻数据

基于Docker搭建一套演示环境,分钟级快速体验Doris实时数仓的"采-存-用"链路。 引用: https://mp.weixin.qq.com/s/DVAIX0nCuappAZMhs7_EKg

一、环境信息

1.1 硬件信息

  • CU:8C16G
    • 硬件规格最小 4C8G
  • CPU架构:X86_64
    • Docker示例镜像是基于x86做的,故此需要一台 x86 机器

1.2 软件信息

  • Docker:26.1.4
  • Docker Compose:2.2.2

二、体验流程

2.1 上传yaml脚本
代码语言:javascript
代码运行次数:0
复制
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个进程:

  1. MySQL:TP库,模拟业务库,初始化密码为123456,初始化的数据库为doris-test
  2. JobManager:Flink-Job-Manager,负责 Flink 任务管理等
  3. TaskManager:Flink-Task-Manager,负责 Flink 任务执行等
  4. Doris:All-In-One 的镜像,内置 1FE 1BE,且会自动注册
  5. SuperSet:All-In-One 的镜像,里面内置了 Apache Doris 数据源,用户名为admin,密码为doris

其中,需要将Flink依赖的 Flink-MySQL-Connector 和 Flink-Doris-Connector 两个依赖jar包下载至对应宿主机目录,这里使用的是/data/flink目录,可根据自身需要调整:

代码语言:javascript
代码运行次数:0
复制
# 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
2.2 启动yaml脚本
代码语言:javascript
代码运行次数:0
复制
# 后台启动
docker-compose -f ./doris-demo.yaml up -d

# 停止 
docker-compose -f ./doris-demo.yaml stop

初次up会先pull对应的镜像image包:

代码语言:javascript
代码运行次数:0
复制
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 了。

2.3 初始化mysql数据

启动yaml脚本后,就可以开始体验了。

首先初始化一下mysql源的数据,直接基于 docker-compose exec命令 创建了一张名为 orders 的表,并初始化三条数据。

代码语言:javascript
代码运行次数:0
复制
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);"

查询验证:

代码语言:javascript
代码运行次数:0
复制
-- 进入mysql client
docker-compose -f ./doris-demo.yaml exec mysql mysql -uroot -p123456

-- 查询验证
select * from orders;
2.4 初始化Flink同步任务

基于mysql源表创建 Flink同步任务,自动同步mysql源的表结构并创建 cdc 常驻任务持续导入数据(具体脚本说明可参考Doris官网的Flink-Doris-Connector 章节):

代码语言:javascript
代码运行次数:0
复制
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 ;
2.5 Doris数据验证

当mysql源数据初始化和flink同步任务启动后,采-存的链路已经搭建完成,通过 docker-compose exec 命令快速对doris数据进行结果验证:

代码语言:javascript
代码运行次数:0
复制
docker-compose -f ./doris-demo.yaml exec doris mysql -uroot -P9030 -h127.0.0.1 -e "select * from mysql_demo.orders"
2.6 SuperSet快速体验

"采-存-用"的用,这里以SuperSet为例,进行一个常见场景的实时报表演示。

2.6.1 登录

http://${改为你的机器内网IP地址} :8088/login/

2.6.2 配置数据源

右上角点击➕的【Connect database】

可以点击一下中间的【TEST CONNECTION】进行链路通信测试,然后点击【CONNECT】完成数据源配置

2.6.3 创建数据集

完成【配置数据源】后,选择对应的DATABASE、SCHEMA和TABLE,点击右下角【CREATE DATABASE AND CREATE CHART】完成数据集创建

2.6.4 创建看板

右上角点击➕的【Databoard】进行数据看板创建

2.6.5 配置图表

创建看板后,开始配置图标,点击【CREATE A NEW CHART】

按下图指示选择对应展示图表类似,也可以DIY

配置展示的X-值,然后进行刷新预览

完成图表配置后,进行保存

完成图表创建

2.6.6 设置自动刷新

图表默认是不进行自动刷新,这边为了演示【实时】选择10秒刷新并保存配置。

2.6.7 SuperSet 看板实时更新

在mysql数据源端新增测试数据:

代码语言:javascript
代码运行次数:0
复制
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主要是为了快速入门体验,切记不可上生产!

实际生产需要按上述流程步骤进行拆解重组,基于物理机或虚拟机等其它方式部署。

下期,我们将一起探讨其它更有趣有用有价值的内容,敬请期待!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一臻数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境信息
  • 二、体验流程
    • 2.1 上传yaml脚本
    • 2.2 启动yaml脚本
    • 2.3 初始化mysql数据
    • 2.4 初始化Flink同步任务
    • 2.5 Doris数据验证
    • 2.6 SuperSet快速体验
    • 2.6.4 创建看板
  • 三、体验总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档