Druid: A Real-time Analytical Data Store
Druid一种实时数仓,针对的场景和目的,如下比较明确
Druid was originally designed to solve problems around ingesting and exploring large quantities of transactional events (log data).
Our goal is to rapidly compute drill-downs and aggregates(roll-ups) over this data.
这篇文章主要内容是描述Druid的架构,对实时数仓的设计是否有借鉴作用

存储上,
Mysql用来存储元数据配置
Zookeeper用于分布式一致性,选主
Deep Stroage,比如S3,用来放历史数据
节点上,
Real-time Nodes
主要是用于消费和查询实时数据的,
数据会先在内存中建立index,避免oom,到达一定行数阈值,会presist到磁盘,presist的时候会由行存变换到列存格式
一个后台程序会不断的把磁盘上的indexes,进行merge,并且上传到deep storage


下面举了个例子,
何时会flush,presist?何时会merge,上传?
这里还考虑了late data,但是一旦窗口结束,该时间段的数据完成merge和上传,实时节点会拒绝too late 数据



Druid实时节点的scalability和availability,都是依赖kafka来保障的,降低druid本身的设计成本



Historical Nodes
这个节点的设计比较简单了,不涉及写入
只是不变数据segments的加载和查询,为了加载效率,需要实现local cache


Brokers
routers,把查询分解,分别去查询real-time和historical节点
还需要在返回前,merge不同节点的数据,这里merge不是怎么简单的,论文并没有写详细的过程,比如top10,怎么merge
为了提升查询性能,
会增加查询cache,这里只会对historical node的查询结果进行cache,不会cache real-time节点的返回,因为变的太快


Coordinator Nodes
中控节点
管下面这些事,



综合一下,本论文,主要描述冷热数据分离,读写分离的一套实时数仓的架构
Druid: A Real-time Analytical Data Store的更多相关文章
- 设置 Ext.data.Store 传参的请求方式
设置 Ext.data.Store 传参的请求方式 1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var res ...
- Ext.data.Store添加动态参数
多条件查询页面的参数都是动态的,并且我们通常还会有默认加载页面.此时,动态添加参数非常重要,其中baseparam是解决问题的关键. @ 将查询条件定义为一个全局变量 var param_01 = & ...
- 转: Ext.data.Store 修改Post请求
Extjs 4.0版本 var Store = Ext.create('Ext.data.Store', { pageSize: pageSize, model: 'Ext.data.Model名称' ...
- 对于Ext.data.Store 介紹 与总结,以及对以前代码的重构与优化
对于Ext.data.Store 一直不是很了解,不知道他到底是干嘛的有哪些用处,在实际开发中也由于不了解也走了不少弯路, store是一个为Ext器件提供record对象的存储容器,行为和属性都很象 ...
- Extjs 项目中常用的小技巧,也许你用得着(5)--设置 Ext.data.Store 传参的请求方式
1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var resultsPanel = Ext.create('Ex ...
- 【ArcGIS】ArcGIS Data Store配置
一.错误提示 Unable to configure the ArcGIS Data Store with the GIS Server. Please make sure that the GIS ...
- sencha touch carousel 扩展 CardList 可绑定data/store
扩展代码: /* *扩展carousel *通过data,tpl,store配置数据 */ Ext.define('ux.CardList', { extend: 'Ext.carousel.Caro ...
- ExtJs Ext.data.Store 处理
var storeCpye = new Ext.data.GroupingStore({ proxy : new Ext.data.HttpProxy({ url : 'cxgl_cpye.app?d ...
- ArcGIS Data Store 初体验
1. 什么是ArcGIS Data Store? ArcGIS Data Store 是10.3新推出的一个组件,从官方对其定位来说,该组件是用来优化发布托管服务到portal for ArcGIS的 ...
随机推荐
- k8s网络配置管理
docker容器的四种网络类型 1.桥接 2.联盟 3.主机 4.无 docker跨节点的容器通信必须通过NAT机制 宿主机上的容器一般都是私网地址 它可以通过宿主机 ...
- 99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?
本文转载自公众号:石彬的架构笔记,阅读大约需要8分钟. 作者:李瑞杰 目前就职于阿里巴巴,资深 JVM 研究人员 在 Java 程序中,我们拥有多种新建对象的方式.除了最为常见的 new 语句之外,我 ...
- go中如何更好的迭代
三种迭代方式 3 ways to iterate in Go 有如下三种迭代的写法: 回调函数方式迭代 通过Next()方法迭代.参照python 迭代器的概念,自定义Next()方法来迭代 通过ch ...
- 带你快速上手前端三剑客之css
CSS介绍 CSS(Cascading Style Sheet , 层叠样式表)定义如何显示HTML元素.当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染) 组成 每个CS ...
- 【Nginx】将http升级到https并且同时支持http和https两种请求
一.如何将http升级到https 需要满足下面三个: 1.域名 2.nginx 3.SSL证书 一般第三方证书颁发机构下发的证书是收费的,一年好几千. 1) 从腾讯云申请免费的SSL证 ...
- nohup 、&、 2>&1 命令分析
nohup的意思是不间断的运行,&的意思是后台运行,2>&1的意思是标准输出和错误输出都重定向到同一个文件. 简单地说nohup运行时即使关掉控制台,它该运行还是运行. http ...
- php72w-common conflicts with php-common-5.4.16-46.el7.x86_64
安装PHP的BC扩展时,报的错. 使用的命令为 yum install php-bcmath 输出错误: --> Processing Conflict: php72w-common--.w7. ...
- httprunner学习8-validate校验器
前言 在一个完整的测试用例中,断言是必不可少的,断言是拿实际结果和期望结果去比较,在httprunner中用validate来对比测试结果. validate校验器 在httprunner的源码里,u ...
- 《团队名称》第八次团队作业:Alpha冲刺day5
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十二 团队作业8-软件测试与ALPHA冲刺 团队名称 快活帮 作业学习目标 (1)掌握 ...
- Discuz!基础的代码安全和代码规范
变量所有漏洞都来源于变量,因此变量首先要做的就是定义初始化.用任何一个变量前一定要先定义,初始化它虽然现在Discuz!X来说,GPC不会被全局覆盖了,但是大家写插件的过程中也不要忽视了因为在服务器p ...