Apache Druid(一)简介

翻译自 Apache Druid

Apache Druid(正在孵化)是一个开源的分布式数据存储。德鲁伊的核心设计结合了OLAP /分析数据库时间序列数据库搜索系统的思想,为广泛的用例创建了一个统一的系统。Druid将这三个系统中的每个系统的关键特征合并到其接收层,存储格式,查询层和核心体系结构中。

德鲁伊的主要功能包括:

列式存储

Druid分别存储和压缩每一列,并且只需要读取特定查询所需的内容即可,这支持快速扫描,排名和groupBys。

本机搜索索引

Druid为字符串值创建倒排索引,以便快速搜索和过滤。

流式处理和批量摄取

适用于Apache Kafka,HDFS,AWS S3,流处理器等的现成连接器。

灵活的架构

德鲁伊优雅地处理不断发展的模式和嵌套数据

时间优化的分区

Druid基于时间对数据进行智能分区,并且基于时间的查询比传统数据库要快得多。

SQL支持

除了基于本机JSON的本地语言外,Druid还通过HTTP或JDBC 讲SQL

横向可扩展性

Druid已用于生产中,每秒接收数百万个事件,保留多年的数据并提供亚秒级的查询。

操作简便

只需添加或删除服务器即可扩大或缩小规模,而Druid会自动重新平衡。容错架构围绕服务器故障进行路由。

积分

Druid是Apache软件基金会中许多开源数据技术的补充,包括Apache KafkaApache HadoopApache Flink等。

德鲁伊通常位于存储或处理层与最终用户之间,并充当查询层以服务于分析工作负载。

摄取

德鲁伊支持流式传输和批量摄取。Druid连接到原始数据源,通常是消息总线,例如Apache Kafka(用于流数据加载),或分布式文件系统,例如HDFS(用于批处理数据加载)。

在调用“索引”的过程中,Druid将存储在源中的原始数据转换为更具读取优化的格式(称为Druid“段”)。

有关更多信息,请访问我们的文档页面

存储

像许多分析数据存储一样,Druid将数据存储在列中。根据列的类型(字符串,数字等),将应用不同的压缩和编码方法。Druid还根据列类型构建不同类型的索引。

与搜索系统类似,Druid为字符串列构建反向索引,以进行快速搜索和过滤。与时间序列数据库类似,Druid可按时间对数据进行智能分区,以实现快速的面向时间的查询。

与许多传统系统不同,Druid可以选择在提取数据时对其进行预聚合。此预聚合步骤称为汇总,可以节省大量存储空间。

有关更多信息,请访问我们的文档页面

查询方式

Druid支持通过JSON-over-HTTPSQL查询数据。除标准SQL运算符外,Druid还支持独特的运算符,这些运算符利用其近似算法套件来提供快速计数,排名和分位数。

有关更多信息,请访问我们的文档页面

架构

德鲁伊具有基于微服务的架构,可以认为是一个反汇编的数据库。Druid中的每个核心服务(摄取,查询和协调)都可以单独或联合部署在商用硬件上。

Druid明确命名了每个主要服务,以使操作员可以根据用例和工作量对每个服务进行微调。例如,如果工作负载需要,操作员可以将更多资源分配给Druid的提取服务,而将更少的资源分配给Druid的查询服务。

德鲁伊服务可以独立发生故障,而不会影响其他服务的运行。

有关更多信息,请访问我们的文档页面

运作方式

德鲁伊旨在为需要每周7天,每天24小时不间断运行的应用程序供电。因此,德鲁伊具有多种功能来确保正常运行时间且不会丢失数据。

资料复制

Druid中的所有数据都被复制了可配置的次数,因此单个服务器故障对查询没有影响。

独立服务

Druid明确命名了其所有主要服务,并且每个服务都可以根据用例进行微调。服务可以独立发生故障,而不会影响其他服务。例如,如果提取服务失败,则系统中不会加载任何新数据,但是现有数据仍可查询。

自动数据备份

Druid自动将所有索引数据备份到文件系统(例如HDFS)。您可能会丢失整个Druid群集,并从此备份数据中快速还原它。

滚动更新

您可以通过滚动更新来更新Druid群集,而不会造成停机时间,也不会影响最终用户。所有Druid版本都向后兼容先前的版本。

发布了354 篇原创文章 · 获赞 522 · 访问量 128万+

猜你喜欢

转载自blog.csdn.net/moakun/article/details/103443111