Druid大数据之存储和查询

Druid大数据实时处理的开源分布式系统——介绍 Abstract Druid 是一个为在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、shared-nothing的架构,和一个高级的索引结构,来达成在秒级以内对十亿行级别的表进行任意的探索分析。以下将详细阐述Druid的架构,如何支持快速聚合、灵活的过滤、和低延迟数据导入。 1. 介绍 Druid是一个用于大数据实时查询和分析的高容错、高性能 阅读详情

Druid数据格式

  1. 时间列(Timesatmp):表明每行数据的时间值,默认使用UTC时间格式并且精确到毫秒级别。这个列是数据聚合与范围查询的重要维度。
  2. 维度列(Dimension):维度来自于OLAP的概念,用来标识数据行的各个类别信息。
  3. 指标列(Metrics):指标对应于OLAP概念中的Fact,是用于计算和聚合的列。指标列通常是一些数字,计算操作通常包括Count,Sum,Mean等。

image

从上表可知维度列是:publisher,advertiser,gender,country。指标列是:click,price。

预聚合roll up

无论是实时数据消费还是批量的离线数据处理,Druid基于DataSource结构存储数据时间即可选择对任何指标列进行预聚合(roll up)。

  • 同维度列的值做聚合:所有维度列的值都相同时,比对于所有组合维度“publisher advertise gender country”维度值同为“ultratrimfast.com google.com Male USA”或同为“bieberfever.com google.com Male USA”的行。
  • 对指定时间粒度内的值做聚合:符合参数queryGranularity指定的范围,比如时间列同为一分钟内所有的行,聚合操作相当于数据表所有列做了Group by操作。比如“group by timestamp, publisher,advertiser,gender,country::impressions=Count(1),clicks=SUM(click),revenue=SUM(price)”。下表即为定义粒度为HOUR聚合之后的数据源情况。

image

这种预聚合的方式可以很显著的减少数据的存储(可减少100倍)。 Druid也是通过这种方式来减少数据的存储。 这种减少存储的方式也会带来副作用,比如我们没有办法再查询到每条数据具体的明细。换句话说,数据聚合的粒度是我们能查询数据的最小粒度。

数据分片

第一级分片-segment

DataSource只是一个逻辑概念,而Segment是数据的实际物理存储格式。Druid正是通过Segment实现对数据横向切割操作。从数据时间分布的角度来看,通过参数segmentGranularity的设置,Druid将不同的时间范围内的数据存储在不同的segment块中,这便是所谓的横向切割。这样访问Druid的数据仅需要访问对应时间的segment数据块,而不需要进行全表的数据范围查询。
image

同时在segment中也面向列进行数据压缩存储,这便是所谓的数据纵向切割。而且在Segment中使用了Bitmap进行了数据访问进行了优化。

第二级分片-shard

支持两种类型的分区策略:“散列”、“单维度”。在大多数情况下,建议使用散列分区,可以提高索引性能和创造大小更均匀的数据段。基于哈希散列首先选择第一级分片的segments,然后根据segments每一行的所有维度的hash来划分。

"partitionsSpec": {
    "type”: “hashed",
    "targetPartitionSize: 5000000
}

numShards:可以直接指定shard个数。当配置这个参数时,还可以配置partitionDimensions来指定维度,而不用全部维度。

单维度划分

首先自动选择一个维度划分,然后分离该维度成连续的范围。每一部分将包含所有行维度的值范围。

“partitionsSpec”: {
    “type”: “dimension”,
    “targetPartitionSize”: 5000000
 }

可以通过partitionDimension指定维度进行划分,不用自动选择的维度。

shard大小推荐

根据官方文档,shard大小推荐为300MB-700MB,需要调整两级分片的参数segmentGranularity和partitioningSpec。shard相当于是druid数据最小存储单位,分得太大的话,可能在各个历史节点分散不开。分得合适的话,查询的时候在历史节点比较分散,可以充分利用每个历史节点的cpu。

数据查询

Druid的查询是使用REST风格的HTTP请求查询服务节点(Broker、Historical、Realtime),这些服务节点暴露REST查询接口,客户端发送Json对象请求查询接口。一般情况下,查询服务接口发布在Broker节点,POST请求查询如下所示:
image

Druid查询类型

Druid在不同场景下,有很多的查询类型。对于各种类型的查询类型的配置可以json属性文件设置。Druid查询类型,概括一下为3大类:

  1. 聚合查询 - 时间序列查询(Timeseries)、排名查询(TopN)、分组查询(GroupBy)
  2. 元数据查询 - 时间范围(Time Boundary) 、段元数据(Segment Metadata)、数据源(Datasource)
  3. Search查询 - Search以聚合查询为主,与其它查询类型比较相对简单,使用上相对比较少,暂不介绍。

    如何对查询进行选择呢?

    在可能的情况下,我们建议使用的时间序列和TopN查询代替分组查询,分组查询是Druid最灵活的的查询,但是性能最差。时间序列查询是明显快于GROUPBY查询,因为聚合不需要分组尺寸。对于分组和排序在一个单一的维度,TopN查询更优于GROUPBY。

Druid Json查询属性

Druid json查询比较重要的几个属性是:queryType、dataSource、granularity、filter、aggregator等。

  • 查询类型(queryType):对应聚合查询下的3种类型值:timeseries、topN、groupBy
  • 数据源(dataSource):数据源,类似数据库中表的概念,对应数据导入时Json配置属性dataSource值。
  • 聚合粒度(granularity): 粒度决定如何得到数据块在跨时间维度,在配置查询聚合粒度里有三种配置方法:
  • 简单聚合粒度 - 支持字符串值有:all、none、second、minute、five_minute,ten_minute,fifteen_minute、thirty_minute、hour、day、week、month、quarter、year,all - 将所有块变成一块, none - 不使用块数据(它实际上是使用最小索引的粒度,none意味着为毫秒级的粒度);按时间序列化查询时不建议使用none,因为所有的毫秒不存在,系统也将尝试生成0值,这往往是很多。
  • 时间段聚合粒度 - Druid指定一精确的持续时间(毫秒)和时间戳返回UTC(世界标准时间)。
  • 常用时间段聚合粒度 - 与时间段聚合粒度差不多,但是常用时间指平时我们常用时间段,如年、月、周、小时等。下面对3种聚合粒度配置举例说明。

简单聚合粒度

查询粒度比数据采集时配置的粒度小,则不合理,也无意义,因较小粒度(相比)者无索引数据;如查询粒度小于采集时配置的查询粒度时,则Druid的查询结果与采集数据配置的查询粒度结果一样。
假设我们存储在Druid的数据使用毫秒粒度获取,数据如下:

{"timestamp": "2017-08-31T01:02:33Z", "name": "yangxuan", "classes" : "chinese"}  
{"timestamp": "2017-09-01T01:02:33Z", "name": "liuboyu", "language" : "english"}  
{"timestamp": "2017-09-02T23:32:45Z", "name": "luojiangyu", "language" : "english"}  
{"timestamp": "2017-09-03T03:32:45Z", "name": "DDD", "language" : "english"}

以"小时" 粒度提交一个groupby查询,查询配置如下:

{  
   "queryType":"groupBy",  
   "dataSource":"dataSource",  
   "granularity":"hour",  
   "dimensions":[  
      "language"  
   ],  
   "aggregations":[  
      {  
         "type":"count",  
         "name":"count"  
      }  
   ],  
   "intervals":[  
      "2000-01-01T00:00Z/3000-01-01T00:00Z"  
   ]  
}

按小时粒度进行的groupby查询结果中timestamp值精确到小时间,比小时粒度更小粒度值自动补填零,以此类推按天查询,则小时及小粒度补零。timestamp值为UTC查询结果如下:

[ {  
  "version" : "v1",  
  "timestamp" : "2017-08-31T01:00:00.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "chinese"  
  }  
}, {  
  "version" : "v1",  
  "timestamp" : "2017-09-01T01:00:00.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "english"  
  }  
}, {  
  "version" : "v1",  
  "timestamp" : "2017-09-02T23:00:00.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "english"  
  }  
}, {  
  "version" : "v1",  
  "timestamp" : "2017-09-03T03:00:00.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "english"  
  }  
} ]

如果指定查询粒度为none,则返回结果与数据导入时设置粒度(queryGranularity属性值)结果一样,此处的导入粒度为毫秒,结果如下:

[ {  
  "version" : "v1",  
  "timestamp" : "2017-08-31T01:02:33.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "chinese"  
  }  
}, {  
  "version" : "v1",  
  "timestamp" : "2017-09-01T01:02:33.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "english"  
  }  
}, {  
  "version" : "v1",  
  "timestamp" : "2017-09-02T23:32:45.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "english"  
  }  
}, {  
  "version" : "v1",  
  "timestamp" : "2017-09-03T03:32:45.000Z",  
  "event" : {  
    "count" : 1,  
    "language" : "english"  
  }  
} ]

时间段聚合粒度

指定一个精确时间持续时长(毫秒表示),返回UTC时间;支持可选项属性origin,不指定时默认开始时间(1970-01-01T00:00:00Z)

/**持续时间段2小时,从1970-01-01T00:00:00Z开始*/  
{"type": "duration", "duration": 7200000}

/**持续时间1小时,从origin开始*/  
{"type": "duration", "duration": 3600000, "origin": "2012-01-01T00:30:00Z"}

过滤(Filters)

等价于sql 查询的where。也是支持and,or,in,not等。

"filter": { "type": "selector", "dimension": <dimension_string>, "value": <dimension_value_string> }

聚合(Aggregations)

聚合类型如下:Count aggregator、Sum aggregators、Min / Max aggregators、Approximate Aggregations、Miscellaneous Aggregations

/**Druid进行Count查询的数据量并不一定等于数据采集时导入的数据量,因为Druid在采集数据并导入时已经对数据进行了聚合*/  
{ "type" : "count", "name" : <output_name> }  

/**longSumaggregator:计算值为有符号位64位整数*/
{ "type" : "longSum", "name" : <output_name>, "fieldName" : <metric_name> }  

/**doubleSum aggregator:与longSum类似,计算值为64位浮点型*/
{ "type" : "doubleSum", "name" : <output_name>, "fieldName" : <metric_name> }  

/** doubleMin aggregator */
{ "type" : "doubleMin", "name" : <output_name>, "fieldName" : <metric_name> }

/**doubleMax aggregator*/
{ "type" : "doubleMax", "name" : <output_name>, "fieldName" : <metric_name> }

/**longMin aggregator*/
{ "type" : "longMin", "name" : <output_name>, "fieldName" : <metric_name> }  

/** longMax aggregator*/
{ "type" : "longMax", "name" : <output_name>, "fieldName" : <metric_name> }

类似聚合(Approximate Aggregations)

基数聚合(Cardinality aggregator)
计算Druid多种维度基数,Cardinality aggregator使用HyperLogLog评估基数,这种聚合比带有索引的
hyperUnique聚合慢;一般我们强力推荐使用hyperUniqueaggregator而不是Cardinality aggregator,格式如下:

{  
  "type": "cardinality",  
  "name": "<output_name>",  
  "fieldNames": [ <dimension1>, <dimension2>, ... ],  
  "byRow": <false | true> # (optional, defaults to false)  
}

维度值聚合-当设置属性byRow为false(默认值)时,通过合并所有给定的维度列来计算值集合。单维度等价于:

SELECT COUNT(DISTINCT(dimension)) FROM <datasource>

对于多维度,等价如下:

SELECT COUNT(DISTINCT(value)) FROM (  
  SELECT dim_1 as value FROM <datasource>  
  UNION  
  SELECT dim_2 as value FROM <datasource>  
  UNION  
  SELECT dim_3 as value FROM <datasource>

行聚合-当设置属性byRow为true时,根所不同维度的值合并来计算行值,等价如下:

SELECT COUNT(*) FROM ( SELECT DIM1, DIM2, DIM3 FROM <datasource> GROUP BY DIM1, DIM2, DIM3 )

HyperUnique aggregator

“hyperunique”在创建索引时聚合的维度值使用HyperLogLog计算估计,更多资料请参考官网:

{ "type" : "hyperUnique", "name" : <output_name>, "fieldName" : <metric_name> }

后聚合(post-aggregators)

后聚合是对Druid进行聚合后的值进行聚全,如果查询中包括一个后聚合,那么确保所有聚合满足后聚合要求;后聚合有以下几种类型:

  1. Arithmetic post-aggregators
  2. Field accessor post-aggregator
  3. Constant post-aggregator
  4. JavaScript post-aggregator
  5. HyperUnique Cardinality post-aggregator
Arithmetic post-aggregators

算术后聚合应用已提供的函数从左到右获取字段,这些字段可聚合或后聚合;支持+, -, *, /, and quotient。

算术后聚合语法如下:

postAggregation : {  
  "type"  : "arithmetic",  
  "name"  : <output_name>,  
  "fn"    : <arithmetic_function>,  
  "fields": [<post_aggregator>, <post_aggregator>, ...],  
  "ordering" : <null (default), or "numericFirst">  
}

时间序列查询(Timeseries)

这些类型的查询以时间序列查询对象和返回一个JSON数组对象,每个对象表示时间序列查询的值,时间序列查询请求的Json的7个主要属性如下:

image

排名查询(TopN query)

TopN查询根据规范返回给定维度的有序的结果集,从概念上来讲,TopN查询被认为单维度、有序的类似分组查询。在某些情况下,TopN查询比分组查询(groupby query)快。TopN查询结果返回Json数组对象。TopN在每个节点将顶上K个结果排名,在Druid默认情况下最大值为1000。在实践中,如果你要求前1000个项顺序排名,那么从第1-999个项的顺序正确性是100%,其后项的结果顺序没有保证。你可以通过增加threshold值来保证顺序准确。

image


Druid学习笔记(2)Druid架构剖析 1. 前言Druid 的目标是提供一个能够在大数据集上做实时数据摄入与查询的平台,然而对于大多数系统而言,提供数据的快速摄入与提供快速查询是难以同时实现的两个指标。例如对于普通的RDBMS,如果想要获取更快的查询速度,就会因为创建索引而牺牲掉写入的速度,如果想要更快的写入速度,则索引的创建就会受到限制。而Druid却可以完美的对两者进行结合,本文将对Druid如何实现这种结合做一个简单的介绍。2. 阅读详情

相关推荐

Druid概述

1.Apache Druid简介 Apache Druid是一个分布式的、面向列的、实时分析数据库,旨在快速获取大量数据并将其编入索引,并对大型数据集进行快速的切片和切分分析(“OLAP查询),常用于实时摄取、快速查询和对时间依赖性很高的数据库用户。因此,Druid可以为可视化的分析应用程序提供强力的数据源支持,或用作需要快速聚合的高并发API的后端。Druid最适合面向事件的数据。 Apache Druid通常位于存储或处理层与最终用户之间,并充当查询层以服务于分析工作负载。 常见应用领域.

2344

druid java_Java--druidAPI查询

maven依赖in.zapr.druiddruidry2.11 组装json//时间范围:IntervalDateTime start = new DateTime(DateUtils.getToday()+"T00:00:00.000+08:00");DateTime end = new DateTime();Interval interval = new Interval(start,end)...

weixin_35918734的博客 1038

Kubernetes集群资源优化实战:Volcano调度器如何帮你省下30%GPU算力

本文详细介绍了如何通过Volcano调度器的Binpack策略优化Kubernetes集群中的GPU资源利用率,解决AI模型训练中的资源碎片化问题。通过实战配置和调优指南,帮助用户提升30%的GPU算力利用率,显著降低任务等待时间和硬件成本。

weixin_30832143的博客 507

HyperLogLog算法

项目在统计UV/PV时用到了Druid的Hyper hyperunique算法,书上介绍这种算法求出的UV/PV存在一定误差,因此需要了解下误差来自哪里。 实现去重功能,最简单的就是使用set记录集合本身,缺点与前面Bloom Filter差不多,显而易见,需要大量内存空间。HyperLogLog为解决这个问题而生。 另外redis也实现了HyperLogLog的结构,所以可以从redis源码...

weixin_30457551的博客 255

C# Socket网络通信UDP(关键字:Socket)

简单Socket-Udp通信 在本文中涉及到通信,仅做简单的通信(服务端接受消息,由客户端发出消息) 如有需要,根据需求可直接copy使用 关键字Socket 需要引用命名空间: using System.Net; using System.Net.Sockets; 服务端: using System; using System.Net; using System.Net.Sockets; u...

MelanceXin的博客 3887

pycharm添加Anaconda解释器显示不出来

因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。

2202_75803271的博客 4006

Druid 大数据分析之查询

1、Druid 查询概述     上一节完成数据导入后,接下来讲讲Druid如何查询及统计分析导入的数据。    Druid的查询是使用REST风格的HTTP请求查询服务节点(Broker、Historical、Realtime),这些服务节点暴露REST查询接口,客户端发送Json对象请求查询接口。一般情况下,查询服务接口发布在Broker节点,基于Linux 的POST请求查询如下所示:...

yangyangmyself的专栏 1219

使用Intel编译器编译OpenFOAM

本文总结了使用INTEL编译器编译OpenFOAM的过程

姜蜉蝣的博客 1550

FastAPI-MCP深度解析:零配置微服务通信网关架构实战

FastAPI-MCP是一个革命性的开源项目,它通过Model Context Protocol(MCP)实现了FastAPI端点到AI工具的无缝转换。在微服务架构日益复杂的今天,传统API网关需要大量配置和维护工作,而FastAPI-MCP提供了真正的零配置解决方案,让技术决策者和架构师能够快速构建智能化微服务通信层。该项目不仅支持原生FastAPI依赖注入和认证机制,还能自动将现有API转换为

gitblog_00223的博客 1043

IWR6843ISK+DCA1000EVM 本人遇到的所有报错和解决方案

本文详解了初次使用DCA1000EVM和mmave studio遇到的一系列的问题以及解决方法

2301_77883976的博客 3312

YOLOv12涨点改进 | Neck特征融合改进篇 | YOLOv12引 入 BiFPN双向特征金字塔网络,显著提升了多尺度特征融合效率,目标检测、图像分割、图像分类,助力高效涨点

本文提出了一种基于BiFPN特征融合模块优化的YOLOv12目标检测方法。BiFPN通过引入可学习的权重实现高效的多尺度特征融合,结合双向连接机制提升特征提取能力。实验表明,该方法在COCO数据集上实现了优异的检测性能。文章详细介绍了BiFPN模块的原理、核心代码实现,以及如何将其集成到YOLOv12框架中,包括模块添加、配置文件修改等具体步骤。这种改进方案具有参数少、计算量小等优势,为高效目标检测提供了一种新的技术路径。

Ai缝合怪、助力小伙伴高效发论文 391

Apache Druid分析型数据库设计-存储设计

Druid数据存储在数据源中,这和传统关系数据库管理系统的表类似。每个数据源都按事件分区,也能可选地按其它属性进一步分区。每个时间范围叫做chunk。在chunk中,数据被分区成一个或多个段,每个段都是一个文件。 本文介绍内容有:1. 数据源(datasource)和段(segment)的概念;2. Indexing和handoff机制;3. 段标识符(segment identifier);4. 段版本控制(segment versioning);5. 段生命周期;6. 可用性和一致性

JH Lan的博客 384

MIKE21 教程 3.2 随空间变化的网格文件制作(.dfsu文件制作) 曼宁值网格文件制作

上一节讲解了如何制作时间序列文件。本节讲解如何制作仅随空间变化的文件。 目录 1 数据准备 1.1 基于地形设置 1.2 基于地形水深设置: 2 数据导入 3 数据导出

Hello Word 3941

Druid 大数据分析之概况

一、概述     随着互联网快速发展,数据量增长快,达到TB、PB,以交通车流量为例,如湖南省每月的车辆流量至少达到4亿,这个数据量远不止如此。数据量如此大,如何满足后期分析,传统面向OLTP型数据库(ORACLE、MYSQL等)无法要求,渐渐开始转向OLAP,如GreenPlum等,虽然很多OLAP数据库吸收分布式计算思想,数据达到20亿以上后,进行Count、聚合等操作性能仍然达不到客户...

yangyangmyself的专栏 547

华为昇腾云平台适配Baichuan2大模型记录

文件发现报错:ValueError: The pipeline stage 2 in auto_parallel_context is not equal to the pipeline_stage 1 in the config.run_baichuan2_7b.yaml`,发现默认设备数是16卡,对应的pipeline_stage为2,但实际是8卡,那就改成下面的试试看。,将Baichuan2_7B_Chat.ckpt文件复制进去,将。点击镜像管理,突然发现有个2_2_0,赶紧新建了一个,成功。

羊城迷鹿的博客 2393

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

druid入门到精通

1、druid和es,kylin 对比ES,Druid的优势在于聚合计算,ES的优势在于查明细。es比较重量级 Druid可以说是一款基于时序的查询引擎,支持数据实时摄入,在数据摄入前指定维度和指标,提供基于时间层面的预聚合,Druid会把一个数据点当做一个实际发生的事实,在数据摄入后就不能修改。 常被应用于一些实时的场景,比如对数据实时分时间段分组聚合。ES同样是一款高效的查询引擎,支持数据的批...

laogong的博客 725

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

druid架构及原理

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34195142的博客 4334

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大数据挑战——如何使用Druid实现数据聚合

应用性能管理的本质就是通过对业务数据和IT系统性能数据的准确抓取和深度分析,为企业业务和IT的可持续发展提供平台支撑。而云智慧透视宝产品在得到越来越多客户认可的同时,业务数据也在急剧增加,无论是数据存储还是数据查询,都会给原有透视宝架构带来较大压力。 经过反复挑选,云智慧透视宝选择了用于大...

chongdudu5779的博客 497

[druid]大数据挑战——如何使用Druid实现数据聚合

-- 知道你为什么惧组件很多的一些开源软件? 因为缺乏阅读能力. 最近我接手了druid+kafka+elk一套等日志系统. 但是我对druid很陌生, 周旋了几天, 官网文档快速开始照着做了下. 看了这个文章才大概明白套路. 入库: kafka--&gt;tranquility--&gt;overload--&gt;middleManager 查询: broker--&gt;historica...

weixin_33858485的博客 706

druid等 olap框架对比分析

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33782386的博客 965

Druid实时大数据笔记02 -架构

一,Druid架构预览 1)实时节点 (realtime node): 实时摄入实时数据,以及生成Segment数据文件。 2) 历史节点(Historical node): 加载已生成好的数据文件,以供数据查询。 3) 查询节点 (broker node) : 对外提供数据查询服务,并同时从实时节点与历史节点查询数据,合并后返回给调用方。 4)协调节点(Coordinator n...

qq_31866793的博客 292

Druid架构说明

1、druid简介 2、Druid特性 3、使用场景 4、RealtimeNode 5、HistoricalNode 6、BrokerNode 7、CoordinatorNode 8、架构介绍 9、分布式集群1、druid介绍 Druid是一个用于大数据实时查询和分析的高容错、高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分析. 主要特性: 1、为分析而设计

Xlucas的博客 4409

OLAP-druid-大数据Week13-DAY2-druid

文章目录前言一、准备二、主题三、目标四、知识要点1. druid是什么2. druid的特点3. druid的应用场景4. druid于其他分析框架对比5. druid架构原理6. druid数据结构1. DataSource2. segment7. 安装部署druid1. 下载安装包2. 解压3. 修改配置文件4. 启动druid5. 使用web界面6. 停止druid总结 前言 # Druid 一、准备 安装好Hadoop集群 安装好kafka集群 二、主题 学习Druid的架构、安装、使用

qq_43058317的博客 430

实时统计分析系统-Apache Druid

前言 Druid.io(以下简称Druid)是2013年底开源出来的, 主要解决的是对实时数据以及较近时间的历史数据的多维查询提供高并发(多用户),低延时,高可靠性的问题。 正文 Druid简介 Druid是一个为在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、shared-nothing的架构,和一个高级的索引结构,来达成在秒级以内对十亿行级别的表进行任意的探索分析。互联网技术的快速增长催生了各类大体量的数据,Hadoop很大的贡献在于帮助企业将他们

qq_37163925的博客 971

Druid实时大数据笔记01

以下内容都是来自:《Druid实时大数据分析原理与实践》 1,做这个笔记不知道能不能坚持下去,主要是想看这本书,使用Druid做尝试了解探索一下实时数仓。 2,最近没那么多时间研究,看一点十一点,有兴趣的同学可以留言以及联系我,我们一起讨论研究一下这个实时数仓怎么玩,也可以相互分享一下个人资料跟经验 一, 入门之前先了解一下Druid的一些特点跟基础认知: 1,快速的,列式...

qq_31866793的博客 335

druid原理

Durid是在2013年底开源出来的,当前最新版本0.9.2, 主要解决的是对实时数据以及较近时间的历史数据的多维查询提供高并发(多用户),低延时,高可靠性的问题。对比Druid与其他解决方案,Kylin对数据按照分区每天构建前一天的cube数据提供给用户查询,用户查询的是历史数据。而Druid不断的从ingest去拉取数据,持续构建cube,提供实时查询,主要作者下面两位, 其中一位创建了一

xiaoqixiaodong的专栏 3392
上一篇: Druid.io实时大数据原理介绍
下一篇: kafka indexing service
小黑妹
博客等级 码龄14年 150粉丝 144原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值