大数据-149 Apache Druid 基本介绍 技术特点 应用场景

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据-149 Apache Druid 基本介绍 技术特点 应用场景

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka(已更完)

Spark(已更完)

Flink(已更完)

ClickHouse(已更完)

Kudu(已更完)

Druid(正在更新…)

章节内容

上节我们完成了如下的内容:


Flink 数据下沉到 Kudu

编写代码测试案例

Druid 介绍

数据分析的基础架构可以分为以下几类:

使用Hadoop、Spark进行分析

将Hadoop、Spark的结果导入到RDBMS中提供数据分析

将结果保存到容量更大的NoSQL数据库中,解决数据分析的存储瓶颈,例如:HBase

将数据源进行流式处理,对接流式计算框架(如Storm、Spark、Flink),结果保存到RDBMS或NoSQL中

将数据源进行流式处理,对接分析数据库,例如:Druid

互联网技术的快速增长催生出了各类大体量的数据,Hadoop很大的贡献在于帮助企业将他们那些低价值的事件流数据转换为高价值的聚合数据。

Hadoop擅长的是存储和获取大规模数据,它并不提供任何性能上的保证它们能够很快的取到数据,虽然Hadoop是高可用的系统,但在高并发下负载下性能会下降。

Hadoop是一个很好的后端、批量处理和数据仓库系统,在一个需要高并发的并且保证查询性能和数据可用性,并需要提供产品级的保证的需求,Hadoop并不能够满足。

Druid是Metamarkets(一家为在线媒体或广告公司提供数据分析服务的公司)退出的一个分布式内存实时分析系统,用于解决如何在大规模数据集下进行快速的、交互式的查询和分析。

Druid是一个开源的数据分析引擎工具,为实时和历史数据的次秒级(多于一秒)查询设计,主要应用于对数据的OLAP查询,Druid提供低延迟(实时)的数据摄取、灵活的数据探索、快速的数据聚合。现在的Druid部署已支持扩展到数万亿时间和PB级数据。

数据摄取层 (Ingestion Layer)

任务管理器 (Supervisor):负责管理数据摄取任务。

数据源 (Data Sources):是 Druid 中的基本概念,用于表示一组数据。

存储层 (Storage Layer)

Druid 使用列式存储来优化查询性能。数据按列存储,以提高聚合和过滤的效率。

Segments:数据在 Druid 中被划分为称为 segments 的块,每个 segment 通常包含一个时间范围内的数据。

查询层 (Query Layer)

Druid 支持多种查询类型,包括实时查询、批量查询和复杂的聚合查询。

查询协调器 (Query Coordinator):负责管理查询请求和将请求分发到不同的节点。

索引层 (Indexing Layer)

Druid 采用一种基于时间的索引策略,支持实时和历史数据的快速查询。

支持多种索引类型,包括基本索引、维度索引和时间索引。

服务层 (Service Layer)

Druid 的架构中包括多个服务,如 Broker、Historical、Middle Manager 等,负责数据的查询和摄取。

Broker:接受查询请求,并将其路由到合适的 Historical 或实时节点。

Historical:存储历史数据并处理查询。

Middle Manager:负责摄取和处理实时数据流。

与OLAP对比

SparkSQL / Impala / ClickHouse,支持海量数据,灵活性强,但对响应时间没有保证,当数据量和计算复杂度增加后,响应时间会变慢,从秒级到分钟级,甚至小时级都有可能。

搜索引擎架构的系统(Elasticsearch等),在入库的时候将数据转换为倒排索引,牺牲了灵活性换了很好性能,在搜索的查询上做到了亚秒级别的响应,但是对于扫描聚合为主的查询,随着处理数据量的增加,响应时间也会退化到分钟级别。

Druid/Kylin,在入库的时候对数据进行预聚合,进一步牺牲灵活性来换取性能,实现对超大数据集的秒级响应。


Kylin利用Hadoop HBase做计算和存储,使用SQL查询,提供JDBC、ODBC驱动与常见的BI工具的集成

Druid有自己独立的分布式集群,能够实时摄入数据,有自己的查询接口(与BI兼容性较弱),通常用于实时要求高的场景

目前没有一个OLAP分析引擎能在数据量、灵活程度、性能、吞吐、并发做到完美,需要基于自己的业务场景进行选择。

技术特点

基本介绍

Apache Druid 是一个开源的、分布式、实时OLAP分析工具,Druid的核心结合了数据仓库、时间序列数据库和搜索系统的思想,适用于多种场景的高性能数据实时分析。Druid将这三个系统中的每个系统的关键特征合并到其接收层、存储格式、查询层和核心体系结构中。


时间序列数据库主要用于处理、带时间标签(按照时间的顺序变化)的数据,带时间标签的数据也称为时间序列数据。


时间序列数据库主要用于电力行业、化工行业等各类实时监测、检查、分析设备所采集、产生的数据,这些工业数据的典型特点是:


产生频率快(每一个监测点一秒钟可内可以产生多条数据)

严重依赖于采集时间(每一条数据均要求对应唯一的时间)

测点多信息大(常规的实时检测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据)。

主要特点

列式存储

Druid独立的存储和压缩每一列,主需要读取特定查询所需的内容,这可以支持快速扫描、排名和聚合。


流式和批量摄取(Ingestion)

支持Apache Kafka、HDFS、AWS S3 等现成的连接器


本地的搜索索引

Druid为字符串创建倒排索引,以支持快速搜索和排序


灵活的Schema

Druid可以处理变化的Schema和嵌套数据


基于时间优化Partition

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


支持SQL

Druid支持本机的JSON语言,还支持基于HTTP或者JDBC的SQL


水平扩展性

Druid已经用户生产环境中,每秒接收百万个事件,保存多年的数据并提供次秒级查询


操作简单

只需要增加或删除服务器即可扩展或缩小规模,Druid会自动平衡,容错架构通过服务器的故障进行路由。


集成

Druid是开源大数据的技术补充,包括Apache Kafka、Apache Hadoop、Apache Flink等,通常位于存储或处理层与最终应用之间,充当查询层或数据分析服务。

Ingestion(摄取)

Druid支持流式传输和批量社区,Druid连接到数据源,包括:Kafka(用于流数据加载),或分布式文件系统,如HDFS(用于批处理数据加载)。

存储

Druid的数据存储采用列式存储格式,根据列的类型(字符串、数字等),应用不同的压缩和编码方法,根据列类型不同的类型的索引

Druid为字符串列构建倒排索引,以进行快速搜索和过滤,Druid可按时间对数据进行智能分区,以实现面向时间的快速查询。

Druid在摄取数据时对数据进行预聚合,节省大量的存储空间。

查询方式

Druid支持JSON、SQL两种方式查询数据。

应用场景

Druid擅长的部分:


对于大部分查询场景可以亚秒级响应

事件流实时写入与批量数据导入兼备

数据写入前预聚合节省存储空间,提升查询效率

水平扩容能力强

社区活跃

具体的方向有如下:


实时数据分析:对实时数据流(如日志、传感器数据等)进行快速分析和可视化。

商业智能:用于商业分析,支持快速的报告生成和自助式数据探索。

监控和指标分析:适合监控应用程序性能、用户行为分析以及操作指标。

网络分析:处理网络流量数据,以便快速检测异常或进行趋势分析。

复杂事件处理 (CEP):实时处理和分析事件流,帮助企业快速响应市场变化。

机器学习预处理:作为机器学习模型的输入,提供快速的数据摄取和处理能力。

那是否需要Druid呢?


处理时间序列事件

快速的聚合以及探索式分析

近实时的分析 亚秒级响应

存储大量(TB、PB级别)可以预先定义若干维度的事件

无单点问题的数据存储


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
16天前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
64 5
|
1月前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
59 5
|
12天前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
1月前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
27 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
1月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
26 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
25天前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
34 1
|
1月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
32 1
|
26天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
559 13
Apache Flink 2.0-preview released
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
61 3

推荐镜像

更多