天天看点

Druid:一个用于大数据实时处理的开源分布式系统

快速的交互式查询——Druid的低延迟数据摄取架构允许事件在它们创建后毫秒内可被查询到;

高可用性——Druid的数据在系统更新时依然可用,规模的扩大和缩小都不会造成数据丢失;

可扩展——Druid已实现每天能够处理数十亿事件和TB级数据。

需要交互式聚合和快速探究大量数据时;

需要实时查询分析时;

具有大量数据时,如每天数亿事件的新增、每天数10T数据的增加;

对数据尤其是大数据进行实时分析时;

需要一个高可用、高容错、高性能数据库时。

查询操作中数据流和各个节点的关系如下图所示:

Druid:一个用于大数据实时处理的开源分布式系统
Druid:一个用于大数据实时处理的开源分布式系统

一、Druid简介

二、Druid架构组成及相关依赖

三、Druid集群配置

四、Druid集群启动

五、Druid查询

六、后记

Druid是一个为大型冷数据集上实时探索查询而设计的开源数据分析和存储系统,提供极具成本效益并且永远在线的实时数据摄取和任意数据处理。

主要特性:

为分析而设计——Druid是为OLAP工作流的探索性分析而构建。它支持各种filter、aggregator和查询类型,并为添加新功能提供了一个框架。用户已经利用Druid的基础设施开发了高级K查询和直方图功能。

交互式查询——Druid的低延迟数据摄取架构允许事件在它们创建后毫秒内查询,因为Druid的查询延时通过只读取和扫描有必要的元素被优化。Aggregate和 filter没有坐等结果。

高可用性——Druid是用来支持需要一直在线的SaaS的实现。你的数据在系统更新时依然可用、可查询。规模的扩大和缩小不会造成数据丢失。

可伸缩——现有的Druid部署每天处理数十亿事件和TB级数据。Druid被设计成PB级别。

就系统而言,Druid功能位于PowerDrill和Dremel之间。它实现几乎所有Dremel提供的工具(Dremel处理任意嵌套数据结构,而Druid只允许一个基于数组的嵌套级别)并且从PowerDrill吸收一些有趣的数据格式和压缩方法。

Druid对于需要实时单一、海量数据流摄取产品非常适合。特别是如果你面向无停机操作时,如果你对查询查询的灵活性和原始数据访问要求,高于对速度和无停机操作,Druid可能不是正确的解决方案。在谈到查询速度时候,很有必要澄清“快速”的意思是:Druid是完全有可能在6TB的数据集上实现秒级查询。

Druid:一个用于大数据实时处理的开源分布式系统

Overlord会形成一个加载批处理和实时数据到系统中的集群,同时会对存储在系统中的数据变更(也称为索引服务)做出响应。另外,还包含了Middle Manager和Peons,一个Peon负责执行单个task,而Middle Manager负责管理这些Peons。

监控Historical节点组,以确保数据可用、可复制,并且在一般的“最佳”配置。它们通过从MySQL读取数据段的元数据信息,来决定哪些数据段应该在集群中被加载,使用Zookeeper来确定哪个Historical节点存在,并且创建Zookeeper条目告诉Historical节点加载和删除新数据段。

是对“historical”数据(非实时)进行处理存储和查询的地方。Historical节点响应从Broker节点发来的查询,并将结果返回给broker节点。它们在Zookeeper的管理下提供服务,并使用Zookeeper监视信号加载或删除新数据段。

接收来自外部客户端的查询,并将这些查询转发到Realtime和Historical节点。当Broker节点收到结果,它们将合并这些结果并将它们返回给调用者。由于了解拓扑,Broker节点使用Zookeeper来确定哪些Realtime和Historical节点的存在。

实时摄取数据,它们负责监听输入数据流并让其在内部的Druid系统立即获取,Realtime节点同样只响应broker节点的查询请求,返回查询结果到broker节点。旧数据会被从Realtime节点转存至Historical节点。

为集群服务发现和维持当前的数据拓扑而服务;

用来维持系统服务所需的数据段的元数据;

保存“冷数据”,可以使用HDFS。

Druid:一个用于大数据实时处理的开源分布式系统

我这里有两台机器,node1有32G内存,上面部署了Histotical Node和Coordinator Node;node2有72G内存,上面部署了其他四个服务。

Druid:一个用于大数据实时处理的开源分布式系统

##创建MySQL数据库

CREATE DATABASE `druid` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all on druid.* to druid@’%’ identified by ‘druid1234′ WITH GRANT OPTION;

flush privileges;

##配置文件

cd $DRUID_HOME/config/_common

vi common.runtime.properties(所有节点)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<code>##使用Mysql存储元数据</code>

<code>druid.extensions.coordinates=[</code><code>"io.druid.extensions:druid-examples"</code><code>,</code><code>"io.druid.extensions:druid-kafka-eight"</code><code>,</code><code>"io.druid.extensions:mysql-metadata-storage"</code><code>]</code>

<code>##zookeeper</code>

本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/6408979.html,如需转载请自行联系原作者。

继续阅读