暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

一臻数据 2025-01-07
163

更多趣文请关注一臻数据

基于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脚本

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目录,可根据自身需要调整:

# 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脚本

# 后台启动
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 了。

2.3 初始化mysql数据

启动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;

2.4 初始化Flink同步任务

基于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 ;

2.5 Doris数据验证

当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"

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数据源端新增测试数据:

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.50104false),
   (default'2020-07-05 10:35:09''Sally'35.00108false),
   (default'2020-07-05 11:00:30''Jark'66.15106false);"

查看SuperSet 看板实时更新:

三、体验总结

至此,我们从0到1快速体验了Doris实时数仓的"采-存-用"链路。

如果没有因为网络因素卡在pull image,分钟级即可完成全链路的体验。

本次demo主要是为了快速入门体验,切记不可上生产!

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

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



一臻数据致力于大数据AI时代的前沿内容分享,会持续分享更多有趣有用有态度的知识。同时也欢迎大家投稿,共建共进,帮助圈友们冲破认知壁垒,实现自我提升!

另外,整理了份《一臻数据知识库》,其中包含 Apache Doris  Data+AI 的学习资料、学习课程、白皮书、研究报告、行业标准  实践指南 等内容,会持续更新,欢迎关注公众号,免费领取

资料获取 🔗 欢迎扫描下方二维码图片 备注【Doris】免费领取❗️



往期推荐

走进开源,拥抱开源

大数据平台开发规范示例

大数据仓库开发规范示例

大数据质量管制规范示例

Flink CDC 1.0至3.0回忆录

【Apache Doris】Manager 极致丝滑地运维管理

【Apache Doris】如何实现高并发点查?(原理+实践全析)

为什么Apache Doris适合做大数据的复杂计算,MySQL不适合?

深夜无需加班,Apache Doris让数据自己会跑

别让你的CPU打盹儿:Apache Doris并行执行原理大揭秘!

如何正确地使用ChatGPT(角色扮演+提示工程)

超强满血不收费的AI绘图教程来了(在线Stable Diffusion一键即用)


点击下方蓝字关注一臻数据

文章转载自一臻数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论