【大数据专栏】大数据框架-Apache Druid Overview

目录

Architecture


Advantages and disadvantages

从架构以及设计可以得出结论,Durid不支持ACID事务,基于时间戳列和维度列去查询,所以适合基于时间做分组和学列的查询操作。

Advantages优势:

  1. 实时数据摄取与查询
    支持秒级数据摄取和近实时查询,适合对数据时效性要求高的场景。

  2. 高性能查询
    采用列式存储、索引机制(如 bitmap、时间索引等)和多级缓存,查询速度非常快,尤其适合聚合类查询。

  3. 水平扩展性强
    架构支持分布式部署,节点可按需扩展,适合处理 PB 级数据。

  4. 灵活的数据分片与分区策略
    支持按时间、维度等进行分片,有助于提高查询效率。

  5. 内置 Rollup 和预聚合机制
    可以在摄取阶段进行数据压缩和预聚合,减少存储和加快查询。

  6. 支持多种数据源
    如 Kafka、HDFS、S3、MySQL、PostgreSQL 等,方便集成。

InAdvantages劣势:

  1. 不适合复杂事务处理
    Druid 是为分析而设计,不支持 ACID 事务,不适合 OLTP(在线事务处理)场景。

  2. 数据更新困难不支持实时更新:虽然支持流式插入,但不支持实时更新或删除,适合追加型数据而非频繁变更的数据。

  3. 扩展和运维复杂
    架构组件较多(如 MiddleManager、Historical、Broker 等),部署和运维复杂,需要手动调优,且依赖本地 SSD,存储成本较高。

  4. 存储成本可能较高
    尽管支持压缩,但在高并发和高可用配置下,资源消耗仍然较大。

  5. 对 JOIN 支持有限
    Druid 原生不支持复杂的 JOIN 操作,适合以 denormalized(扁平化)数据为主。

  6. 查询引擎性能瓶颈 基于 Java,缺乏 SIMD 优化,相比 ClickHouse、StarRocks 等新一代 OLAP 引擎性能略逊。

scenario

适合的场景

  • 实时用户行为分析:如点击流、A/B 测试、用户活跃度分析。
  • 数字广告分析:广告曝光、点击率、转化率等实时指标。
  • 网络流量监控:网络流日志分析,检测异常流量。
  • 应用性能监控:API 延迟、系统指标实时监控。
  • IoT 数据分析:设备指标、传感器数据的实时聚合和可视化。
  • 交互式 BI 应用:需要高并发、低延迟的用户自助分析场景。
     

不适合的场景

  • 需要复杂事务或 ACID 保证的场景:如金融核心系统。
  • 频繁更新或删除数据的场景:Druid 更适合追加型数据。
  • 需要复杂多表 JOIN 的分析:如高度关系型的数据模型。
  • 低实时性要求的批处理分析:如传统离线数仓任务,Hive/Spark 更合适。
  • 对成本敏感且数据量极大:Druid 对 SSD 和集群资源要求高,运维成本较高。

Architecture

Druid 具有分布式架构,旨在云友好且易于作。您可以独立配置和扩展服务,以获得集群作的最大灵活性。此设计包括增强的容错能力:一个组件的中断不会立即影响其他组件。

下图显示了构成 Druid 架构的服务、它们在服务器之间的典型排列,以及查询和数据如何流经此架构。

Durid Service

Druid has several types of services:

  • Coordinator 管理数据在集群中的可用性以及部分均匀.
  • Overlord 控制分配数据ingestion的workloads.
  • Broker 处理来自外部客户端的查询.
  • Router 路由请求致 Brokers, Coordinators, and Overlords.
  • Historical 存储可查询的数据.
  • Middle Manager and Peon ingest data.
  • Indexer 作为 Middle Manager + Peon task 执行系统的可选项.

    可以在service中看到这些服务。

Durid Server

Master Server 

A Master server manages data ingestion and availability. It is responsible for starting new ingestion jobs and coordinating availability of data on the Data server.Master servers divide operations between Coordinator and Overlord services.

Query Server

A Query server provides the endpoints that users and client applications interact with, routing queries to Data servers or other Query servers (and optionally proxied Master server requests).Query servers divide operations between Broker and Router services.

Data Server

A Data server executes ingestion jobs and stores queryable data.
Data servers divide operations between Historical and Middle Manager services.

Index Service(optional)
 

索引服务是数据摄入创建和销毁Segment的重要方式
Druid提供一组支持索引服务(Indexing Service)的组件,即Overlord和MiddleManager节点
索引服务采用的是主从架构,Overlord为主节点,MiddleManager是从节点
索引服务架构图如下图所示:

  • 索引服务由三部分组件组成:
    • Overlord组件
      • 分配任务给MiddleManager
    • MiddleManager组件
      • 用于管理Peon的
    • Peon(劳工)组件
      • 用于执行任务

Durid 数据存储
 

Historical节点负责管理历史Segment
Historical节点通过Zookeeper监听指定的路径来发现是否有新的Segment需要加载
Historical节点收到有新的Segment时候,就会检测本地cache和磁盘,查看是否有该Segment信息。如果没有Historical节点会从Zookeeper中拉取该Segment相关的信息,然后进行下载,Historical节点收到有新的Segment时候,就会检测本地cache和磁盘,查看是否有该Segment信息。 如果没有Historical节点会从Zookeeper中拉取该Segment相关的信息,然后进行下载。

  • Druid中的数据存储在被称为DataSource中,DataSource类似RDMS中的table
  • 每个DataSource按照时间划分,每个时间范围称为一个chunk((比如按天分区,则一个chunk为一天))
  • 在chunk中数据由被分为一个或多个segment
  • segment是数据实际存储结构,Datasource、Chunk只是一个逻辑概念
  • 每个segment都是一个单独的文件,通常包含几百万行数据
  • segment是按照时间组织成的chunk,所以在按照时间查询数据时,效率非常高

Data Partition

Druid处理的是事件数据,每条数据都会带有一个时间戳,可以使用时间进行分区
上图指定了分区粒度为为天,那么每天的数据都会被单独存储和查询

Segment
  • Segment是数据存储、复制、均衡和计算的基本单元
  • Segment具备不可变性,一个Segment一旦创建完成后(MiddleManager节点发布后)就无法被修改
  • 只能通过生成一个新的Segment来代替旧版本的Segment

Segment内部存储结构

时间戳列和指标列
Druid采用LZ4压缩每列的整数或浮点数
收到查询请求后,会拉出所需的行数据(对于不需要的列不会拉出来),并且对其进行解压缩
维度列
维度列需要支持filter和group by
Druid使用了字典编码(Dictionary Encoding)和位图索引(Bitmap Index)来存储每个维度列
每个维度列需要三个数据结构
需要一个字典数据结构,将维度值映射成一个整数ID
使用上面的字典编码,将该列所有维度值放在一个列表中
对于列中不同的值,使用bitmap数据结构标识哪些行包含这些值。
Druid针对维度列之所以使用这三个数据结构,是因为:
使用字典将字符串映射成整数ID,可以紧凑的表示维度数据
使用Bitmap位图索引可以执行快速过滤操作
找到符合条件的行号,以减少读取的数据量
Bitmap可以快速执行AND和OR操作
 

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

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

相关文章

云平台面试内容(一)

1. 云计算的优点、服务模型区别及云部署模式 云计算优点: 云计算具有显著的优势,包括无需自建机房和硬件投入,资源即开即用并支持弹性伸缩,按需付费使成本透明可控。企业可以在数分钟内完成全球范围的部署,缩短上线周期。同时云平台提供高可用性和安全性,多副本容灾保证数…

嵌入式 - 硬件:51单片机(2)

本节重点:1. GPIO输入模式、输出模式2. 按键工作原理(GPIO输入)3. 中断概念4. 中断源概念、中断源个数、哪几个中断源5. 外部中断、定时器中断概念6. 中断处理流程:7. 51单片机中定时器的个数?类型8. 16位定时器和8位…

C语言中奇技淫巧07-使用GCC栈保护选项检测程序栈溢出

-fstack-protector 是 GCC 和 Clang 编译器提供的一种栈保护(Stack Smashing Protection, SSP) 机制,用于检测和防御常见的缓冲区溢出攻击(特别是栈溢出)。它通过在函数的栈帧中插入特殊的“金丝雀值”(can…

.NET 8.0 Web API JWT 身份验证和基于角色的授权

在当今的数字环境中,保护 Web 应用程序的安全至关重要。随着 .NET 8.0 的不断发展,它提供了强大的工具来确保您的 API 既安全又高效。 示例代码:https://download.csdn.net/download/hefeng_aspnet/91490262 如果您喜欢此文章&#xff0c…

ZYNQ SDK软件在线调试

1、然后右键项目->debug as->launch on hardware2、从左到右分别是:运行程序到设置的断点暂停运行终止断开连接步进(进入函数内部)跳过(不进入函数内部)跳出函数3、双击添加断点,然后点击运行可以让程…

四大金刚之计算机操作系统

1. 进程和线程的区别?创建线程的代价比创建进程小吗?进程是资源分配和调度的基本单位;线程是 CPU 调度的基本单位。进程有独立的地址空间,线程共享进程地址空间。创建/销毁进程开销大,线程开销小。是的,因为…

redis--redis.conf的相关配置问题

关于redis.conf内的相关重要的配置介绍 1. bind 配置 仅仅设置bind,还需要搭配下面的rotected-mode 配置才能外部ip进行连接 功能:设置 Redis 监听的 IP 地址,决定哪些设备可以连接到 Redis 服务器。 bind 127.0.0.1:只允许本机&a…

unsloth 笔记:从最近的检查点继续微调

检查点(checkpointing)可以把微调进度保存下来,这样可以中途暂停,随后继续训练。首先需要在 Trainer 的参数里添加 save_strategy 和 save_steps。trainer SFTTrainer(....args TrainingArguments(....output_dir "output…

DevOps平台选型指南:破解研发效率瓶颈,适配金融/政务/国产化场景的5大关键指标

在数字化转型的浪潮中,软件研发效能已成为企业的核心竞争力。然而,许多团队在追求敏捷与高速交付的过程中,常常会遇到工具链割裂、流程冗长、环境混乱等效率瓶颈。选择一个合适的、一体化的DevOps平台,是破解这些瓶颈、实现研发运…

【面试向】元宇宙介绍

属于基础知识介绍,主要目的是对这一概念有技术层面的理解,有前瞻性的观点,帮助大家在面试中给出得体的表述。 1. 什么是元宇宙? 元宇宙本质上是一个融合了数字与现实、由技术构建的 “沉浸式虚拟空间”,是一个 “超越…

FreeMarker快速入门指南

FreeMarker快速入门指南 FreeMarker是一个基于模板和数据模型生成文本输出的Java库。它广泛应用于Web开发、代码生成、邮件模板等场景。本文将带你快速上手FreeMarker的核心概念和基本用法。 什么是FreeMarker FreeMarker是一个模板引擎,它将模板文件(.f…

Nginx主配置文件

一,Nginx基本介绍1,nginx概念Nginx 是一款轻量级、高性能的服务器软件,核心能力是 “处理网络请求”,被广泛用于网站、App 的后端架构中。Nginx 就像一个 “高效的网络交通指挥官”,核心价值是用最少的资源&#xff0c…

基于ResNet50的智能垃圾分类系统

基于ResNet50的智能垃圾分类系统:从理论到实践的完整指南 源码获取https://mbd.pub/o/bread/YZWXlZ1yZg 引言:智能垃圾分类的时代背景与意义 随着城市化进程的加速和人口数量的增长,垃圾处理问题日益成为全球性的环境挑战。传统的垃圾分类…

灾难性遗忘:神经网络持续学习的核心挑战与解决方案

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1. 灾难性遗忘的定义与核心问题 灾难性遗忘(Catastrophic…

OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现

🔍 OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现 引用: IP校验和算法:从网络协议到SIMD深度优化IP校验和算法:从标量到SIMD的高级优化(SSE4.1) GDB online Debugger C17 Co…

4.4 机器学习 - 集成学习

集成学习通过 “组合多个基础模型” 提升泛化能力,核心分为并行集成(Bagging)、串行集成(Boosting) 和多层集成(Stacking) 三大范式,分别对应 “降方差”“降偏差”“兼顾偏差与方差…

机器学习 - 使用 ID3 算法从原理到实际举例理解决策树

一、什么是决策树1.基本概念决策树是一种树形结构,由结点(node) 和有向边(directed edge) 组成。其中结点分为两类:内部结点(internal node):表示一个属性(特…

【期末复习】嵌入式——S5PV210开发板

本文为嵌入式课程期末复习,仅供参考,所用课本:嵌入式Linux操作系统(李建祥著)。第一章1.1 简述嵌入式微处理器数据存储格式的大,小端模式。大端模式是指数据的高字节保存在内存的低地址中,而数据…

word文档结尾批量插入图片 docx批量插入图片 指定几张

如果你有一些word文档。比如工作总结。你想每一个文档里面都插入几张图片。插入到每个文档的结尾,那么你可以使用这个工具。首先准备好你的文档。然后把它们拖进右边的方框中。拖动的时候,拖动第一个,然后准备好你的图片。把你的图片全部拖动…

CodeBuddy国际版又更新了体验感1

CodeBuddy国际版又更新了 更好的使用体验更少的资源消耗合理的消耗剩余资源使用起来也是很不错的,这次更新自动模式想不到的少,可以用于其他的例如翻译与写测试用例或者其他的说明文档等或者是阅读一下项目更好了解项目总的上来说 使用体验响应速度还是不…