Druid :大数据实时处理的开源分布式系统(1)
引言
Druid 是一个快速,近实时的查询海量只读数据的系统。Druid 的目标是可用性要达到100%,即使在部署新代码,或者某些节点 down 机的情况下。
Druid 目前支持的单表查询方式和 Dremel,PowerDrill 比较相似。它的主要特性如下:
1.支持嵌套数据的列式存储
2.层级查询
3.二级索引
4.实时数据抽取
5.分布式容错架构
同 PowerDrill 和 Dremel 相比,从功能的角度来说,Druid 几乎实现了 Dremel 提供的所有功能,并且参考了 PowerDrill 的数据存储和压缩方法。
Druid非常适合需要实时从一个数据流中摄取大量数据的产品。特别的,如果您希望零宕机,并且您的数据是时间序列数据,就再适合不过了。如何您更需要查询的灵活性和原始数据,那 Druid 就不是一个很好地选择。
架构
Druid 是由一系列不同角色的组件组成的系统。不同的组件如下:
历史节点(Historical Node):
该节点负责存储数据和查询。历史节点从深度存储中下载数据分片(segment),并且响应来自查询节点的查询。历史节点会定期刷新本身存贮的 数据分片信息到 zookeeper,并且通过 zookeeper得到需要加载或者卸载哪些数据分片。
实时节点(Realtime Node):
实时节点负责摄取实时数据。它们负责监听一个数据流,并把数据发到 Druid 系统当中。实时节点也接受来自查询节点的查询,并把结果返回。实时节点会把历史数据写到深度存储中。实时节点会查询 zookeeper,并确认当前存储在实时节点的数据分片是否已经上传至历史节点。如果已经上传,实时节点将删除该数据分片。
协调节点(coordinator node):
协调节点会监控所有的历史节点,确保所有数据是可用的,多副本的。协调节点会从存储 meta data 数据源中读取 meta data 信息,去决定哪些数据分片应该在 druid 集群当中。协调节点用 zookeeper 发现哪些历史节点存在,并且通过 zookeeper 去通知历史节点装载和卸载相应的数据分片。
查询节点(broker node):
查询节点接受从客户端来的查询,并转发这些查询到实时节点和历史节点。查询节点得到分别来自实时节点和历史节点的数据后,对这些数据进行合并,然后返回给客户端。查询节点也是利用zookeeper 去发现实时和历史节点的存在。
这种节点划分方式使得不同节点只需要处理好自己擅长的事情。
下面是在这个架构下地数据流图:

下面这张图,显示的是 Druid 集群是如何运作管理的,显示了节点之间是如何通过 meta data 进行协调运作的

(未完待续)
OneAPM Mobile Insight以真实用户体验为度量标准进行 Crash 分析,监控网络请求及网络错误,提升用户留存。访问 OneAPM 官方网站感受更多应用性能优化体验,想阅读更多技术文章,请访问 OneAPM 官方技术博客。
Druid :大数据实时处理的开源分布式系统(1)的更多相关文章
- Druid:一个用于大数据实时处理的开源分布式系统
Druid是一个用于大数据实时查询和分析的高容错.高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分析.尤其是当发生代码部署.机器故障以及其他产品系统遇到宕机等情况时,Druid仍 ...
- Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统
转自:http://www.36dsj.com/archives/28590 Druid 是一个用于大数据实时查询和分析的高容错.高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分 ...
- 大数据实时处理-基于Spark的大数据实时处理及应用技术培训
随着互联网.移动互联网和物联网的发展,我们已经切实地迎来了一个大数据 的时代.大数据是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫的 ...
- [druid]大数据挑战——如何使用Druid实现数据聚合
-- 知道你为什么惧组件很多的一些开源软件? 因为缺乏阅读能力. 最近我接手了druid+kafka+elk一套等日志系统. 但是我对druid很陌生, 周旋了几天, 官网文档快速开始照着做了下. 看 ...
- 大数据:从开源告诉你身边的IT故事
最近我们Team利用Dream分布式计算平台,做了这样一件事情,将Github的大量数据通过爬虫抓取下来,通过分析后,我们抽取最近一年中部分的开发者和项目信息,得到了如下有趣的信息,故分享之,数据原汁 ...
- 开源分布式计算引擎 & 开源搜索引擎 Iveely 0.5.0 为大数据而生
Iveely Computing 产生背景 08年的时候,我开始接触搜索引擎,当时遇到的第一个难题就是大数据实时并发处理,当时实验室的机器我们可以随便用,至少二三十台机器,可以,却没有程序可以将这些机 ...
- 大数据与 AI 生态中的开源技术总结
本文由云+社区发表 作者:堵俊平 在数据爆炸与智能革命的新时代,新的平台与应用层出不穷,开源项目推动了前沿技术和业界生态快速发展.本次分享将以技术和生态两大视角来看大数据和人工智能技术的发展,通过分析 ...
- PayPal高级工程总监:读完这100篇论文 就能成大数据高手(附论文下载)
100 open source Big Data architecture papers for data professionals. 读完这100篇论文 就能成大数据高手 作者 白宁超 2016年 ...
- PayPal 高级工程总监:读完这 100 篇文献,就能成大数据高手
原文地址 开源(Open Source)对大数据影响,有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的推动作用:另一方面,开源也给大数据技术构 ...
随机推荐
- fuck'em
不要说GUNGHO的游戏,连逆转三国这种都没玩过,还是做手游的,表现的那么冠冕堂皇,还不只是个常规的做软件的而已.只是以做软件的程度来做游戏,能做出的是个JB.
- .net+easyui--combobox
一:预定义结构的 select 元素创建组合框(combobox)值固定写死 <select class="easyui-combobox" name="state ...
- MySQL的链接,查看数据库,使用数据库,查看表
MySQL的链接,查看数据库,使用数据库,查看表 mysql> show databases; +--------------------+ | Database | +------------ ...
- StringBuffer跟StringBuilder以及HashMap跟HashTable
StringBuffer是线程安全的 HashTable是线程安全的,但HashMao单线程程序中的性能比HashTable要高,对了HashTable用(add),HashMap用的(put)
- sql server varchar和nvarchar的区别
一.前言 在了解varchar 和nvarchar之前咱们先了解一下这些词的字面和常用意思,以方便我们更好的使用: SQL SERVER中生成的语句中,字符串前加N.N 前缀必须是大写字母.是Unic ...
- OS X环境下SVN回滚工程到指定版本,回滚指定文件到指定版本
1.打开命令行终端 2.cd + 工程或文件目录 3.svn update 工程目录或文件目录 -r 版本号 在Xcode中选中文件,右键选择''show in finder''(也可以用快捷键,不过 ...
- 记录关于使用ADO.NET 连接池连接Oracle时Session信息不更新的坑
最近的一个项目中,由于界面查询的数据量比较大,关联的表比较多,有些数据查出来需要临时保存起来供后面的查询使用,于是想到了用oracle的临时表来实现这个需求.大家都知道,oracle的临时表有两种:事 ...
- Library vector Type
vector的定义 vector是C++标准库里最常用的容器,它之所以被称为容器,是因为它可以存放多个对象,所有在用一个容器中的对象都应该具有相同的类型. vector也是一个类模板,这也是它能存放多 ...
- boost库----enable_shared_from_this类的作用和实现原理
使用boost库时,经常会看到如下的类 class A:public enable_share_from_this<A> 在什么情况下要使类A继承enable_share_from_thi ...
- MySQL分库分表备份脚本
MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...