Apache Doris 数据导入原理与性能优化 | Deep Dive

宝塔 Apache 部署 Node.js 项目:挂到子路径,不影响同机其他站点 阅读详情

概述

对于 Apache Doris 这样的高性能分析型数据库而言,高效、稳定的数据导入是保障实时分析能力的生命线。然而,在海量数据持续写入的场景下,如何平衡导入延迟与吞吐、如何避免性能瓶颈,是开发者面临的核心挑战。Apache Doris 本文将深入剖析 Doris 数据导入的核心原理,涵盖关键流程、组件、事务管理等,探讨影响导入性能的因素,并提供实用的优化方法和最佳实践,有助于用户选择合适的导入策略,优化导入性能。

数据导入原理

导入原理概述

Doris 的数据导入原理建立在其分布式架构之上,主要涉及前端节点(Frontend, FE)和后端节点(Backend, BE)。FE 负责元数据管理、查询解析、任务调度和事务协调,而 BE 则处理实际的数据存储、计算和写入操作。Doris 的数据导入设计旨在满足多样化的业务需求,包括实时写入、流式同步、批量加载和外部数据源集成。其核心理念包括:

  • 一致性与原子性:每个导入任务作为一个事务,确保数据原子写入,避免部分写入。通过 Label 机制保证导入数据的不丢不重。
  • 灵活性:支持多种数据源(如本地文件、HDFS、S3、Kafka 等)和格式(如 CSV、JSON、Parquet、ORC 等),能满足不同场景。
  • 高效性:利用分布式架构并行处理数据,多 BE 节点并行处理数据,提高吞吐量。
  • 简易性:提供轻量级 ETL 功能,用户可在导入时直接进行数据清洗和转换,减少外部工具依赖。
  • 灵活建模:支持明细模型(Duplicate Key)、主键模型(Unique Key)和聚合模型(Aggregate Key),允许在导入时进行数据聚合或去重。

导入通用流程

Doris 的数据导入遵循一个标准化的核心流程,主要包括以下几个阶段:

1、提交导入任务

  • 用户通过客户端(如 HTTP、JDBC、MySQL 客户端)提交导入请求,指定数据源(如本地文件、Kafka Topic、HDFS 文件路径)、目标表、文件格式和导入参数(如分隔符、错误容忍度)。
  • 每个任务可以指定一个唯一的 Label,用于标识任务并支持幂等性(防止重复导入)。例如,用户在 Stream Load 中通过 HTTP header 指定 Label。
  • Doris 的前端节点(FE)接收请求,验证权限、检查目标表是否存在,并解析导入参数。

2、任务分配与协调

  • FE 分析数据分布(基于表的分区和桶分规则),生成导入计划,并选择一个后端节点(BE)作为 Coordinator,负责协调整个任务。
  • 如果用户直接向 BE 提交(如 Stream Load),BE 可直接担任 Coordinator,但仍需从 FE 获取元数据(如表 Schema)。
  • 导入计划会将数据分配到多个 BE 节点,确保并行处理以提高效率。

3、数据读取与分发

  • Coordinator BE 从数据源读取数据(例如,从 Kafka 拉取消息、从 S3 读取文件,或直接接收 HTTP 数据流)。
  • Doris 解析数据格式(如对 CSV 分割、JSON 解析),并支持用户定义的 轻量 ETL 操作,包括: 
    • 前置过滤:对原始数据进行过滤,减少处理开销。
    • 列映射:调整数据列与目标表列的对应关系。
    • 数据转换:通过表达式处理数据。
    • 后置过滤:对转换后的数据进行过滤。
  • Coordinator BE 解析完数据后按分区和桶分规则分发到多个下游的 Executor BE。

4、数据写入

  • Doris 的高吞吐写入得益于其独特的数据模型与 LSM Tree(Log-Structured Merge-Tree)存储结构的结合。LSM Tree 是一种高效的磁盘写入优化结构,通过将写操作分为内存和磁盘两个阶段,显著提升了写入性能。其核心思想是将随机写转换为顺序写,减少磁盘 I/O 开销,同时通过多级合并(Compaction)维护数据的有序性和查询效率。

  • 数据首先分发到多个 BE(Backend)节点,写入内存表(MemTable),并按 Key 列进行排序。对于 Aggregate 或 Unique Key 数据模型,Doris 会根据 Key 执行聚合或去重操作(如 SUM、REPLACE),减少数据冗余,提升查询性能。

  • 当 MemTable 写满(默认 200MB)或任务结束时,数据会异步写入磁盘,形成列式存储的 Segment 文件 ,并组成 Rowset。LSM Tree 的内存写入和异步刷盘机制确保了高吞吐量,同时通过后台的 Compaction 过程定期合并 Segment 文件,优化存储结构和查询效率。

  • 每个 BE 节点独立处理分配的数据,写入完成后向 Coordinator 报告状态,确保分布式环境下写入操作的可靠性和一致性。

5、事务提交与发布

  • Coordinator 向 FE 发起事务提交(Commit)。FE 确保多数副本成功写入后,并通知 BE 发布数据版本(Publish Version),待 BE Publish 成功后,FE 标记事务为 VISIBLE,此时数据可以查询。
  • 如果失败,FE 触发回滚(Rollback),则删除临时数据,以确保数据一致性。

6、结果返回

  • 同步方式(如 Stream Load、Insert Into)直接返回导入结果,包含成功 / 失败状态和错误详情(如 ErrorURL)。
  • 异步方式(如 Broker Load)提供任务 ID 和 Label,用户可通过 SHOW LOAD 查看进度、错误行数和详细信息。
  • 操作记录到审计日志,支持后续追溯。

导入冲突解决

在冲突解决方面, 经典的写写冲突会导致写入无法并行,从而显著降低写入吞吐量。Doris 提供了基于业务语义的冲突机制,可很好避免该问题(参考文档)。而 Redshift、Snowflake、Iceberg 和 Hudi 等则采用了文件级别的冲突处理,因而不具备实时更新的能力。

MemTable 前移

MemTable 前移是 Apache Doris 2.1.0 版本引入的优化机制,针对 INSERT INTO...SELECT 导入方式显著提升性能,官方测试显示该优化使得单副本导入耗时缩短约 64%(为原先的 36%),三副本导入耗时缩短约 46%(为原先的 54%),传统流程中,Sink 节点需将数据编码为 Block 格式,通过 Ping-pong RPC 传输到下游节点,涉及多次编码和解码,增加开销。Memtable 前移优化了这一过程:Sink 节点直接处理 MemTable,生成 Segment 数据后通过 Streaming RPC 传输,减少编码解码和传输等待,同时提供更准确的内存反压。目前该功能只支持存算一体部署模式。

存算分离导入

在存算分离架构下,导入优化聚焦数据存储和事务管理解耦:

  • 数据存储:BE 不持久化数据,MemTable flush 后生成 Segment 文件直接上传至共享存储(如 S3、HDFS),利用对象存储的高可用性和低成本支持弹性扩展。BE 本地 File Cache 异步缓存热点数据,通过 TTL 和 Warmup 策略提升查询命中率。元数据(如 Tablet、Rowset 元数据)由 Meta Service 存储于 FoundationDB,而非 BE 本地 RocksDB。
  • 事务处理:事务管理从 FE 迁移至 Meta Service,消除了 FE Edit Log 写入瓶颈。Meta Service 通过标准接口(beginTransaction、commitTransaction)管理事务,依赖 FoundationDB 的全局事务能力确保一致性。BE 协调者直接与 Meta Service 交互,记录事务状态,通过原子操作处理冲突和超时回收,简化同步逻辑,提升高并发小批量导入吞吐量。

导入方式

Doris 提供多种导入方式,共享上述原理,但针对不同场景优化。用户可根据数据源和业务需求选择:

  • Stream Load: 通过 HTTP 导入本地文件或数据流,同步返回结果,适合实时写入(如应用程序推送数据)。
  • Broker Load: 通过 SQL 导入 HDFS、S3 等外部存储,异步执行,适合大规模批量导入。
  • Routine Load: 从 Kafka 持续消费数据,异步流式导入,支持 Exactly-Once,适合实时同步消息队列数据。
  • Insert Into/Select: 通过 SQL 从 Doris 表或外部源(如 Hive、MySQL、S3 TVF)导入,适合 ETL 作业、外部数据集成。
  • MySQL Load: 兼容 MySQL LOAD DATA 语法,导入本地 CSV 文件,数据经 FE 转发为 Stream Load,适合小规模测试或 MySQL 用户迁移。

如何提升 Doris 的导入性能

Doris 的导入性能受其分布式架构与存储机制影响,核心涉及 FE 元数据管理、BE 并行处理、MemTable 缓存刷盘及事务管理等环节。以下从表结构设计、攒批策略、分桶配置、内存管理和并发控制等维度,结合导入原理说明优化策略及其有效性。

表结构设计优化:降低分发开销与内存压力

Doris 的导入流程中,数据需经 FE 解析后,按表的分区和分桶规则分发至 BE 节点的 Tablet(数据分片),并在 BE 内存中通过 MemTable 缓存、排序后刷盘生成 Segment 文件。表结构(分区、模型、索引)直接影响数据分发效率、计算负载和存储碎片。

  • 分区设计:隔离数据范围,减少分发与内存压力

通过按业务查询模式(如时间、区域)划分分区,导入时数据仅分发至目标分区,避免处理无关分区的元数据和文件。同时写入多个分区会导致大量 Tablet 活跃,每个 Tablet 占用独立的 MemTable,显著增加 BE 内存压力,可能触发提前 Flush,生成大量小 Segment 文件。这不仅增加磁盘或对象存储的 I/O 开销,还因小文件引发频繁 Compaction 和写放大,降低性能。通过限制活跃分区数量(如逐天导入),可减少同时活跃的 Tablet 数,缓解内存紧张,生成更大的 Segment 文件,降低 Compaction 负担,从而提升并行写入效率和后续查询性能。

  • 模型选择:减少计算负载,加速写入

明细模型(Duplicate Key)仅存储原始数据,无需聚合或去重计算;而 Aggregate 模型需按 Key 列聚合,Unique Key 模型需去重,均会增加 CPU 和内存消耗。对于无需去重或聚合的场景,优先使用明细模型,可避免 BE 节点在 MemTable 阶段的额外计算(如排序、去重),降低内存占用和 CPU 压力,进而加速数据写入流程。

  • 索引控制:平衡查询与写入开销

索引(如位图索引、倒排索引)需在导入时同步更新,否则会增加写入时的维护成本。仅为高频查询字段创建索引,避免冗余索引,可减少 BE 写入时的索引更新操作(如索引构建、校验),降低 CPU 和内存占用,来提升导入吞吐量。

攒批优化:减少事务与存储碎片

Doris 的每个导入任务为独立事务,涉及 FE 的 Edit Log 写入(记录元数据变更)和 BE 的 MemTable 刷盘(生成 Segment 文件)。高频小批量导入(如 KB 级别)会导致 Edit Log 频繁写入(增加 FE 磁盘 I/O)、MemTable 频繁刷盘(生成大量小 Segment 文件,触发 Compaction 写放大),显著降低性能。

  • 客户端攒批:减少事务次数,降低元数据开销

客户端将数据攒至数百 MB 到数 GB 后一次性导入,减少事务次数。单次大事务替代多次小事务,可降低 FE 的 Edit Log 写入频率(减少元数据操作)及 BE 的 MemTable 刷盘次数(减少小文件生成),避免存储碎片和后续 Compaction 的资源消耗。

  • 服务端攒批(Group Commit):合并小事务,优化存储效率

开启 Group Commit 后,服务端将短时间内的多个小批量导入合并为单一事务,减少 Edit Log 写入次数和 MemTable 刷盘频率。合并后的大事务生成更大的 Segment 文件(减少小文件),减轻后台 Compaction 压力,特别适用于高频小批量场景(如日志、IoT 数据写入)。

分桶数优化:平衡负载与分发效率

分桶数决定 Tablet 数量(每个桶对应一个 Tablet),直接影响数据在 BE 节点的分布。过少分桶易导致数据倾斜(单 BE 负载过高),过多分桶会增加元数据管理和分发开销(BE 需处理更多 Tablet 的 MemTable 和 Segment 文件)。

  • 合理配置分桶数:确保 Tablet 大小均衡

分桶数需根据 BE 节点数量和数据量设置,推荐单 Tablet 压缩后的数据大小为 1-10GB(计算公式:分桶数 = 总数据量 /(1-10GB))。同时,调整分桶键(如随机数列)避免数据倾斜。合理分桶可平衡 BE 节点负载,避免单节点过载或多节点资源浪费,提升并行写入效率。

  • 随机分桶优化:减少 RPC 开销与 Compaction 压力

在随机分桶场景中,启用 load_to_single_tablet=true,可将数据直接写入单一 Tablet,绕过分发到多个 Tablet 的过程。这消除了计算 Tablet 分布的 CPU 开销和 BE 间的 RPC 传输开销,显著提升写入速度。同时,集中写入单一 Tablet 减少了小 Segment 文件的生成,避免频繁 Compaction 带来的写放大,降低减少 BE 的资源消耗和存储碎片,提升导入和查询效率。

内存优化:减少刷盘与资源冲击

数据导入时,BE 先将数据写入内存的 MemTable(默认 200MB),写满后异步刷盘生成 Segment 文件(触发磁盘 I/O)。高频刷盘会增加磁盘或对象存储(存算分离场景)的 I/O 压力;内存不足则导致 MemTable 分散(多分区 / 分桶时),易触发频繁刷盘或 OOM。

  • 按分区顺序导入:集中内存使用

按分区顺序(如逐天)导入,集中数据写入单一分区,减少 MemTable 分散(多分区需为每个分区分配 MemTable)和刷盘次数,降低内存碎片和 I/O 压力。

  • 大规模数据分批导入:降低资源冲击

对大文件或多文件导入(如 Broker Load),建议分批(每批≤100GB),避免导入出错后带来过大的重试代价过大,同时减少对 BE 内存和磁盘的集中占用。本地大文件可使用 streamloader 工具自动分批导入。

并发优化:平衡吞吐量与资源竞争

Doris 的分布式架构支持多 BE 并行写入,增加并发可提升吞吐量,但过高并发会导致 CPU、内存或对象存储 QPS 争抢(存算分离场景需考虑 S3 等 API 的 QPS 限制),会增加事务冲突和延迟。

  • 合理控制并发:匹配硬件资源

结合 BE 节点数和硬件资源(CPU、内存、磁盘 I/O)设置并发线程。适度并发可充分利用 BE 并行处理能力,提升吞吐量;过高并发则因资源争抢降低效率。

  • 低时延场景:降低并发与异步提交

对低时延要求场景(如实时监控),需降低并发数(避免资源竞争),并结合 Group Commit 的异步模式(async_mode)合并小事务,减少事务提交延迟。

Doris 数据导入的延迟与吞吐取舍

在使用 Apache Doris 时,数据导入的 延迟(Latency) 与 吞吐量(Throughput) 往往需要在实际业务场景中进行平衡:

  • 更低延迟:意味着用户能更快看到最新数据,但写入批次更小,写入频率更高,会导致后台 Compaction 更频繁,占用更多 CPU、IO 和内存资源,同时增加元数据管理的压力。
  • 更高吞吐:则通过增大单次导入数据量来减少导入次数,可以显著降低元数据压力和后台 Compaction 开销,从而提升系统整体性能。但数据写入到可见之间的延迟会有所增加。

因此,建议用户在满足业务时延要求的前提下,尽量增大单次导入写入的数据量,以提升吞吐并减少系统开销。

测试数据

Flink 端到端时延

采用 Flink Connector 使用攒批模式进行写入,主要关注数据端到端的时延和导入吞吐。攒批时间通过 flink Connector 的 sink.buffer-flush.interval 参数来控制的,Flink Connector 的详细使用参考:https://doris.apache.org/docs/3.0/ecosystem/flink-doris-connector

机器配置:

  • 1 台 FE: 8 核 CPU、16GB 内存
  • 3 台 BE:16 核 CPU、64GB 内存

数据集:

  • TPCH lineitem 数据

不同攒批时间和不同并发下的导入性能,测试结果如下:

TPCH lineitem 测试数据-1.jpg

不同 bucket 数对导入性能的影响,测试结果如下:

TPCH lineitem 数据-2.jpg

Group Commit 测试

性能测试数据参考:https://doris.apache.org/zh-CN/docs/3.0/data-operate/import/group-commit-manual

总结

Apache Doris 的数据导入优化并非单一参数的调整,而是一个涉及表结构设计、写入策略、资源配置与业务场景的系统性工程。 数据导入机制依托 FE 和 BE 的分布式协作,结合事务管理和轻量 ETL 功能,来确保高效、可靠的数据写入。频繁小批量导入会增加事务开销、存储碎片和 Compaction 压力,可以通过以下优化策略来有效缓解:

  • 表结构设计:合理分区和明细模型减少扫描和计算开销,精简索引降低写入负担。
  • 攒批优化:客户端和服务端攒批减少事务和 flush 频率,生成大文件,优化存储和查询。
  • 分桶数优化:适量分桶平衡负载,避免热点或管理开销。
  • 内存优化:控制 MemTable 大小、按分区导入。
  • 并发优化:适度并发提升吞吐量,结合分批和资源监控控制延迟。

用户可根据业务场景(如实时日志、批量 ETL)结合这些策略,优化表设计、参数配置和资源分配,可以显著提升导入性能。

2024年04月数据月报 2024年04月数据月报,为您准备了阿里、字节、百度等大厂100多篇实践案例 阅读详情

相关推荐

软件工程大作业——图书管理系统/图书个性化推荐与实现系统

软件工程期末大作业,图书管理系统,包含ER图、程序流程图、属性图、结构图

2401_82857325的博客 3646

doris:高并发导入优化(Group Commit)

doris:高并发导入优化(Group Commit)

qq_36070104的博客 2316

Win11上WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文详细介绍了在Win11系统上安装和配置WSL2及Ubuntu22.04开发环境的完整流程与避坑指南。内容涵盖从解决网络安装错误、更换国内镜像源以加速软件更新,到一站式配置C++开发工具链(包括GCC、GDB、CMake等),并提供了提升WSL2使用体验的实用技巧和故障排除方法,帮助开发者高效搭建稳定的Linux开发环境。

weixin_29306261的博客 474

Doris数据操作分类详解

4、SelectDB提供了免费的可视化的数据迁移工具X2Doris,目前支持了Apache Doris/Hive/Kudu、StarRocks数据库往Doris迁移的工作。FE会根据tablet成功副本数判断导入是否成功,如果成功,该导入的事务被commit,导入数据可见。Label的主要作用是唯一标识一个导入任务,并且能够保证相同的Label仅会被成功导入一次。如果失败,该导入的事务会被rollback,相应的tablet也会被清理。Doris导入任务中,BE会提交写入成功的Tablet ID到FE。

sunxunyong的博客 1641

【DenseFusion系列目录】代码全讲解+可视化+计算评估指标

DenseFusion是2019年李飞飞等提出的用于6D姿态估计的网络。它是一种端到端的结构,输入为RGB-D数据,输出为某个物体的6D姿态。主要贡献就是针对颜色特征和几何特征提出了一种像素级稠密融合的方式。在LineMOD数据集和YCB-Video数据集上进行了实验。本文对该网络进行完整的复现,详细解析了源代码中的重要内容。由于本人刚接触姿态估计方面的内容,因此有些解析部分包含很基础的知识,放在【DenseFusion详解】专栏。除此之外,本文在源代码的基础上进行了后续评价指标的计算以及结果的可视化,这些

weixin_44564705的博客 9417

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。 添加getchar();代码块解决无法查找或打开PDB文件。 错误提示: “Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Pro...

m0_46523403的博客 6416

Doris学习笔记

1、建表语句样例CODOMAIN_ID VARCHAR(32) NOT NULL COMMENT '主键ID(同值域代码)',CODE VARCHAR(255) COMMENT '值域代码',NAME VARCHAR(255) COMMENT '值域名称',DESCRIBE_INFO VARCHAR(255) COMMENT '描述',IS_DEL VARCHAR(32) COMMENT '删除标识',CREATE_DATE VARCHAR(36) COMMENT '创建时间',

weixin_43832943的博客 2388

ADRC自抗扰PD+ESO控制(博途SCL源代码)

文章浏览阅读119次。线性自抗扰控制(LADRC)系统算法框图-优快云博客文章浏览阅读335次。NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。ADRC自抗扰PD+ESO控制(CODESYS测试+完整ST代码)-优快云博客。

RXXW_Dor的博客 1315

Doris事务详解

事务是指一个操作,包含一个或多个SQL语句,这些语句的执行要么完全成功,要么完全失败,是一个不可分割的工作单位。

学亮编程手记 2078

Spring AI Alibaba实战训练营-14基于A2A协议智能体应用开发指南

本文介绍了基于A2A协议的智能体应用开发流程,主要包括客户端和服务端两个模块的实现。关键技术包括A2A通信协议、Nacos服务发现、Spring AI Alibaba框架和DashScope通义千问API。开发步骤涵盖环境准备(JDK17、Maven、Nacos)、项目创建、依赖配置(重点引入spring-ai-alibaba相关组件)以及Nacos和DashScope的核心配置。整个系统架构采用客户端通过Nacos发现服务端Agent,再调用阿里云AI服务的模式,实现了AI能力的解耦与复用。

program哲学 504

AI人工智能 Agent:在仓储物流中的应用

AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 859

Doris数据导入的多种方式

导入概览https://doris.apache.org/zh-CN/docs/data-operate/import/load-manual。

weixin_53724418的博客 1119

Java的API帮助文档

JDK帮助文档 SUN公司为JDK工具包提供了一整套文档资料,我们习惯上称之为JDK文档。 JDK文档中提供了Java中的各种技术的详细资料,以及JDK中提供的各种类的帮助说明。 JDk文档是Java语言的完整说明,大多数书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料 如何理解API:就当做是一个“字典”,“使用手册”,API就相当于是一个电子的帮助文档,可以帮我们查看JDK提供的类的信息,平时查看的时候可结合百度一起看。 官网下载: 1、登录Oracle官网(Oracl.

人生得意须尽欢 2万+

Apache Doris 实时更新全解:从设计原理到最佳实践|Deep Dive

本文档将作为一份官方指南,系统性地阐述 Apache Doris 的数据更新能力,内容涵盖其核心原理、多样的更新与删除方式、典型的应用场景,以及在不同部署模式下的性能最佳实践,旨在帮助您全面掌握并高效利用 Doris 的数据更新功能。

SelectDB 1354

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Apache Doris 提供了多种数据导入方式

每种加载方式都有其适用场景和限制,例如 Stream Load 适合于小于10GB的同步导入,而 Broker Load 适合于数十GB到数百GB的异步导入。选择合适的加载方式可以有效提升数据导入的效率和稳定性。此外,Doris 还提供了一些工具和连接器来简化数据加载流程,比如 Doris Streamloader,它支持并行加载、多文件及目录支持、路径遍历能力、故障恢复与连续性、智能重试机制等特点。Doris 会调度任务将 Kafka 中的数据拉取并写入,支持 csv、json 格式的数据。

smile6868的博客 1120

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Doris专题21- 数据导入-高并发导入优化

事务开销大:每个导入都创建独立事务,需要FE解析SQL和生成执行计划版本爆炸:每个导入生成新版本,增加后台compaction压力资源浪费:频繁的小批量导入导致系统资源利用率低性能提升:小批量导入性能提升10-15倍资源优化:减少FE解析开销和版本数增长扩展性:支持更高并发写入场景。

weixin_44999258的博客 1090

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

doris各服务器存储不均匀,导致BE节点不稳定

Doris存储不均匀问题分析与解决方案 摘要:Doris集群常见存储不均匀问题主要由分桶不合理、Tablet迁移未完成或硬件配置差异导致。核心表现为BE节点存储占用差距大、Tablet分布不均(可达16倍差异)及BE节点频繁宕机。主要原因包括:分桶字段选择不当、节点硬件容量不一致、Compaction压力过高等。解决方案包括:优化分桶策略(选择高基数字段)、调整BUCKET数量、增加小盘节点容量、升级Doris版本等。提供完整的诊断命令组合和自动化监控脚本,可检测存储/Tablet分布差异(>30%或

weixin_45837583的博客 1426

Apache Flink 零基础

低代码、易开发、易维护、可读性强,适配实时数仓分层、指标统计、数据清洗、多源数据关联等绝大多数业务场景,支持Kafka、Doris、MySQL、Hive等主流组件读写,是企业实时开发主流方案。:接收客户端提交的实时/离线任务、解析任务逻辑、生成DAG执行流程图、分配集群资源、调度任务运行、管理Checkpoint/Savepoint、处理任务故障重启、协调集群节点状态。手动触发的状态快照,主要用于任务升级、代码迭代、版本更新、集群迁移、任务重启等运维操作,保证业务无感知、数据不错乱、任务无缝恢复。

2402_85354210的博客 314

深入 Apache Hudi Write Operations:一次 Upsert 到底经历了什么?

Apache Hudi Write Operations

喻师傅的学习笔记 663

每天认识一个组件:Apache Flink

Flink 的核心价值不只是“实时”,而是把持续数据流、事件时间、业务状态和一致恢复放入同一个分布式运行时中。对于实时指标、持续 ETL、CDC、欺诈检测和事件驱动应用,它提供了一套比“消息队列加手工状态管理”更完整的计算模型。

weixin_47983718的博客 621

每天认识一个组件:Apache StreamPark

StreamPark 解决的核心问题,不是如何执行流计算,而是如何让流处理应用以统一、可管理的方式进入生产环境,它把 Flink 应用开发与运维中的重复工作收拢到统一控制面。

weixin_47983718的博客 474

Apache Doris 与 SelectDB 是什么关系?从开源技术到面向 Agent 的极速分析数据库

Apache Doris 与 SelectDB 是什么关系?了解二者的开源技术渊源,以及 SelectDB Cloud、Enterprise、阿里云瑶池数据库 SelectDB、信创适配与面向 Agent 的极速分析数据库能力。

SelectDB 482

WPS/Office Word客户端设置文档打开密码,Apache POI 解密—— 原理、实现与踩坑实录

本文介绍基于Apache POI 5.4.1实现的DocxDecryptor工具类,解决金融文档解析中加密docx的打开密码问题。核心原理:通过文件头判断是否为OLE2加密容器,仅支持ECMA-376标准的standard/agile加密模式,拒绝非标加密。关键在于verifyPassword()与getDataStream()必须使用同一Decryptor实例,否则解密失败。实录三大踩坑点:流需支持mark(用BufferedInputStream)、Decryptor不可复用、解密流仅可读一次。提供清晰

学习/总结 397

Apache Flink 2.3.0(最新版本)

Flink是一个用于无界与有界数据流的有状态分布式处理引擎,具备内存级执行速度和弹性扩展能力。其核心特性包括“边来边算”的无界流处理、统一批流处理的有界流模型,以及高效的状态管理。Flink起源于柏林的Stratosphere研究项目,2014年成为Apache顶级项目,阿里巴巴的Blink分支在SQL性能与支持方面贡献显著,推动了Flink SQL的发展。Flink 2.0引入存算分离、物化表等重大更新。学习者可通过官方文档、安装包(如阿里云镜像站)获取资源,掌握从架构到部署的全链路知识。

super_mochi1 302

Apache Doris 基础

需根据业务数据特征精准选择,选错模型会导致数据错误、查询性能极差。

2402_85354210的博客 338

Apache Doris 异步物化视图与 Snowflake MV / Dynamic Tables 工程化对照

在面向分析的数据分层建模里,物化视图是降低重复计算、缩短查询响应时间的通用手段。的异步物化视图从 2.1 版本引入、3.0 版本完善,以一套机制覆盖了多表 join、嵌套分层、分区增量刷新与构建资源管控;Snowflake 则把单表加速与多表管道拆成两套独立机制——Materialized Views 与 Dynamic Tables,前者有严格的单表与聚合限制,后者以 TARGET_LAG 声明数据新鲜度。

SelectDB 277
上一篇: Apache Doris AI 能力揭秘(三):AI_AGG 与 EMBED 函数深度解析
下一篇: Doris MCP Server v0.6.0 正式发布
SelectDB技术团队
博客等级 码龄4年 2119粉丝 483原创
评论
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值