介绍Druid

林辰钊
2023-12-01

介绍Apache Druid

特性:

  1. 开源,列式数据存储
  2. 基于event数据进行OLAP查询,对时序数据进行优化
  3. 低延迟,高可用,交互式,
  4. 实时的流式数据摄入
  5. 自动化数据汇总
  6. 处理TB,PB级别的数据
  7. 近似算法,例如hyperLoglog,theta

Apache Druid架构

各种节点

Apache Druid支持流式摄入和批量摄入。包含一些节点,每个节点优化做特定的方法:

  1. Realtime nodes:
    摄入和索引摄入的数据,构造segments,存储这些segments直到发送到historical nodes。当segments传到到historical nodes后,realtime nodes并不会存储这些segments。

  2. Historical nodes
    服务于不变的历史数据查询。从深度存储中下载不变的,读优化的segments,使用memory-mapped文件加载segments到可用的内存中,每个historical node跟踪它已经在zookeeper加载后的segments,传输这些信息到cluster的其他节点。

  3. broker nodes
    这些节点形成客户端和historical,realtime节点的网关,客户端发送查询到broker节点,这些节点基于需要的segments的位置切割查询到更小的查询,分发这些小的查询到合适的historical,realtime节点。broker节点合并查询结果,发送结果给客户端。这些节点也可以配置使用本地或者分布式缓存来缓存查询结果。

  4. Coordinator nodes
    分配segments到historical节点,处理数据副本,确保segments在historical节点之前均衡分配。也提供UI管理不同的数据源,配置规则加载数据和删除数据。

  5. Middle manager nodes
    运行关于数据摄入,实时索引,segment归档的任务,每个任务运行在单独的JVM中。

  6. Overlord nodes
    处理任务管理,维护一个包含用户提交的任务队列,通过分配任务到middle manager nodes来处理任务队列。middle manager nodes实际上运行任务。overlord nodes也有一个UI,提供当前任务队列的视图,访问任务日志。

需要的资源

  1. Zookeeper协调Druid节点,管理在coordinator和overlord节点的选举
  2. 使用HDFS或者S3进行segments的深度存储,一般使用HDFS
  3. 使用Mysql或者Postgres进行元数据存储
  4. 批量执行引擎:使用Yarn+MapReduce2作为执行资源管理和执行引擎,Druid Hadoop index任务使用MapReduce进行大量数据的分布式摄入。
  5. Druid指标报告,可以选择使用Grafana dashboard监控Druid性能指标。
 类似资料: