Doris 安装部署、实际应用及优化实践:对比 ClickHouse 的深度解析

在实时分析、报表系统以及高并发 OLAP 查询等场景中,列式存储数据库因其卓越的查询性能逐渐成为主流。Doris 和 ClickHouse 是近年来最受欢迎的两款开源 OLAP 引擎,本文将系统介绍 Doris 的安装部署、应用场景及优化实践,并与 ClickHouse 做一波深度比较,帮助大家更清晰地选择适合自己业务的实时分析引擎。


一、Doris 简介:极速响应的实时数仓引擎

Apache Doris(原名 StarRocks)是一个现代化 MPP 架构的实时分析数据库,具备以下特点:

  • 高吞吐、低延迟的实时分析能力

  • 支持高并发、复杂聚合的 SQL 查询

  • 支持流批一体(Flink、Kafka、Spark)

  • 向量化执行引擎 + CBO 优化器


二、Doris 安装部署指南

官方下载地址:
Doris 的所有版本均可从官方站点获取:
👉 https://doris.apache.org/

您可以在网站的 "Download" 页面中选择适配版本,也可以查看各版本 Release Note 了解功能更新。

1. 环境准备

  • 操作系统:建议使用 CentOS 7+

  • JDK:OpenJDK 1.8+

  • 服务器配置:建议 16G+ 内存,8 核 CPU

2. Doris 组件架构

组件说明
FE(Frontend)管理元数据、接收 SQL 查询、做调度
BE(Backend)存储数据、执行计算任务
Broker连接外部系统,如 HDFS、S3、Hive 等
StarRocks Connector连接 Flink、Kafka、Spark 进行实时导入

3. 单机部署(快速测试)

 

bash

复制编辑

# 解压 Doris tar -zxvf apache-doris-x.x.x-bin.tar.gz cd apache-doris # 启动 FE cd fe && sh start_fe.sh --daemon # 启动 BE cd ../be && sh start_be.sh --daemon

访问 FE Web UI:http://<host>:8030,默认账户:root

4. 集群部署(生产推荐)

  • 至少 3 个 FE(1 主 2 备) + 3 个 BE 节点

  • 使用 MySQL 高可用存储元数据(如 MGR、MHA)

  • 推荐配合 Prometheus + Grafana 进行监控


三、Doris 实际应用场景

场景类型实践描述
实时数据仓库Kafka + Flink 实时写入 Doris,支持实时 OLAP
报表系统支持千万级数据量下的毫秒级多维分析
数据集市(ADS 层)作为 ADS 层,承载最终指标汇总查询
嵌入式 BI 分析前端对接 Superset / Tableau 实时查询

案例示例(如医疗、广告、IoT):

某医疗公司通过 Kafka → Flink 实时标准化数据流入 Doris,前端实现小时级报表自动更新,全流程延迟小于 10 秒。


四、Doris 性能优化实践

1. 表设计优化

  • 聚合模型(Aggregate):适合报表类场景,自动聚合重复维度

  • 明细模型(Duplicate):保留原始明细,不做聚合,适合数据追溯

  • 主键模型(Primary Key):支持 UPSERT,适合维度更新

2. 分区 & 分桶设计

  • 分区建议使用时间字段,便于冷热数据管理

  • 分桶可以基于维度字段(如 user_id),均匀分布查询压力

 

sql

复制编辑

CREATE TABLE user_action ( event_date DATE, user_id BIGINT, action STRING ) PARTITION BY RANGE(event_date) ( PARTITION p20240101 VALUES LESS THAN ("2024-01-02") ) DISTRIBUTED BY HASH(user_id) BUCKETS 32;

3. 查询性能优化

  • 利用 materialized view 加速聚合

  • 避免跨分区查询,使用谓词下推

  • 开启向量化执行引擎(默认已启用)

4. 导入优化

  • 批量导入使用 Stream Load(文件)或 Broker Load(HDFS)

  • 实时导入使用 Kafka Connector 或 Flink-Doris Connector


五、ClickHouse 简介与对比分析

对比维度DorisClickHouse
架构MPP 架构,FE+BE 模式多副本复制 + 多分片
数据更新支持 UPSERT(主键模型)不支持原地更新,仅支持批量 INSERT
查询性能高并发 + 向量化单查询速度极快
实时能力支持 Kafka 实时导入 + 查询支持 Kafka 实时导入
SQL 支持支持 ANSI SQL + 子查询 + 视图SQL 支持略弱,不完全兼容 ANSI
生态集成Spark/Flink/Kafka 无缝连接支持 ClickHouse Sink/Source
运维复杂度安装部署简单,组件清晰多副本配置复杂,依赖 ZooKeeper

总结:

  • Doris 适合企业级实时数仓构建、复杂多维分析、报表系统

  • ClickHouse 更适合对延迟要求极高的日志查询、监控分析等场景


六、推荐使用建议

  • 构建企业实时数仓: Doris 更适合作为 ADS 层或一体化查询引擎,稳定可靠。

  • 秒级查询场景(如日志系统): ClickHouse 更胜一筹,适合单点高速查询。

  • 两者可组合使用: 实时宽表/指标入 Doris,事件日志归档入 ClickHouse。


七、总结

Doris 与 ClickHouse 都是极具竞争力的 OLAP 引擎,在大数据时代下为实时分析带来了质的飞跃。Doris 更倾向于企业级生产环境、复杂 SQL 支持和一体化数仓架构,而 ClickHouse 则在极致性能和简洁架构下取得快速发展。

如果你正处于数仓选型阶段,不妨结合本文的对比,评估系统需求、数据规模、团队技术栈,做出适配业务的最佳选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OracleLinuxR5U5系统重启后启动数据库oracle23ai

1、切换到oracle用户 [rootOracleLinux-R9-U5 ~]# su oracle2、查看oracle是否配置了ORACLE_SID [oracleOracleLinux-R9-U5 root]$ cd ~ [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile3、输出内容如下&#xff1a; [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile # .ba…

【正点原子】STM32MP257 同构多核架构下的 ADC 电压采集与处理应用开发实战

在嵌入式系统中&#xff0c;ADC模拟电压的读取是常见的需求。如何高效、并发、且可控地完成数据采集与处理&#xff1f;本篇文章通过双线程分别绑定在 Linux 系统的不同 CPU 核心上&#xff0c;采集 /sys/bus/iio 接口的 ADC 原始值与缩放系数 scale&#xff0c;并在另一个核上…

电商用户购物行为分析:基于K-Means聚类与分类验证的完整流程

随着电商行业的快速发展,用户行为分析成为企业优化营销策略、提升用户体验的重要手段。通过分析用户的购物行为数据,企业可以挖掘出用户群体的消费特征和行为模式,从而制定更加精准的营销策略。本文将详细介绍一个基于Python实现的电商用户购物行为分析系统,涵盖数据预处理…

AMGCL库的Backends及使用示例

AMGCL库的Backends及使用示例 AMGCL是一个用于解决大型稀疏线性方程组的C库&#xff0c;它提供了多种后端(backends)实现&#xff0c;允许用户根据不同的硬件和性能需求选择合适的计算后端。 AMGCL支持的主要Backends 内置Backends: builtin - 默认的纯C实现block - 支持块状…

Express中间件(Middleware)详解:从零开始掌握(3)

实用中间件模式25例 1. 基础增强模式 请求属性扩展 function extendRequest() {return (req, res, next) > {req.getClientLanguage () > {return req.headers[accept-language]?.split(,)[0] || en;};next();}; } 响应时间头 function responseTime() {return (r…

05--MQTT物联网协议

一、MQTT的概念 MQTT 协议快速入门 2025&#xff1a;基础知识和实用教程 | EMQ 1.MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它…

数据结构与算法——链表OJ题详解(2)

文章目录 一、前言二、OJ续享2.1相交链表2.2环形链表12.2环形链表2 三、总结 一、前言 哦了兄弟们&#xff0c;咱们上次在详解链表OJ题的时候&#xff0c;有一部分OJ题呢up并没有整理完&#xff0c;这一个星期呢&#xff0c;up也是在不断的学习并且沉淀着&#xff0c;也是终于…

SQL Server AlwaysOn (SQL 查询数据详解及监控用途)

修正后的完整查询 SELECT ar.replica_server_name AS [副本名称],ar.availability_mode_desc AS [同步模式],DB_NAME(dbr.database_id) AS [数据库名称],dbr.database_state_desc AS [数据库状态],dbr.synchronization_state_desc AS [同步状态],dbr.synchronization_health_d…

力扣热题100刷题day63|49.字母异位词分组

目录 一、哈希表相关理论 二、思路 核心思路 三、相关题目 四、总结 一、哈希表相关理论 代码随想录刷题day15|&#xff08;哈希表篇&#xff09;242.有效的字母异位词、383.赎金信-CSDN博客 二、思路 首先&#xff0c;创建一个map集合&#xff0c;遍历字符串数组&…

爱普生可编程晶振SG8201CJ和SG8200CJ在胃镜机器人发挥重要作用

在医疗机器人技术高速发展的今天&#xff0c;胃镜机器人作为胃肠道疾病诊断与治疗的创新设备&#xff0c;正逐渐改变传统诊疗模式。其复杂精密的系统需要精准的时间同步与稳定的信号输出&#xff0c;胃镜机器人是一种先进的医疗设备&#xff0c;用于无创性地检查胃部疾病。与传…

Ubuntu22环境下,Docker部署阿里FunASR的gpu版本

番外: 随着deepseek的爆火,人工智能相关的开发变得异常火爆,相关的大模型开发很常见的agent智能体需要ASR语音识别的功能,阿里开源的FunASR几乎是把一个商业的项目放给我们使用了。那么我们项目中的生产环境怎么部署gpu版本的语音识别服务呢?经过跟deepseek的一上午的极限…

图解Java设计模式

1、设计模式面试题 2、设计模式的重要性 3、7大设计原则介绍 3.1、单一职责原则

transformers的 pipeline是什么:将模型加载、数据预处理、推理等步骤进行了封装

transformers的 pipeline是什么:将模型加载、数据预处理、推理等步骤进行了封装 pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=50 )pipeline :这是 transformers 库中一个非常实用的工具函数。它可以基于预训练模型快速构…

jmeter插件安装

1、下载 下载地址&#xff1a; Documentation :: JMeter-Plugins.org 然后复制到D:\apache-jmeter-5.6.3\lib\ext 复制后 2、重启jmeter 在菜单【选项】找到“Plugins Manager” 在 Plugins Manager 界面上&#xff0c;点击“Available Plugins”标签页&#xff0c;可以浏览所…

VSCode CMake调试CPP程序

文章目录 1 安装C与CMake插件2 配置CMakeLists.txt3 使用CMake编译调试3.1 编译3.2 调试 4 自定义构建调试参考 1 安装C与CMake插件 C插件 CMake插件 2 配置CMakeLists.txt 编写测试程序 #include<iostream>int main(int argc, char const *argv[]) {int a 1, b 2;i…

【前端】【css】flex布局详解

Flex 布局&#xff08;Flexible Box Layout&#xff0c;弹性盒子布局&#xff09;是 CSS3 中的一种布局模式&#xff0c;用于在容器中更高效地分配空间并对齐内容&#xff0c;即使它们的大小是动态未知的。它非常适用于响应式设计。 一、Flex 布局的基本概念 1. 启用 Flex 布局…

LEARNING DYNAMICS OF LLM FINETUNING【论文阅读笔记】

LEARNING DYNAMICS OF LLM FINETUNING 一句话总结 作者将LLM的学习动力机制拆解成AKG三项&#xff0c;并分别观察了SFT和DPO训练过程中​​正梯度信号​​和​​负梯度信号​​的变化及其带来的影响&#xff0c;并得到以下结论&#xff1a; ​​SFT通过梯度相似性间接提升无关…

Mac 下载 PicGo 的踩坑指南

Mac 下载 PicGo 的踩坑指南 一、安装问题 下载地址&#xff1a;https://github.com/Molunerfinn/PicGo/releases 下载之后直接安装即可&#xff0c;此时打开会报错&#xff1a;Picgo.app 文件已损坏&#xff0c;您应该将它移到废纸篓。 这是因为 macOS 为了保护用户不受恶意…

Element UI 设置 el-table-column 宽度 width 为百分比无效

问题描述&#xff1a; 想要每列宽度不同&#xff0c;不想使用 px 固定值&#xff0c;将 width 设置成百分比&#xff0c;但是每一列还是很窄 原因&#xff1a; el-table 组件会被 vue 解析成 html&#xff0c;vue 直接把百分号去掉把数值当做列宽来呈现&#xff0c;所以&#x…

第五篇:Python面向对象编程(OOP)深度教程

1. 类与对象 1.1 基本概念 ​​类​​是创建对象的蓝图,定义了对象的​​属性​​(数据)和​​方法​​(行为)。​​对象​​是类的实例化实体,每个对象拥有独立的属性值和共享的类方法 ​​示例​​:定义Dog类 class Dog:species = "Canis familiaris" …