更高效的数据处理解决方案:基于 MinIO 部署 Apache Doris 存算分离版本实践

Doris快速备份与恢复 如果该表是动态分区表,备份之后会自动禁用动态分区属性,在做恢复的时候需要手动将该表的动态分区属性启用,命令如下/bin/bash"`doif [[ $db!then$db; 阅读详情

引言

现代数据处理在多维度面临严峻挑战,一方面,数据量的持续增长致使传统存储成本居高不下,非结构化数据所占比例日益攀升,进一步加重了存储负担,且数据质量问题推高了存储和清洗成本;另一方面,企业内部往往存在多套系统,数据难以集成,这对数据分析的成本和时效性也提出了更高的要求。

Apache Doris 作为一款具备高性能的实时分析数据库,拥有湖仓一体的能力。当它与 MinIO 这样高性能且 S3 兼容的对象存储系统相结合时,能够构建出一个高效且具备低成本特性的数据分析系统。本文将介绍基于 Apache Doris 和 MinIO 的存算分离部署教程与使用实践。

为什么选择 Apache Doris 和 MinIO

Apache Doris 是一款基于 MPP 架构的高性能、实时分析型数据库。它以高效、简单和统一的特性著称,能够在亚秒级的时间内返回海量数据的查询结果。Doris 具备以下优势:

  • 高性能:在海量数据下实现亚秒级查询响应,支持高并发点查询和复杂分析。
  • 实时分析:支持实时数据导入和查询,适合需要即时洞察的业务场景。
  • 易用性:设计简单,操作和维护成本低。
  • 可扩展性:通过 MPP 架构实现水平扩展,处理大规模数据和高并发请求。
  • 多场景支持:适用于报表分析、即席查询、用户画像、日志检索等多种场景。
  • 强大集成性:可与 MySQL、PostgreSQL、Hive、Flink 等数据源和工具无缝集成。
  • 活跃社区:拥有超过 600 名贡献者和全球 5000 多家企业的生产环境应用,得到 TikTok、Baidu 等巨头的验证。

与此同时,Doris 还支持存算一体和存算分离两种部署模式,在存算一体模型下,Doris 会在内部存储数据,而在存算分离模式下,Doris 可以选择第三方存储系统,如 MinIO。

为什么选择 Apache Doris 和 MinIO.png

MinIO 是一个开源、分布式对象存储系统,专为高性能和云原生工作负载设计。其主要优势包括:

  • 高性能:Minio 提供快速的数据访问,满足实时分析需求。
  • 可扩展性:支持水平扩展,能够轻松应对数据量增长。
  • 成本效益:作为开源软件,Minio 可在本地部署,避免云存储的高昂费用。
  • S3 兼容性:与 Amazon S3 API 完全兼容,易于与现有工具和应用集成。
  • 分布式架构:通过擦除码(Erasure Coding)技术,提供高可用性和数据冗余。
  • 灵活部署:支持裸金属、容器(如 Kubernetes)或云平台部署,适应多种环境。

这些特性使 Minio 成为 Apache Doris 存算分离架构的理想存储后端。

部署指南

01 规划

在我们进行部署之前,需要进行容量规划,如果你部署的是在生产环节,那么你应该考虑使用更高规格配置的机器,并且将各个组件独立部署。

软件版本准备:

规划-1.png

服务器规划:

规划-2.png

02 准备工作

  1. 操作系统参数修改

    swapoff -a
    
    cat >> /etc/sysctl.conf << EOF
    vm.max_map_count = 2000000
    EOF
    
    # Take effect immediately
    sysctl -p
    
    vi /etc/security/limits.conf 
    * soft nofile 1000000
    * hard nofile 1000000
    
  2. 安装必要的命令

    apt update
    apt install -y net-tools
    apt install -y cron
    apt install -y iputils-ping
    

03 部署 MinIO

  1. 下载 MinIO:访问 MinIO 下载页面,选择适合的版本和操作系统。

    wget https://dl.min.io/server/minio/release/linux-amd64/minio
    chmod +x minio
    
  2. 在每个节点上启动 MinIO 服务器:

      export MINIO_REGION_NAME=us-east-1
      export MINIO_ROOT_USER=minio
      export MINIO_ROOT_PASSWORD=minioadmin
      mkdir -p /mnt/disk{1..4}/minio
      nohup minio server --address :9000 --console-address :9001 http://172.20.1.{2...5}:9000/mnt/disk{1...4}/minio 2>&1 &
    
  3. 配置 MinIO 客户端:

      wget https://dl.min.io/client/mc/release/linux-amd64/mc
      chmod +x mc
      ./mc alias set myminio http://127.0.0.1:9000 minio minioadmin
      ./mc mb myminio/doris
    

注意:如果 MinIO 部署在本地网络且未启用 TLS,需在 endpoint 中显式添加“http://”。

04 部署 Doris Manager

  1. 下载 Doris Manager

      wget https://enterprise-doris-releases.oss-accelerate.aliyuncs.com/doris-manager/velodb-manager-25.0.0-x64-bin.tar.gz
    
  2. 解压并启动服务

    tar -zxf velodb-manager-25.0.0-x64-bin.tar.gz
    cd velodb-manager-25.0.0-x64-bin/webserver/bin
    bash start.sh
    
  3. 服务启动后,通过浏览器访问 http://:8004 即可进入管理界面并根据指引创建账号

    部署 Doris Manager.png

05 部署 Doris

  1. 下载 Doris

    wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-3.0.6.2-bin-x64.tar.gz
       mv apache-doris-3.0.6.2-bin-x64.tar.gz /opt/downloads/doris
    
  2. 进入主界面,根据指引创建集群

    部署 Doris-1.png

  3. 选择指定版本并设置 root 密码

    部署 Doris-2.png

  4. 填写 MinIO 信息

    部署 Doris-3.png

  5. 填写节点信息

    1. 分别在每个节点执行以下命令
      wget http://172.20.1.2:8004/api/download/deploy.sh -O deploy_agent.sh && chmod +x deploy_agent.sh && ./deploy_agent.sh
      
    2. 在界面上填写节点 IP
      部署 Doris-4.png
  6. 配置 FE 节点

    部署 Doris-5.png

  7. 配置 BE 节点

    部署 Doris-6.png

  8. 部署你的集群

    部署 Doris-7.png

    部署 Doris-8.png

开始查询

01 准备数据

  1. 进入查询页面

    准备数据-1.png

    准备数据-2.png

  2. 创建 Doris 表:

    CREATE DATABASE IF NOT EXISTS `test`;
    USE `test`;
    CREATE TABLE `amazon_reviews` (  
      `review_date` int(11) NULL,  
      `marketplace` varchar(20) NULL,  
      `customer_id` bigint(20) NULL,  
      `review_id` varchar(40) NULL,
      `product_id` varchar(10) NULL,
      `product_parent` bigint(20) NULL,
      `product_title` varchar(500) NULL,
      `product_category` varchar(50) NULL,
      `star_rating` smallint(6) NULL,
      `helpful_votes` int(11) NULL,
      `total_votes` int(11) NULL,
      `vine` boolean NULL,
      `verified_purchase` boolean NULL,
      `review_headline` varchar(500) NULL,
      `review_body` string NULL
    ) ENGINE=OLAP
    DUPLICATE KEY(`review_date`)
    COMMENT 'OLAP'
    DISTRIBUTED BY HASH(`review_date`) BUCKETS 16
    PROPERTIES (
      "compression" = "ZSTD"
    );
    
  3. 下载亚马逊评论数据:

    wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2010.snappy.parquet
    
  4. 导入数据到 Doris:

    curl --location-trusted -u root:<your password> \
    -T amazon_reviews_2010.snappy.parquet \
    -H "format:parquet" \
    http://127.0.0.1:8030/api/test/amazon_reviews/_stream_load
    
  5. 登录 MinIO 控制台,查看数据大小
    登录 MinIO 控制台.png

02 查询

SELECT
    product_id,
    AVG(product_title),
    AVG(star_rating) AS rating,
    COUNT() AS count
FROM
    amazon_reviews
WHERE
    review_body LIKE '%is super awesome%'
GROUP BY
    product_id
ORDER BY
    count DESC,
    rating DESC,
    product_id
LIMIT 5;

总结

在导入相同数据(3 副本配置)方面,相较于存算一体模式 3.98 GB 的存储占用,采用 MinIO 的存算分离模式仅占用 1.3 GB,存储占用是存算一体模式的 1/3;与此同时,在数据导入速度方面,采用 MinIO 仅需 15 秒,而存算一体模式需要 61 秒,导入速度快 4 倍。

通过结合 MinIO 和 Apache Doris 的存算分离架构,用户可以充分利用 Minio 的高性能、低成本对象存储和 Doris 的实时分析能力。这种架构不仅提升了系统的可扩展性和灵活性,还显著降低了存储成本,同时确保了业务负载的隔离和稳定性。希望本教程能帮助您快速部署并体验这一高效的数据处理解决方案。

自建minio实现doris的快速备份与恢复 doris支持通过腾讯云bos、阿里云oss、hdfs实现备份与恢复,但是我们公司doris部署在线下机房,如采用oss/bos, 大数据备份与恢复比较慢,会占用一定的带宽,如采用hdfs,担心小文件太多影响现有的hadoop集群。为了保险起见,而且能够达到快速的备份恢复,我们实现自主搭建一套minio对象存储。 阅读详情

相关推荐

Doris-Manager 25.2.0部署Doris 4.X

Doris Manager部署Doris

docsz的博客 287

备份doris数据到minio

创建服务账户,记住ACCESS_KEY和SECRET_KEY创建Buckets doris设置region在首页查看服务ip和端口号。

陕西小伙伴网络科技有限公司-技术博客 1408

【信息科学与工程学】【数据科学】数据科学领域-第十一篇 数据集成算法01

​​降低维护成本​​:通过抽象通用流程(如),当需要修改故障注入逻辑(如更换混沌工具)时,只需修改一处代码,无需修改所有测试用例;​​提升扩展性​​:通过参数化故障场景(如),可快速生成新的故障用例(如针对新服务的延迟故障),适应系统迭代需求;​​增强场景真实性​​:通过组合混沌操作(如),模拟真实生产环境中的复杂故障链(如“网络延迟+服务宕机”),更准确地验证系统韧性;​​提高分析效率​​:通过自动化结果分析(如),快速获取MTTR、错误率等关键指标,减少人工分析时间。

weixin_49199313的博客 953

doris manager 安装部署 、管理已有doris集群、使用studio进行SQL查询

doris manager 安装部署 、管理已有doris集群、使用studio进行SQL查询

寂夜了无痕的博客 5407

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 399

【信息科学与工程学】【数据中心】第二十四篇 数据中心DaaS场景及算法

Flink, Kafka Streams, 时序数据库。Flink, Kafka Streams, 流处理引擎。Presto, ClickHouse, 查询加速引擎。Presto, ClickHouse, 查询加速引擎。延迟<50ms,可用性>99.99%,QPS>10K。REST API, GraphQL, API网关。Tableau, Power BI, 自助BI。Tableau, Power BI, 可视化库。Spark, Hadoop, 分布式计算框架。Spark, Hadoop, 分布式计算。

weixin_49199313的博客 1057

Apache Iceberg 生态厂商全景指南:谁在支持 Iceberg 表(附仓库源码佐证)

Apache Iceberg 之所以成为开放数据湖仓事实标准,除了格式规范本身([spec.md](https://link.gitcode.com/i/a0e961e98486332543d016a8f194751a))与核心 Java 实现([core](https://link.gitcode.com/i/70e916f3bafe3df5494e264959005425))之外,还仰赖一个庞

gitblog_00221的博客 1116

C#实战:5分钟搞定Modbus RTU通讯(基于NModbus4库)

本文详细介绍了如何使用C#和NModbus4库快速实现Modbus RTU通讯,包括环境配置、核心功能实现、性能优化及常见问题排查。通过代码示例和实用技巧,帮助开发者高效完成工业自动化设备的数据采集与控制任务。

weixin_30689307的博客 467

企业级LLM知识平台部署实战:WeKnora容器化架构与生产环境优化指南

WeKnora作为开源LLM知识平台,通过RAG检索增强生成、自主推理代理和自维护Wiki三大核心能力,将原始文档转化为可查询的知识资产。本文为技术决策者和运维团队提供从架构设计到生产部署的完整解决方案,涵盖环境评估、容器化部署、性能优化和安全加固等关键环节。 ## 环境评估与容量规划 在部署WeKnora之前,必须进行全面的环境评估和容量规划。系统资源需求因使用场景而异,以下是不同规模部署的

gitblog_00746的博客 1021

DAGGER vs 传统模仿学习:为什么数据聚合能提升模型性能?

本文深入对比了DAGGER与传统模仿学习,揭示了传统方法因“分布不匹配”导致性能下降的根源。DAGGER通过动态的**数据聚合**机制,在智能体自身策略产生的状态分布上收集专家数据,从根本上解决了误差累积问题,从而显著提升了模型在实际部署中的鲁棒性和性能。

weixin_29170327的博客 234

离线安装vue脚手架,内网安装@vue/cli

公司开发环境使用内网,无法用外网,搭建环境的时候,发现内网系统没有安装vue脚手架,我搜了很多文章,发现他们的方法对我都不适用,然后就自己摸索,最终皇天不负有心人,终于被我安装上了,一下是我内网离线安装vue/cli的方法,希望能帮助到有需要的小伙伴! 因为npm被集成在nodejs中,而安装nodejs只需要把nodejs安装包copy到内网电脑安装就行,比较简单,这里就不多做演示。 在外网电脑上,使用npm install -g xxxx命令下载好我们所需要的各个安装包,比如: npm insta

Liberty_yes的博客 1万+

WeKnora企业级AI知识平台:构建智能文档问答系统的架构创新与实践

在数字化转型的浪潮中,企业面临海量非结构化文档知识的有效管理与智能应用挑战。传统文档管理系统依赖人工分类和关键词检索,难以应对复杂的语义查询和上下文理解需求。WeKnora作为开源LLM知识平台,通过模块化架构设计和先进RAG技术,实现了从原始文档到可查询知识库、自主推理代理和自维护维基的完整解决方案,为企业知识管理提供了技术架构层面的创新突破。 ## 架构设计理念:解耦与可扩展性平衡 WeK

gitblog_00711的博客 392

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

Flink 读取 Minio 写入 Doris 踩坑记录

Flink 读取 Minio 写入 Doris 踩坑记录

qq_43554613的博客 1238

如何做好软件需求分析?

软件需求分析也称为系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。软件开发一般包括:可行性分析、需求分析、软件设计、软件开发、软件测试、软件实施、软件服务等步骤,需求分时软件开发的第一步骤。用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。

qq_41854911的博客 1415

【24届数字IC秋招总结】正式批面试经验汇总6——禾赛

15、ahb写或者读的数据存储起来了嘛,ahb读的话,apb这边是怎样的。19、覆盖率收集的时候有没有哪些是很难收集到的,然后写了定向测试。2、C++有学过嘛 还记得C++的什么内容 C++成绩多少。12、config_db机制用过嘛 四个参数的含义。8、脚本语言有学过嘛 简单学过 简单是指代码数少嘛。13、run_phase和mian_phase的区别。10、覆盖机制的创建方法 ,是不是覆盖用的很少。6、call_back机制记得哪些细节的东西。9、uvm实战学了哪些章节 印象深刻的章节。

qq_42135020的博客 1082

Doris 备份与恢复:经验证过的完整操作案例(基于minio存储备份集)

这个完整的操作案例涵盖了 Doris 备份恢复的主要场景,包括单集群备份恢复和跨集群数据迁移。根据实际需求调整数据库名、快照名和时间戳参数。

学亮编程手记 964

【阿里AgentScope框架】多框架组合:AgentScope加LangChain,让你的开发效率直线上升

本文以一个例子来看下AgentScope框架和LangChain如何实现融合使用,真的超级简单,一看就懂。这是一种思路,为多种框架的融合使用提供借鉴。

同学小张的博客 3469

Doris Manager安装部署

摘要:本文介绍了Doris Manager 24.0.1的安装配置流程。主要内容包括下载地址获取、安装包目录结构说明(包含webserver、bin、conf等组件)、数据库创建和用户授权SQL语句、修改webserver配置文件(配置MySQL连接信息)、服务器启动命令以及Web访问地址。配置重点涉及数据库类型、主机、端口、用户名密码等参数设置,最后提供了通过浏览器访问Doris Manager Web服务的URL格式。

f4vinny的专栏 1734

NEU-DET 冷轧钢缺陷检测:基于 YOLOv8 的目标检测与可视化 UI 实现

冷轧钢的生产过程中,由于设备故障、工艺问题或者人为因素,钢板表面可能会出现多种缺陷,如划痕、裂纹、孔洞等,这些缺陷会严重影响钢材的质量。它比之前的版本(如 YOLOv5、YOLOv4)在速度和精度上都有显著提升,并且对硬件要求较低,适合进行工业界面和嵌入式系统的应用。这些版本相较于更大型的模型(如 YOLOv8x)具有更快的推理速度和较低的资源占用,适合工业生产线中的实时应用。通过将训练好的模型部署到工业生产线摄像头中,我们可以实现实时的缺陷检测,极大地提升生产效率和产品质量。

YOLO 736

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

doris升级问题总结(doris_manager自动升级、手动升级)

解决方法:通过删除DORIS_HOME下的upgrade文件(所有升级节点均要删除),目录权限是doris的,但是他的报错是没有权限将upgrade更名为upgrade+timestamp,实际权限是给了的,此处bug应该为doris自身的bug所在。通过替换新版本中be中的bin、lib目录,fe中的bin、lib、mysql_ssl_default_certificate目录完成逐一更新,最后更新fe的master。最后排除bug升级成功,ods数据采集正常,ds调度任务正常,fe、be状态正常。

X_P_LI的博客 1651

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Doris:冷热分层

冷热分层支持所有 Doris 功能,只是把部分数据放到对象存储上,以节省成本,不牺牲功能。

m0_37559973的博客 1715

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Doris 跨集群恢复核心步骤:集群间基于minio进行备份与恢复(数据异地恢复)

只要新集群能正确配置并访问原备份集所在的MinIO仓库,恢复过程就是可行的。关键在于仓库配置一致准确获取备份时间戳,并在恢复后验证数据完整性。

学亮编程手记 677

doris数据直接导出到s3(minio)

doris数据直接导出到s3(minio)

s07aser123的专栏 255

Doris集群管理工具Doris Manager安装使用

背景:Doris集群管理、监控相对复杂,就想着有没有免费的、好用的管理工具,就发现了Cluster Manager,给大家分享一下。

core815的专栏 1万+
上一篇: 压缩率提升 48%,详解 Apache Doris 存储压缩优化之道|Deep Dive
下一篇: Apache Doris 中的 Data Trait:性能提速 2 倍的秘密武器
SelectDB技术团队
博客等级 码龄4年 2119粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值