druid学习笔记(一)

一、认识

  1. 分布式的支持实时分析的数据存储系统,处理海量规模的数据和实时方面比传统的olap系统有显著的性能改善

  2. 特点

    • 快速查询,数据预聚合和内存华,使用bitmap和各种压缩技术减少内存占用,并维护一些倒排索引,有效提高数据的查询效率,提高内存的使用率

    • 水平扩展方面,把数据按照时间进行分区处理,对于高基数维度的数据还可以再进行segment的切片,历史数据可存储至HDFS、云服务等(需要查询时再装载到内存),节点故障还可以根据zk进行数据重构

    • 不可变的过去,仅追加的未来

  3. 数据格式

    在数据摄入之前,需要定义一个DataSource,包含三个部分:时间序列、维度、指标

  4. 数据摄入:支持实时流式数据和批处理数据

  5. 数据查询:原生采用json格式通过http请求,支持大多数的标准sql查询

二、架构

image-20201224102737714.png

2.1、节点描述

Druid包含4个节点:

  1. 实时节点:消费流数据,以及生成segment文件

  2. 历史节点:加载生成好的数据文件,提供数据查询

    • 历史节点在启动的时候,会先检查自己的本地缓存中已存在的Segment,再从deep storage中下载属于自己的但是不在本地磁盘的Segment文件,然后再把相关的Segment加载到内存里提供查询服务。查询效率跟历史节点的内存大小有很大关系

    • Druid采用层的概念,将集群中的历史节点按照性能容量等指标划分为不同的层,并且可以让不同性质的DataSource使用不用的层来存储Segment文件

    • 高可靠与可扩展,节点的上下线通过zk进行状态通讯

  3. 协调节点:负责历史节点的数据负载均衡,以及通过规则(DataSource设置的加载或丢弃具体的数据文件)管理数据的生命周期(从元数据里获取Segment的相关信息,将其根据规则的设置分配给符合条件的历史节点)

  4. 查询节点:负责对外提供数据查询服务

    查询节点提供数据的对外查询服务,一般考虑到负载均衡和高可靠会有多个查询节点

同时Druid依赖3个外部节点:

  1. 深度存储:存放生成的segment文件,提供给历史节点进行下载,存储介质可以是本地硬盘、云服务、HDFS等

  2. 元数据存储:存储segment文件的相关信息

  3. 分布式协调服务:提供一致性的协调服务组件,一般是Zookeeper

2.3、节点之间的工作联系

Druid类LSM-tree架构的实时节点,在消费实时流数据的时候,不会将数据写入到WAL,而是将实时流数据写入到堆内存缓冲区里(相当于HBase的Memstore),当条件满足后,会将数据flush到磁盘中生成一个数据块(Segment Split),同时会在周期性时间内将同一时间段内的数据块合并成一个大的数据块Segment(相当于HBase的Compact),然后再上传到Deep Storage中

当历史节点加载到了Segment后,会通过协调服务声明从此时开始负责该Segment的读取服务,当实时节点收到该声明后也会立即向集群声明不再负责对该Segment的查询服务。

对全局数据来说,查询节点会从实时节点(少量当前数据)和历史节点(大量历史数据)分别查询后再做一个结果的合并,最后再返回

2.2、存储

采用了LSM-tree(日志结构合并树)的方法进行数据存储

对比\树结构 二叉查找树 B+树 日志结构合并树
特点 二叉有序树,保证左边节点一定小于根节点 树的内部节点(索引节点)只保存键,叶子节点保存值,并且有指向相邻节点的指针 使用了两种树的数据结构来进行数据存储,C0树负责新的数据的插入更新和读请求,存放在内存缓存中,C1树由C0树的数据刷写到磁盘中生成,特点是有序且不可更改(类似HBase的数据写入与合并过程)
查找效率 log2N-logN,跟树的高度、平衡性相关 所有叶子节点与根节点的距离相同,任何查询的效率很相似 存在内存中的数据提供快速读写更新,刷到磁盘中的数据使用布隆布隆过滤器进行读取
优点 实现简单,树平衡的状态下能达到log2N的查找效率 树的高度较低,查找效率高,与二叉树相比,树的更新操作直接从叶子节点开始,以较小的代价实现自平衡 利于海量数据的快速写入,海量数据中快速读取某条数据
缺点 极端非平衡状态下,树的查找效率达到logN,相当于顺序查找, 随着数据的不断插入,叶子节点会发生分裂,导致逻辑上原本连续的数据会存在不同的物理磁盘位置上,在做范围查询时会导致较高的IO 不适合大范围的数据量查询,不适合更新删除操作频繁的场景

B树和B+树的操作详解

2.4、数据结构

  1. DataSource:类似于mysql的表,包含时间字段(默认使用utc格式且精确到毫秒级别,这个时间字段是聚合与查询的重要维度)、数据维度、指标,DataSource是一个逻辑概念


    image-20201224200600479.png
  2. Segment:Segment是数据的物理存储格式,Druid通过Segment对数据进行了横纵向的数据切割。横向指的是按照设定的时间粒度进行将数据划分到不同Segment的操作,这一设计使得Druid在查询时不必再进行明细数据的范围扫描,只需对所在时间范围内的数据块进行读取操作,提高了数据的查询效率;纵向指的是Druid使用了Bitmap等压缩技术对数据块进行了压缩

    sequenceDiagram
        participant 实时节点
        participant 元数据管理
        participant 深度存储
        participant 协调节点
        participant 历史节点
        participant zk
        实时节点-->>元数据管理: 消费实时数据生成Segment的元信息
        实时节点->>深度存储: 传输实时消费生成的Segment文件
        元数据管理-->>协调节点: 
        协调节点-->>元数据管理: 协调节点得知Segment元信息
        协调节点-->>zk: 根据规则分配给符合条件的历史节点
        zk-->>协调节点: 
        历史节点->>深度存储: 从存储系统里下载指定的Segment
        zk-->>历史节点: 获取对应Segment的下载指令
        历史节点-->>zk: 通过zk声明其提供该Segment的查询服务
        实时节点-->>zk: 通过zk声明不再提供该Segment的查询服务
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容