学习 Druid (一):初识 Druid

更新至 Druid 0.15.1 版本

简介

Apache Druid 中文译为德鲁伊,分布式数据库,不是阿里巴巴开源的数据库连接池。

集 OLAP 分析数据库、时序数据库和搜索引擎于一身:

Druid

Druid 的爸爸:Imply

特性

  • 列式存储;
  • 可扩展分布式系统;
  • 大规模并发处理;
  • 实时和批数据摄入;
  • 服务自愈、自动扩容,易于运维;
  • 云原生、错误容忍架构,不丢数据;
  • 支持索引;
  • 基于时间的分区;
  • 近似算法。

组件

进程:

  • Coordinator 管理集群数据可用性;
  • Overlord 控制数据摄入工作分配;
  • Broker 处理外部客户端请求;
  • Router (可选)路由请求到 Brocker、Coordinator 和 Overlord;
  • Historical 存储查询数据;
  • MiddleManager 摄入数据;

服务:

  • Master,运行 Coordinator 和 Overloard,管理数据可用性和摄入;
  • Query,运行 Broker 和可选的 Router,处理外部客户端查询;
  • Data,运行 Historical 和 MiddleManager,执行摄入工作负载和存储所有查询数据。

外部依赖:

  • Deep Storage 仅用于数据备份和在 Druid 进程间传输数据,通常是 HDFS;
  • Metadata Storage 用于维护不同共享系统的元数据,通常是 MySQL;
  • Zookeeper 用于内部服务发现、调度和主节点选举。

架构

Druid 架构图:

Druid Architecture

通过架构图观察,可以发现以下几个特点:

  1. 所有节点都与 ZooKeeper 保持连接;
  2. 主节点 Coordinator 和 Overlord 与 Metadata Store 保持连接;
  3. 数据流的方向:MiddleManager -> Deep Storage -> Historical;
  4. 查询的方向:Router <-> Broker <-> (Middle Manager + Historical)。

Druid 的组件非常众多,初次接触,给人一种摸不着头脑的感觉。然而,如果将其拆分分别进行梳理,就能更清晰的理解 Druid 的架构:

  • 实时 实时数据的摄入、索引和查询;
  • 历史 历史数据的查询。

实时

overloard-middlemanager

OverlordMiddleManager 构成的主从架构,和 MiddleManager 派生的子进程 Peon

在 1.16.0 版本之后,Druid 提供了 Indexer 替代 MiddleManager 和 Peon,截止目前仍在实验阶段。

历史

coordinator-historical

CoordinatorHistorical 构成的主从架构。

参考