Apache Druid大数据精进之路Java开发

Druid基本概念及架构介绍

2018-12-01  本文已影响52人  it_zzy

Druid基本概念及架构介绍


1.什么是Druid

Druid是一个专为大型数据集上的高性能切片和OLAP分析而设计的数据存储。Druid最常用作为GUI分析应用程序提供动力的数据存储,或者用作需要快速聚合的高度并发API的后端。Druid的常见应用领域包括:

2.druid的主要特点

3.为什么会有Druid

大数据时代,如何从海量数据中提取有价值的信息,是一个亟待解决的难题。针对这个问题,IT巨头们已经开发了大量的数据存储与分析类产品,比如IBM Netezza、HP Vertica、EMC GreenPlum等,但是他们大多是昂贵的商业付费类产品,业内使用者寥寥。

而受益于近年来高涨的开源精神,业内出现了众多优秀的开源项目,其中最有名的当属Apache Hadoop生态圈。时至今日,Hadoop已经成为了大数据的“标准”解决方案,但是,人们在享受Hadoop便捷数据分析的同时,也必须要忍受Hadoop在设计上的许多“痛点”,下面就罗列三方面的问题:

传统的大数据处理架构Hadoop更倾向于一种“后台批处理的数据仓库系统”,其作为海量历史数据保存、冷数据分析,确实是一个优秀的通用解决方案,但是如何保证高并发环境下海量数据的查询分析性能,以及如何实现海量实时数据的查询分析与可视化,Hadoop确实显得有些无能为力。

4.Druid直面的痛点

Druid的母公司MetaMarket在2011年以前也是Hadoop的拥趸者,但是在高并发环境下,Hadoop并不能对数据可用性以及查询性能给出产品级别的保证,使得MetaMarket必须去寻找新的解决方案,当尝试使用了各种关系型数据库以及NoSQL产品后,他们觉得这些已有的工具都不能解决他们的“痛点”,所以决定在2011年开始研发自己的“轮子”Druid,他们将Druid定义为“开源、分布式、面向列式存储的实时分析数据存储系统”,所要解决的“痛点”也是上文中反复提及的“在高并发环境下,保证海量数据查询分析性能,同时又提供海量实时数据的查询、分析与可视化功能”。

5.什么时候应该使用Druid

6.Druid架构

Druid拥有一个多进程,分布式架构,旨在实现云友好且易于操作。每个Druid流程类型都可以独立配置和扩展,为您的群集提供最大的灵活性。此设计还提供增强的容错能力:一个组件的中断不会立即影响其他组件。

Druid架构

Druid集群包含多种节点类型,分别是Historical Node、Coordinator Node、Broker Node、Indexing Service Node(包括Overlord、MiddleManager和Peon)以及Realtime Node(包括Firehose和Plumber)。

Druid将整个集群切分成上述角色,有两个目的:

下图给出了Druid集群内部的实时/批量数据流以及查询请求过程。我们可以看到,实时数据到达Realtime Node,经过Indexing Service,在时间窗口内的数据会停留在Realtime Node内存中,而时间窗口外的数据会组织成Segment存储到Deep Storage中;批量数据经过Indexing Service也会被组织成Segment存储到DeepStorage中,同时Segment的元信息都会被注册到元信息库中,Coordinator Nodes会定期(默认为1分钟)去同步元信息库,感知新生成的Segment,并通知在线的Historical Node去加载Segment,Zookeeper也会更新整个集群内部数据分布拓扑图。

图-3.5-实时/批量数据流与查询过程

当用户需要查询信息时,会将请求提交给Broker Node,Broker Node会请求Zookeeper获取集群内数据分布拓扑图,从而知晓请求应该发给哪些Historical Node以及Realtime Node,汇总各节点的返回数据并将最终结果返回给用户。

7.Druid集群节点

7.1Historical Node
7.2Broker Node
7.3Coordinator Node
7.4Indexing Service

Indexing Service是负责“生产”Segment的高可用、分布式、Master/Slave架构服务。主要由三类组件构成:负责运行索引任务(indexing task)的Peon,负责控制Peon的MiddleManager,负责任务分发给MiddleManager的Overlord;三者的关系可以解释为:Overlord是MiddleManager的Master,而MiddleManager又是Peon的Master。其中,Overlord和MiddleManager可以分布式部署,但是Peon和MiddleManager默认在同一台机器上。图-3.5给出了Indexing Service的整体架构。

图-3.6-indexing Service整体架构
7.5Real-Time Node

在流式处理领域,有两种数据处理模式,一种为Stream Push,另一种为Stream Pull。

8.外部拓展

Druid集群依赖一些外部组件,与其说依赖,不如说正是由于Druid开放的架构,所以用户可以根据自己的需求,使用不同的外部组件。

图-3.7-Druid元信息库中的十张表

(1) Load/Drop Segments规则表 druid_rules

图-3.8-Druid_ruleschema 图-3.9-Druid_rules样例数据

我们通过访问http://<coordinator>:<port>对不同datasource配置不同的Load/Drop规则,规则保存在表druid_rules中,由Coordinator定期获取,通知在线的HistoricalNode去加载或者丢弃相应的Segment。Load/Drop规则均有三类,分别是Forever Load/Drop Rule,IntervalLoad/Drop Rule以及Period Load/Drop Rule。图-3.9给出的是一条loadforever规则。
在生产环境中,我们建议大家,不要直接在表中操作规则,以免出现各种未知问题。

(2)规则审计表druid_audit。记录Load/Drop Segment规则的审计信息

图-3.10-Druid_audit schema 图-3.11-Druid_audit 样例数据

(3)Index Service配置表 druid_config

图-3.12-Druid_config schema 图-3.13-动态改变的worker工作配置

Overload作为Indexing Service的Master节点,可以动态改变Peon运行配置。举例说明,如图3.13所示。我们在使用Druid时,通过JSON over HTTP的方式向http://<overload ip>:<port>/druid/indexer/v1/worker变更Peon工作模式为"equalDistribution",表示MiddleManager在Remote模式下均匀分发任务给集群内所有Peon节点,使集群在高负载的情况下,不会出现问题。

(4)数据源表druid_dataSource

图-3.14-druid_dataSource

如果使用druid_0.9.1.1新特性Kafka IndexingService,如图3.14所示,那么该表会保存每个datasource对应的Kafka Topic信息,一级改Topic下所有Partitions已被消费的offset。

(5)Segment元信息表druid_segments

图-3.15-druid_segmentschema

该表中有一个used字段,是用来标识此segment是否被使用,如果某个datasource配置了规则,那么Druid只会采用逻辑删除,即应把对应的segment的used置为0,而不是物理删除。

(6)任务表druid_tasks。其中,图3.18是druid_0.9.1.1版本新增的kafka indexing service tasks。
(5)Segment元信息表druid_segments

图-3.18-druid_takssschema 图-3.19-druid_takssschema

(7)任务锁表druid_tasklocks

图-3.20-druid_taksblockssschema

(8)等待队列中的索引任务表druid_pendingSegments

图-3.22-druid_pendingSegmentsschema

(9)索引任务日志信息表druid_tasklogs

图-3.24-druid_tasklogsschema

(10)KafkaIndexingService对应supervise表 druid_supervisors

图-3.26-druid_superviseschema

9.加载数据

对于加载外部数据,Druid支持两种模式:实时流(real-time ingestion)和批量导入(batch ingestion)。

10.高可用性

Druid高可用性可以总结以下几点:

参考:

http://druid.io/docs/latest/design/index.html

https://blog.csdn.net/paicmis/article/details/72625404

https://blog.csdn.net/njpjsoftdev/article/details/52955676

https://blog.csdn.net/njpjsoftdev/article/details/52955937

上一篇 下一篇

猜你喜欢

热点阅读