Apache Druid支持流式摄入和批量摄入。包含一些节点,每个节点优化做特定的方法:
Realtime nodes:
摄入和索引摄入的数据,构造segments,存储这些segments直到发送到historical nodes。当segments传到到historical nodes后,realtime nodes并不会存储这些segments。
Historical nodes
服务于不变的历史数据查询。从深度存储中下载不变的,读优化的segments,使用memory-mapped文件加载segments到可用的内存中,每个historical node跟踪它已经在zookeeper加载后的segments,传输这些信息到cluster的其他节点。
broker nodes
这些节点形成客户端和historical,realtime节点的网关,客户端发送查询到broker节点,这些节点基于需要的segments的位置切割查询到更小的查询,分发这些小的查询到合适的historical,realtime节点。broker节点合并查询结果,发送结果给客户端。这些节点也可以配置使用本地或者分布式缓存来缓存查询结果。
Coordinator nodes
分配segments到historical节点,处理数据副本,确保segments在historical节点之前均衡分配。也提供UI管理不同的数据源,配置规则加载数据和删除数据。
Middle manager nodes
运行关于数据摄入,实时索引,segment归档的任务,每个任务运行在单独的JVM中。
Overlord nodes
处理任务管理,维护一个包含用户提交的任务队列,通过分配任务到middle manager nodes来处理任务队列。middle manager nodes实际上运行任务。overlord nodes也有一个UI,提供当前任务队列的视图,访问任务日志。