Druid 实时数据分析存储系统
某厂面试归来,发现自己落伍了!>>> 简介 Druid 是一个开源的,分布式的,列存储的,适用于实时数据分析的存储系统,能够 快速聚合、灵活过滤、毫秒级查询、和低延迟数据导入 。 Druid在设计时充分考虑到了高可用性,各种节点挂掉都不会使得druid停止工作(但是状态会无法更新); Druid中的各个组成部分之间耦合性低,如果不需要实时数据完全可以忽略实时节点; Druid使用Bitmap indexing加速列存储的查询速度,并使用 CONCISE 算法来对bitmap indexing进行压缩,使得生成的segments比原始文本文件小很多; 架构 整体架构 Druid集群包含不同类型的节点,而每种节点都被设计来做好某组事情。这样的设计可以隔离关注并简化整个系统的复杂度。 不同节点的运转几乎都是独立的并且和其他的节点有着最小化的交互,因此集群内的通信故障对于数据可用性的影响非常小。 Druid集群的构成和数据流向如图1所示: (图1) Druid 本身包含了五种节点 : Realtime、Historical、Coordinator、Broker、Indexer Historical 历史节点 是进行存储和查询的“历史”数据(非实时)的工作区,它 会从深存储区(Deep Storage)中加载数据段(Data/Segments),响应 Broker 节点的查询请求并返回结果