目录
  1. 1. Druid简介
  2. 2. Druid选型
  3. 3. Druid架构
Druid简介

Druid简介

Apache Druid (incubating) 是一个为对大型数据集进行快速切片和OLAP查询而设计的实时分析数据库。Druid作为数据库主要在以下场景被使用:

  • 实时数据采集
  • 高性能的数据查询
  • 要求服务高可用

因此,Druid经常为BI提供支持,或者作为需要快速聚合的高并发接口的后端。Druid最适合处理面向事件的数据。

Druid常见的应用领域包括:

  • 点击流分析(网络和移动设备)
  • 网络遥测分析(网络性能监测)
  • 服务器指标存储
  • 供应链分析(制造指标)
  • 应用程序性能指标
  • 数字营销/广告分析
  • 商业智能(BI)/ OLAP

Druid的核心架构结合了数据仓库、时序数据库和日志检索系统的思想。主要有如下特点:

  1. 列式存储
  2. 可扩展的分布式系统
  3. 大规模的并行处理
  4. 实时或批量的数据采集
  5. 自愈、负载均衡、易于操作
  6. 云原生架构、不会丢失数据的容错架构
  7. 用户快速删选数据的索引
  8. 基于时间分区
  9. 近似算法
  10. 在数据采集时自动汇总

Druid选型

如果符合以下部分场景,Druid是一个很好的选择:

  • 插入频率高,但是很少更新(时序数据)
  • 大多数的查询都是聚合和报表查询(分组查询)
  • 对查询的延迟有要求(100ms到几分钟)
  • 您的数据有一个时间组件
  • 您可能有多个表,但每个查询只能访问一个大的分布式表。查询可能会遇到多个较小的“查找表”
  • 您有高基数数据列(例如URL、用户ID),需要对它们进行快速计数和排名
  • 您希望从kafka、HDFS、平面文件或类似Amazon S3的对象存储中加载数据

对于以下场景,Druid并不擅长:

  • 您需要根据主键低延迟地更新数据(Druid支持流式插入,但不支持流式更新)
  • 您正在构建一个离线的报表系统,并且对于查询延迟没有要求
  • 您需要支持多表的JOIN操作,并且可以接受这些查询很耗时

Druid架构

Druid Architecture

Druid服务包含以下节点类型:

  • Coordinator
  • Overload
  • Broker
  • Router
  • Historical
  • MiddleManager

除了上述内部的节点,Druid还有三个外部依赖:

  • Zookeeper

    Druid利用Zookeeper来实现集群状态的管理,主要实现如下操作:

    1. Coordinator节点Leader的选举
    2. 从Historical节点发布Segment
    3. Coordinator和Historical间Segment的加载/删除
    4. Overload和MiddleManager的任务管理
  • Metadata Storage

    在单节点中,它通常是本地存储的Apache Derby数据库(不适用于生产)

    在集群模式中,它通常是MySQL或者PostgreSQL这样的关系型数据库

  • Deep Storage

    支持HDFS、S3、Google Cloud Storage、Microsoft Azure、Apache Cassandra、Rackspace Cloudfiles、Microsoft SQLServer等

Druid的各服务节点可以部署在任务地方,但是为了更方便的部署,官方建议按照如下的服务类型进行部署:

  • Master Servers

    运行Coordinator和Overlord节点,管理数据可用性和采集

  • Query Servers

    运行Broker和可选的Router节点,处理来自外部客户端的查询请求

  • Data Servers

    运行Historical和MiddleManager节点,执行数据采集的工作并且存储所有可查询的数据

文章作者: John Doe
文章链接: http://yoursite.com/2019/10/22/Druid%E7%AE%80%E4%BB%8B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo
打赏
  • 微信
  • 支付寶