- 博客(44)
- 收藏
- 关注
原创 Flink 系列第25篇:Flink SQL 集成 Hive 实践:流批一体下的实时数仓利器
Flink SQL与Hive集成实现流批一体数据仓库 摘要:本文系统介绍了Flink SQL与Hive集成的关键技术,包括元数据复用、流式写入Hive等核心场景。通过HiveCatalog实现元数据统一管理,Flink可直接读写Hive表数据,支持批处理和流式处理两种模式。重点讲解了流式写入Hive分区表的实现原理,包括分区提交机制和关键参数配置。文章还提供了环境准备指南和实战案例,帮助用户将实时Kafka数据流式写入Hive表,构建实时数据仓库。同时指出Hive表不能直接用于Lookup Join的限制及
2026-05-25 11:12:23
600
原创 Flink 系列第24篇:Flink SQL 集成维度表指南:存储选型、参数调优与实战避坑
本文深入探讨了实时数仓中维度表集成与关联的关键问题,重点分析了四种主流存储方案的选型策略及适用场景(外部数据库占比45%、实时数仓内部30%、Flink状态15%、文件系统10%),并提供了基于数据更新频率、数据量、延迟要求等维度的决策矩阵。同时详细解析了Flink SQL Lookup Join的五大核心参数体系,包括缓存策略、异步查询、重试机制等配置要点,强调异步查询是保障吞吐量的关键,而合理设置缓存和超时参数对系统稳定性至关重要。文章为不同业务场景下的维表关联提供了实用指导,帮助开发者在性能、一致性和
2026-05-03 10:57:09
514
原创 Flink 系列第23篇:Flink SQL 多流 Join 指南 —— 从原理到调优,一文吃透
Flink Join 技术解析摘要 Flink SQL 提供三种核心 Join 方式:Regular Join、Interval Join 和 Temporal Join。Regular Join 是最通用的流式连接,支持四种连接类型(INNER/LEFT/RIGHT/FULL),但会导致状态无限增长风险,可能产生回撤流。Interval Join 通过时间范围限制避免状态膨胀,特别适合处理时效性关联场景。Temporal Join 支持时态表关联,能追溯维度表的历史版本。 关键差异点: 状态管理:Regu
2026-05-03 10:52:55
701
原创 Flink 系列第22篇:Flink SQL 参数配置与性能调优指南:从 Checkpoint 到聚合优化
Flink SQL 核心参数调优指南 本文系统梳理 Flink SQL 生产环境中的关键配置参数,分为环境部署、运行时优化和聚合算子调优三个层面: 环境参数:确保作业高可用 Checkpoint 必须配置(建议间隔1-5分钟) 推荐使用 RocksDB 状态后端并开启增量检查点 设置合理的重启策略(指数退避)和内存分配 运行时参数:平衡吞吐与延迟 Mini-Batch 显著提升聚合性能(建议批大小5000,延迟5秒) 并行度设置需与数据源分区对齐 必须配置 State TTL 避免状态无限增长 优化器参数:
2026-05-01 11:23:23
484
原创 Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
Flink SQL函数体系与UDF开发指南 摘要:Flink SQL提供了完善的函数体系,包含系统内置函数和自定义函数(UDF)两大类型。函数按来源与生命周期分为四个象限,遵循严格的优先级解析规则。开发UDF时需注意:1)继承正确的基类并实现核心逻辑方法;2)通过类型推导机制明确输入输出类型;3)利用确定性标记优化性能;4)运用运行时上下文增强灵活性。UDF主要分为标量函数(单行处理)、表值函数(行转多行)、聚合函数(多行聚合)等类型,开发者可根据业务需求选择合适的UDF类型,并通过注解或重写方法明确函数特
2026-04-30 10:53:21
467
原创 Flink 系列第20篇:Flink SQL 语法全解:从 DDL 到 DML,窗口、聚合、列转行一网打尽
Flink SQL 通过 DDL 和 DML 构建流批一体数据处理能力。DDL 部分支持创建表(包含物理列、元数据列、计算列)、定义 Watermark 和主键约束,通过 WITH 子句配置连接器参数。DML 提供 WITH 子句实现复杂查询的模块化,支持流式查询处理。核心特性包括事件时间处理、连接器集成和查询优化,适用于实时数据管道构建。
2026-04-28 12:02:43
478
原创 Flink 系列第19篇:深入理解 Flink SQL 的时间语义与时区处理:从原理到实战
本文深入解析了Flink SQL中的时间语义和时区处理这一关键问题。首先介绍了Flink的三种时间语义:事件时间(最常用)、处理时间和已废弃的摄入时间,强调事件时间必须同时满足携带时间字段和作为计算属性两个条件。然后详细讲解了时间属性在窗口计算和自定义时间语义中的应用场景,以及如何在Flink SQL中正确声明事件时间(需定义Watermark策略)和处理时间(使用PROCTIME())。最后重点剖析了时区问题,指出Flink内部统一使用UTC时区进行计算,提醒开发者注意时区转换可能导致的窗口错位问题。全文
2026-04-27 11:17:41
574
原创 Flink 系列第18篇:Flink 动态表、连续查询与 Changelog 机制
Flink动态表与连续查询技术解析 Flink通过动态表(Dynamic Table)和连续查询(Continuous Query)实现流批统一处理。动态表将无界流数据映射为持续变化的逻辑表,支持标准SQL操作。连续查询则是对动态表的增量计算,永不停止。 核心机制包含三层: 动态输入表:将流数据映射为SQL可识别的表 连续查询:在动态表上执行持续SQL计算 动态输出表:将结果转换为可输出的数据流 关键技术Changelog(变更日志)记录表数据变更,包含四种操作类型:插入(+I)、更新前(-U)、更新后(+
2026-04-27 11:05:59
602
原创 Flink 系列第17篇:Flink Table&SQL 核心概念、原理与实战详解
本文介绍了Apache Flink Table/SQL API的核心概念与开发配置。主要内容包括: Flink Table/SQL API提供流批统一的查询能力,底层基于Calcite实现SQL解析优化,包含Table API和SQL API两种接口; 核心特性是流批语义统一,同一查询可适配批数据和流数据,底层自动优化执行策略; 详细解析了Flink 1.17.2版本的运行环境配置,包括核心依赖模块(bridge、planner、common)的功能说明; 提供了Java和Scala开发的Maven依赖配置
2026-04-25 11:34:14
645
原创 Flink 系列第16篇:Flink 核心数据类型类详解(POJO、Row、Tuple)
Flink核心数据类型类(POJO、Row、Tuple)详解摘要: Flink中POJO、Row和Tuple是三大核心数据类型类。POJO是普通Java对象,具有字段名引用和类型安全优势,需满足公有类、无参构造、标准getter/setter等条件。Row类表示一行数据,灵活可扩展,主要用于Table API/SQL,支持位置索引和字段名访问。Tuple是固定长度的元组类型,适合简单数据组合。三者各有特点:POJO适合结构化数据处理,Row适合表操作场景,Tuple适合简单临时数据。开发者应根据业务需求选择
2026-04-24 10:45:57
727
原创 Flink 系列第15篇:Flink 侧输出(Side Output)详解及实践
文章摘要: Flink的侧输出(Side Output)机制通过OutputTag实现高效数据分流,允许在单个算子内将数据拆分为主输出流和多个独立侧输出流,适用于异常分离、多级告警等场景。相比Filter分流,侧输出避免重复遍历数据,减少DAG复杂度。使用方法包括定义标签、在ProcessFunction中通过ctx.output()发送数据、通过getSideOutput()获取分流数据。Flink SQL虽不直接支持侧输出,但可通过CASE WHEN打标或多Sink方案间接实现分流。该机制核心优势是逻辑
2026-04-23 18:10:24
848
原创 Flink 系列第14篇:Flink Metrics 监控指标详解(生产环境版)
Flink Metrics 是监控 Flink 应用的核心工具,提供作业健康度、资源使用等关键指标。系统支持计数器、仪表、直方图和速率计四种指标类型,通过层级化命名空间组织指标。核心指标分为状态和Checkpoint两大类:状态指标监控状态大小和RocksDB性能,Checkpoint指标跟踪执行状态和耗时。这些指标可集成外部监控系统,为故障诊断和性能优化提供依据。通过配置可自定义指标格式,满足不同监控需求。
2026-04-22 19:56:56
970
原创 Flink 系列第13篇:Flink 生产环境中的并行度与资源配置
本文系统介绍了 Flink 计算资源管理机制,重点解析了 Task Slot 的内存隔离特性、Slot 共享优化和 Operator Chain 机制。详细阐述了并行度的四层设置方式及其优先级,推荐生产环境采用算子级并行度配置。通过源码分析揭示了资源申请与分配的核心流程,包括 Scheduler、SlotPool 和 JobMaster 的协作机制。最后给出生产环境配置建议:合理设置 Slot 内存、差异化配置算子并行度、控制 TaskManager 负载,并遵循算子级优先原则实现资源精准管控。全文为 Fl
2026-04-21 11:27:37
659
原创 Flink 系列第12篇:Flink 维表关联详解
Flink维表关联方案摘要 Flink流式计算中常需关联外部维表补充数据属性。主要方案包括: 实时查询维表:每条数据触发一次外部查询,保证数据实时性但对外部系统压力大,适合小数据量场景。 预加载全量数据:启动时加载全量维表到内存,通过定时更新解决数据延迟问题,内存消耗大但效率高。 LRU缓存:结合实时查询与缓存机制,平衡实时性与性能。 其他衍生方案:如广播维表、异步查询等。 实现时需注意连接管理、资源释放和性能平衡,根据业务需求选择合适方案。
2026-04-20 08:46:43
910
原创 Flink 系列第11篇:Flink 重分区算子详解
Flink重分区算子概览与对比分析 Flink提供了8种重分区算子用于调整数据流分发策略,包括轮询(Rebalance)、缩放(Rescale)、全局(Global)、转发(Forward)、广播(Broadcast)、键组(KeyGroup)、随机(Shuffle)和自定义分区器。这些分区器在分发模式(ALL_TO_ALL/POINTWISE)、均衡性、本地性等方面各具特点:轮询分区器实现全对全的均衡分发,缩放分区器基于并行度关系实现点到点分发,全局分区器将所有数据汇总到单一实例,转发分区器则仅本地传输。
2026-04-19 10:58:05
557
原创 Flink 系列第10篇:Flink 分布式缓存详解
Flink分布式缓存机制允许并行函数高效访问本地或远程文件。通过ExecutionEnvironment注册文件后,Flink会自动将文件同步到所有TaskManager节点本地文件系统。在RichFunction中,可通过RuntimeContext获取缓存文件,在open()方法中初始化读取,避免重复拉取。示例代码展示了如何注册本地文件,在RichMapFunction中读取缓存内容并与输入数据结合处理。输出结果验证了缓存文件被正确读取并用于每条记录的处理。该机制有效减少了网络开销,提高了作业执行效率。
2026-04-15 16:44:17
506
原创 Flink 系列第9篇:Flink 重启策略详解
Flink提供了三种重启策略:固定间隔策略(按固定次数和间隔重启)、失败率策略(限制时间段内的失败次数)和无重启策略。配置方式包括全局配置(flink-conf.yaml)和应用代码动态配置。默认情况下,未启用Checkpointing时使用无重启策略,已启用则使用固定间隔策略。代码示例展示了三种策略的具体实现方式,开发者可根据业务需求选择适合的重启机制来保障作业稳定性。实际应用中需注意后配置的策略会覆盖前一种策略。
2026-04-13 08:26:07
921
原创 Flink 系列第8篇:Flink Checkpoint 全解析(原理+流程+配置+优化)
本文深入解析了Flink流处理中的精确一次语义实现机制。首先介绍了流处理的三种数据处理语义(最多一次、至少一次、精确一次)及其适用场景,重点阐述了端到端精确一次的实现条件。其次详细讲解了分布式快照理论,特别是Chandy-Lamport算法的核心原理,包括标记消息、进程状态和通道状态等关键概念。然后剖析了Flink Checkpoint机制的实现,包括Barrier的工作原理、插入时机和处理方式,以及Checkpoint协调者的职责。最后通过具体场景示例,说明了Exactly-Once语义下多流对齐的实现原
2026-04-12 09:35:52
702
原创 Flink 系列第7篇:Flink 状态管理全解析(原理+类型+存储+实操)
本文深入解析Flink状态管理机制,从核心概念、分类体系到具体实现。首先区分无状态与有状态计算,重点介绍Keyed State和Operator State两种作用域分类。Keyed State作为业务核心,详解其5种类型(ValueState、ListState、MapState等)及适用场景,包括状态生命周期管理和访问模式。文章面向Flink开发人员,帮助掌握状态管理技巧,解决大状态、扩缩容等生产问题,保障作业稳定运行。通过理解状态管理机制,可高效实现实时统计、复杂事件处理等高级功能。
2026-04-11 14:57:07
830
原创 Flink 系列第6篇:Watermark 水印全解析(原理+实操+避坑)
Flink Watermark(水印)是处理事件时间(EventTime)窗口计算的核心机制,用于解决数据乱序和延迟计算问题。水印本质是单调递增的时间戳,表示“所有时间戳≤水印的数据已到达系统”,触发窗口计算并平衡实时性与准确性。Flink提供周期性(Periodic)和标点式(Punctuated)两种水印生成策略,内置forMonotonousTimestamps(无乱序场景)和forBoundedOutOfOrderness(允许延迟)两种常用实现。通过assignTimestampsAndWater
2026-04-10 11:19:40
811
原创 Flink 系列第5篇:Flink 窗口模型精讲(含实操代码)
本文详细解析Flink窗口模型,帮助开发者掌握无界数据流的分段统计技术。文章首先介绍窗口核心概念,包括时间窗口和计数窗口的分类及属性配置。随后重点讲解四种时间窗口(滚动、滑动、会话、全局窗口)的实现逻辑和应用场景,提供Scala/Java代码示例。最后解析计数窗口的API实现,通过元素个数触发统计。全文结合图示和实操代码,帮助读者深入理解窗口工作机制,解决数据丢失、重叠等常见问题,适用于Flink开发者及大数据初学者。
2026-04-09 17:59:02
704
原创 Flink 系列第4篇:Flink 时间系统与 Timer 定时器实战精讲
本文深入解析 Flink 时间机制与 Timer 定时器的核心原理与应用。首先介绍 Flink 的两种时间类型(事件时间和处理时间),重点讲解事件时间的水印机制及其配置方法。随后详细拆解 Timer 的工作原理,包括注册、触发和执行流程,并通过订单超时监控的完整代码示例,展示如何结合 KeyedProcessFunction 和状态管理实现延迟触发业务逻辑。文章适用于 Flink 开发者,帮助掌握时间模型与定时器使用,规避生产环境中的常见问题。
2026-04-08 11:01:00
927
原创 Flink 系列第 3 篇:核心概念精讲|分布式缓存 + 重启策略 + 并行度 底层原理 + 代码实战 + 生产规范
本文介绍了Flink三个核心功能:分布式缓存、故障恢复与重启策略、并行度配置。分布式缓存通过预加载小文件实现本地关联,优化大表Join性能;故障恢复支持局部重启降低影响,提供无重启、固定延迟和失败率三种策略;并行度配置分为四个优先级层级,需与Slot资源匹配。生产环境需注意缓存文件只读性、合理选择重启策略以及并行度与资源的平衡,以提升作业性能和稳定性。
2026-04-07 10:36:58
900
原创 16. Doris 系列第16篇:深挖 MOW 致命坑|Unique Key 写入炸裂、版本爆炸根源、链路剖析+应急根治方案
摘要: 本文深入剖析MOW(Merge-On-Write)在生产环境中的版本爆炸问题,打破“MOW版本天然可控”的误区。核心发现:高频更新场景下,MOW因DeleteBitmap机制和合并效率低下,版本堆积速度远超MOR(Merge-On-Read),更易触发500版本写入拒绝。通过拆解三大病根(写入放大、合并效率腰斩、串行依赖链)及典型场景(热点单行更新、大文件+小更新、并发资源争抢),提出六维解决方案:业务层打散热点+攒批、BE内核调优、前置缓冲架构、分区策略优化等,并给出MOR/MOW选型对照表。最终
2026-04-05 09:43:36
523
原创 15. Doris 系列第15篇:Unique Key 深度精讲|Merge-on-Write(MOW)原理、读写流程、Compaction适配与生产调优全指南
本文详细解析Apache Doris 2.0+的Merge-on-Write(MOW)特性,重点对比MOW与传统MOR模式的核心差异,阐述其底层Delete Bitmap机制和全链路写入流程。针对实时画像、订单状态等典型场景提供优化方案,包括建表配置、批量写入、Compaction调优等实战技巧,并给出监控告警体系和常见故障解决方案。MOW通过写入时合并大幅提升查询性能,是读多写少、实时更新业务的理想选择。
2026-04-05 09:40:18
608
原创 14. Doris 系列第14篇:Compaction 深度解析|原理、类型、配置与版本数限制全攻略
摘要: 本文针对Doris运维中的Compaction机制进行深度解析,面向Doris运维工程师、大数据开发等技术人员。从LSM-Tree架构原理切入,阐明Compaction对解决小文件累积、版本数过高等核心问题的重要作用。详细拆解三种Compaction类型(Base/Cumulative/Full)的触发条件、适用场景及资源配置建议,提供BE端全局配置与表级别调优参数。涵盖生产环境常见问题的监控告警方案、版本数管控策略及应急处理措施,帮助解决Compaction积压导致的写入拒绝、查询延迟等问题。基于
2026-04-04 10:27:05
678
原创 13. Doris 系列第13篇:生产监控全指南|FE/BE/查询/资源五大维度,告警+采集一步落地
本文针对Doris生产环境监控体系进行系统梳理,聚焦FE、BE、查询性能、集群健康、资源消耗五大核心维度,提供可直接套用的告警阈值与指标解读。重点强调"底线思维",通过关键指标监控保障集群高可用、高性能、高可靠。内容涵盖JVM稳定性、元数据健康、Tablet副本一致性、Compaction状态等核心监控项,并结合Doris Manager工具实操,帮助运维人员快速搭建生产级监控告警体系,实现故障早发现、早排查、早解决。特别提供慢查询治理方案和Compaction调优参数,为Doris集群
2026-04-04 10:20:45
801
原创 12. Doris 系列第12篇:湖仓一体实战|Multi-Catalog打通Hive/Hudi,无需搬迁数据直接查
摘要:本文深入解析Doris Multi-Catalog架构在湖仓一体场景中的应用,重点介绍Hive/Hudi湖表直连、查询优化及生产落地实践。Doris 2.2通过多目录机制实现零数据搬迁、极致查询性能和流批统一,成为湖仓架构的核心查询引擎。文章详细讲解Hive Catalog批处理查询和Hudi Catalog实时数仓落地方案,提供完整SQL示例和性能优化建议,助力企业构建低延迟、高性能的实时数仓,解决数据孤岛和ETL繁琐等痛点。
2026-04-03 08:18:36
485
原创 11. Doris 系列第 11 篇:查询加速核心精讲|四层技术体系全覆盖,从底层 IO 到建模优化落地
本文深入解析Apache Doris企业级查询加速体系,从存储、计算、优化器和建模四层架构协同优化出发,提供全链路调优方案。核心包括:存储层通过分区/分桶裁剪、多级索引和编码压缩降低IO;计算层利用向量化引擎、MPP并行和多级缓存提升CPU效率;优化器层基于RBO/CBO智能选择执行计划;建模层采用物化视图和宽表预计算加速查询。文章还给出生产规范、索引配置口诀和典型场景优化案例,强调"让数据少移动、计算贴近数据"的核心原则,并附调优CheckList和未来演进方向,为大数据开发及Dori
2026-04-03 08:11:23
527
原创 10. Doris 系列第10篇:数据查询全攻略|Join/子查询/窗口函数,从基础到高级实战
本文深入解析Apache Doris 2.x的企业级查询能力,重点剖析分布式Join算法选型与优化策略。核心内容包括:四种Join实现方式(Broadcast/Shuffle/Colocation/Bucket Shuffle)的适用场景与性能对比,生产环境最佳实践与调优建议;全面支持的子查询类型及自动优化机制;同时指出当前版本的限制点(如NOT IN子查询)。通过原理讲解与实战案例结合,帮助大数据开发、数仓分析师等技术人员掌握Doris查询优化核心技能,解决实际生产中的性能瓶颈问题。
2026-04-02 19:57:25
656
原创 9. Doris 系列第9篇:物化视图全解析|同步Rollup+异步MV,查询加速从毫秒级突破
本文深入解析Doris物化视图(MV)的原理与应用,帮助实现查询从秒级到毫秒级的优化。Doris提供同步MV(Rollup)和异步MV两种方案:同步MV适合单表高频固定维度查询,具有强一致性和极致性能;异步MV支持多表Join和复杂逻辑,灵活性更高但数据最终一致。文章详细介绍了两种MV的实现原理、建表语法、适用场景及性能特征,并给出生产环境中的实战案例。通过合理使用物化视图,可以在保留明细数据灵活性的同时,显著提升查询性能,是Doris查询加速的核心利器。
2026-04-02 19:51:01
583
原创 8. Doris 系列第8篇:查询引擎深度解析|MPP+Pipeline+向量化,从SQL解析到执行全流程
摘要:Doris查询引擎核心架构与优化实践 本文深入解析Doris 2.x查询引擎的核心架构与优化技术。作为OLAP数据库的关键枢纽,Doris查询引擎采用FE/BE分离架构:FE负责SQL解析、语义分析、查询改写和优化器处理,BE专注物理计划执行。文章详细拆解了从SQL解析到分布式执行的全流程,重点剖析了分区/桶裁剪、谓词下推等优化技术,以及RBO/CBO混合优化器的协同工作机制。针对MPP架构,介绍了计划分片和并行调度机制,并提供了生产环境调优实践建议。通过理解这些底层原理,开发者可有效解决查询性能瓶颈
2026-04-01 10:42:15
551
原创 7. Doris 系列第7篇:数据导入全解|四大导入方式+2PC事务+Exactly-Once生产实战
本文深度解析Apache Doris四大核心数据导入方式(Stream/Broker/Routine/Insert),详解其适用场景、实现原理及事务保障机制。Doris通过2PC+MVCC+Label/Offset实现原子性、一致性和Exactly-Once语义,有效解决重复入库、数据不一致等问题。Stream Load适合低延迟推送,Broker Load处理离线批量数据,Routine Load保障Kafka实时消费的精确一次语义,Insert Into则满足轻量ETL需求。文章提供生产级配置建议和故障
2026-04-01 10:37:14
588
原创 6. Doris 编码与压缩全解:存储优化+查询提速双提升(实战配置+调优)
本文深入解析Apache Doris的两层存储优化技术——编码与压缩,针对大数据开发、Doris运维等技术人员提供生产级优化方案。文章详细剖析了PLAIN、DICT_ENCODING、BIT_SHUFFLE等核心编码原理及LZ4/ZSTD压缩算法对比,给出建表配置语法和性能调优建议。通过合理应用编码压缩技术,可显著降低存储空间30%以上,提升查询吞吐15%,是实时数仓和OLAP系统必掌握的优化手段。文末提供最佳实践清单和避坑指南,助力开发者快速落地Doris存储优化。
2026-03-31 13:04:18
755
原创 5. Doris索引全解|前缀/ZoneMap/Bloom/Bitmap/倒排索引选型+实战调优
本文详细解析Apache Doris六大核心索引的设计原理与应用实践。前缀索引基于排序键自动构建,可高效过滤数据块;ZoneMap索引通过最值实现轻量级范围过滤;布隆索引适合高基数列等值查询;位图索引专为低基数列多维筛选优化;倒排索引则支持2.0+版本的文本检索。文章强调索引选型应遵循"存储计算协同"原则,提供各索引的创建语法、适用场景及生产级调优建议,包括优先优化Sort Key、避免冗余索引等实用技巧,帮助开发者根据查询特征精准配置索引,平衡查询性能与存储开销。
2026-03-31 12:58:58
793
原创 4. Doris 系列第4篇:存储引擎深度解析(LSM-Tree+列式存储+行存优化)
本文深入解析Apache Doris存储引擎的设计与实现,重点介绍其融合LSM-Tree、列式存储和MVCC的混合架构。文章从存储引擎定位出发,详细拆解了四级数据组织模型(Table-Partition-Tablet-Replica)、基于LSM-Tree优化的写入流程、多级缓存的读取机制,以及行列混存等核心特性。同时阐述了Compaction策略、SegmentV2列存格式、事务一致性模型和容错机制等关键技术,最后提出未来演进方向。该存储引擎通过分层设计实现了高吞吐写入、低延迟查询和强一致性的平衡,为OL
2026-03-30 07:54:49
836
原创 3. Doris 系列第3篇:数据模型全解析(Duplicate/Aggregate/Unique三大模型+数据类型)
Apache Doris提供三大数据模型满足不同业务需求:DuplicateKey模型适合存储原始明细数据(如日志),不聚合且写入性能高;AggregateKey模型自动按Key聚合数据,适合预聚合报表场景;UniqueKey模型支持主键唯一约束和更新操作,推荐使用Merge-on-Write模式提升查询性能。选型建议:不确定时先用DuplicateKey,报表需求用AggregateKey,主数据管理用UniqueKey。Doris还支持丰富的数据类型,包括数值、日期、字符串、半结构化和IP类型,可灵活适
2026-03-30 07:51:58
855
原创 2. Doris 系列第2篇:基础架构与核心概念(FE/BE+分区分桶全解析)
本文深入解析Apache Doris基础架构,重点剖析其MPP架构设计。Doris由FE(元数据管理与查询协调)和BE(存储与计算执行)两类进程组成,通过心跳机制、任务下发和副本管理实现高效协同。文章详细阐述了FE的BDBJE高可用机制和BE的列式存储结构,并重点讲解了两级数据分布模型:分区(逻辑分片)用于数据生命周期管理,分桶(物理分片)实现并行计算与数据均衡。通过合理设计分区策略和分桶键选择,可显著提升查询性能。掌握这些核心原理是进行Doris性能调优和故障排查的基础。
2026-03-29 21:59:56
450
原创 1. Doris 全景解析:架构、特性+选型指南(系列开篇·奠定基础)
Apache Doris 是一款基于 MPP 架构的高性能、实时分析型数据库(读多写少)。以高效、简单和统一的特性著称Doris 既能支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。在写入实时性、查询复杂度、并发能力、运维成本之间取得最佳折衷特别适合需要“实时 + 复杂分析 + 高并发”的中大型企业场景。在技术栈中,它往往扮演 “实时数仓统一出口” 或 “高性能 BI 引擎” 的角色,成为连接数据生产与消费的关键枢纽。
2026-03-29 21:57:18
633
原创 MapReduce 分析
若数据倾斜(某些 key 数据量极大),会导致个别 Reducer 负载过高(“拖后腿”)。表现:99% 的 Reducer 已完成,1 个 Reducer 还在跑(甚至 OOM)。数据需通过网络从所有 Mapper 传输到 Reducer(I/O + 网络开销大)。Reducer 需要同时处理来自数百/数千个 Mapper 的数据块,内存压力大。若无法全部加载到内存,会 spill 到磁盘再 merge,造成额外 I/O。内存缓冲区不足导致频繁 spill 到磁盘(大量磁盘 I/O)。
2026-03-27 16:58:20
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅