读书笔记-HBase in Action-第三部分应用-(1)OpenTSDB
OpenTSDB是基于HBase的开源监控系统,能够支持上万规模集群监控和上亿数据点採集。
当中TSDB代表Time Series Database,OpenTSDB在时间序列数据的存储和查询上都做了相当多的优化工作。
架构Overview
概念上OpenTSDB由三部分组成:tcollector数据採集、tsd数据服务和HBase数据存储。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWRvbnR3YW50b2Jl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
数据採集流程
如上图。tcollector后台进程执行在每台被监控的server上,管理数据收集脚本,定期执行,失败时重新启动,确保全部的监控数据发送给OpenTSDB。Tcollector将数据写入到tsd,和HBase解耦保持client的轻量级。Tsd通过类似telnet的协议收集数据。所以少量的tsd实例可以支持大量的tcollector写入进程。
数据查询流程
图中tsd负责和HBase进行数据交互,给前端提供HTTP查询接口。全部的tsd进程都是无状态的。这样查询模块能做到负载均衡、线性可伸缩和高可用。
HBase Schema设计
OpenTSDB存储的是时间序列metrics,来自于不同的server。数据有不同的种类,每一个点都包括时间戳和測量值。
并且终于来讲,数据对用户可用,OpenTSDB还必须支持在线数据可视化。这些因素都影响着HBase Schema设计。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWRvbnR3YW50b2Jl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
OpenTSDB包含两张表。tsdb表存储时间序列数据。tsdb-uid表存储ID相应关系。管理数据tags等。
Tsdb-uid表
Tsdb-uid包含id和name两个列族
前两行UID-to-name行的UID用于和tsdb表外键关联;后两行name-to-UID行用于支持tag名称的自己主动补齐(通过扫描rowkey高效实现)。
注意Column qualifier中的metrics代表数据种类,典型的值还包含tag name和tag value。
比方来自ubuntuserver的mysql.bytes_sent数据。当中mysql.bytes_sent为metrics,host为tag name,ubuntu为tag value。OpenTSDB通过metrics、tag name、tag value组合标记同一监控数据。
Tsdb表
Tsdb表的设计重点考虑支持日期范围查找、tag过滤。Tsdb表仅仅有t一个列族。
首先看rowkey设计:一開始是Metric UID。接着是四个字节的部分时间戳。仅仅到小时粒度,能保证同一指标依照时间顺序存储在一起,又能显著降低行数。
最后是全部的tag name和tag value UID,满足查询过滤需求。
接着看column qualifier:首先是时间戳剩余秒部分,后面通过四位掩码做一些额外标记。比方首位标记单元值是整数还是浮点数。
读书笔记-HBase in Action-第三部分应用-(1)OpenTSDB的更多相关文章
- HBase in Action前三章笔记
近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔 ...
- 读书笔记-HBase in Action-第一部分 HBase fundamentals
新项目准备上HBase.HBase眼下由组里某牛负责.本着学会使用HBase的目标,先阅读下HBase in Action,一共十章组织成三部分,须要学习的内容包含HBase基本实现原理,用法,Sch ...
- 读书笔记-HBase in Action-第三部分应用-(2)GIS系统
本章介绍用HBase存储.高效查询地理位置信息. Geohash空间索引 考虑LBS应用中常见的两个问题:1)查找离某地近期的k个地点.2)查找某区域内地点. 假设要用HBase实现高效查找,首先要考 ...
- 读书笔记-HBase in Action-第二部分Advanced concepts-(2)Coprocessor
Coprocessor是HBase 0.92.0引入的特性.使用Coprocessor.能够将一些计算逻辑下推到HBase节点,HBase由一个单纯的存储系统升级为分布式数据处理平台. Coproce ...
- Getting Started With Hazelcast 读书笔记(第二章、第三章)
第二章 起步 本章就相当简单粗暴了,用一个个例子说明hazelcast怎么用. 1.map,set,list这些集合类都是开箱即用的,只要从Hazelcast的实例中获取一份就行. 2.增加了Mult ...
- 【读书笔记】.Net并行编程(三)---并行集合
为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能.而System.Collections和System.Collections.Generic命名空 ...
- 【读书笔记】iOS-开发技巧-三种收起键盘的方法
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- 读书笔记-HBase in Action-第二部分Advanced concepts-(1)HBase table design
本章以山寨版Twitter为例介绍HBase Schema设计模式.广义的HBase Schema设计不仅仅包含创建表时指定项,还应该综合考虑Column families/Column qualif ...
- unix-环境高级编程-读书笔记与习题解答-第三篇
第一章 第五节 进程与控制 该小节比较粗略的阐述了unix操作系统中用于进程控制的三个函数,分别为 : fork , exec, waitpid, 其中 exec 有五种变体, 这些变体实现的功能全部 ...
随机推荐
- log4j教程 10、PatternLayout
如果想生成基于模式的特定格式的日志信息,那么可以使用 org.apache.log4j.PatternLayout 格式化日志信息. PatternLayout类扩展抽象 org.apache.log ...
- 解决no declaration can be found for element 'context:component-scan'
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- CKEditor+SWFUpload实现功能较为强大的编辑器(一)---CKEditor配置
CKEditor爆表的强大功能大家都有目共睹,号称最强大的在线编辑器,只要将文件复制到项目中,在添加引用,在一句代码就可以将普通的textarea变成华丽的编辑器 所谓一复制,一拖,一换就大功告成 但 ...
- Rails中nil? empty? blank? present?的区别
.nil? Ruby方法 .nil?方法被放置在Object类中,可以被任何对象调用,如果是nil则返回true 在Rails中只有nil对象才会返回true nil.nil? #=> true ...
- src-resolve: 无法将名称 'extension' 解析为 'element declaration' 组件。
activiti流程部署时,出现“src-resolve: 无法将名称 'extension' 解析为 'element declaration' 组件.”错误. 出错原因:项目所在路径中有中文.
- SDUT 2766-小明传奇2(母函数)
小明传奇2 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit1000ms Memory Limit 65536K ...
- 【SpringMVC学习11】SpringMVC中的拦截器
Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...
- mysql 语句要求
mysql 语句不可以有单引号,要把单引号替换为双引号!
- sql2000实现row_number
一.以PersonID,classid,dt_ClassData为条件进行分组,每个小组加序号,row_number在sql2005中不可用 方法一.sql2000及以上版本--以PersonID,c ...
- 用VS2010创建三层架构开发模式及三层架构的研究
三层架构的研究 三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则 各层的作用 1:数据数据访问层:主要是对 ...