使用技术HBase+Spring Boot

HBase 使用场景
瞬间写入量很大,常用数据库不好支撑或需要很高成本支撑的场景
数据需要长久保持,且量会持久增长到比较大的场景
HBase不适用于有join,多级索引,表关系复杂的数据模型

HBase基础架构
请输入图片描述

HBase写入流程
请输入图片描述

HBase读流程
请输入图片描述

HBase操作
请输入图片描述

过滤器能干什么
HBase 为筛选数据提供了一组过滤器,通过过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作
通常来说,通过行键、列来筛选数据的应用场景较多
基于行的过滤器
PrefixFilter:行的前缀匹配
PageFilter:基于行的分页
基于列和单元值得过滤器
SingleColumnValueFilter:对该列的单元值进行比较过滤
SingleColumnValueExcludeFilter:对该列的单元值进行比较过滤
比较过滤器
比较过滤器通常需要一个比较运算符以及一个比较器来实现过滤器
RowFilter、FamilyFilter、QualifierFilter、ValueFilter
请输入图片描述

传统数据库VS时序数据库

传统数据库仅仅记录了数据的当前值
时序数据库记录了以时间维度的所有值
时序数据库=传统数据库+时间戳?

时序数据库
时序数据库是基于时间的,多个维度的一系列的数据
时序数据库就是存放时序数据库的数据库,支持时序数据库的快速写入,持久化,多维度的聚合查询等等
时序数据库可以展现历史趋势、周期规律,进一步对未来做出预测分析等都是时序数据库适合的场景

时序数据库

influxDB和Prometheus都是自实现底层的存储
kairosdb底层使用Cassandra作为分布式存储引擎
OpenTSDB使用HBase作为存储引擎

Metroc:度量,相当于关系型数据库中的Table
Data point:数据点,相当于关系型数据库中的Row
Timestamp:时间戳,代表数据点产生的时间
Field:度量下的不同字段。存放随着时间戳的变化而变化的数据
Tag:标签。存放不随着时间戳变化的属性信息。Timestamp加上所有的Tags可以认为是Table的Primary Key

举一个栗子
请输入图片描述

下载地址:https://github.com/OpenTSDB/opentsdb/release
具体下载什么格式 rpm等
Rpm -ivh opentsdb-2.4.0.noarch.rpm

Vi opentsdb.conf
Mkdir -p /data/tsd_tmp
启动./tsdb tsd
如果是用阿里云的,那么需要把安全端口打开,你编辑新增的

OpenTSDB
OpenTSDB是基于HBase 存储的时序数据库,它可以发挥Hbase的分布式列存储特性
OpenTSDB 目前主要用于监控系统,收集大规模集群的监控数据进行存储和聚合查询。
请输入图片描述
TSD是一组无状态的节点,可以任意扩展,只依赖Hbase
TSD对外暴露Http和Telnet接口,支持数据的写入和查询

第一步,指定指标名称和时间范围
第二步,给定一个或多个标签名称和标签的值作为条件
第三步,执行查询操作,查询出所有的数据

查询10点到12点之间,所有ns下所有应用的空间使用量
查询10点到12点之间,ns1下的所有应用的空间使用量
查询10点到12点之间,ns1下的hive应用的空间使用量

OpenTSDB存储模型
OpenTSDB底层依赖于HBase,HBase的查询完全依赖于Rowkey
Rowkey的长度尽量短,通过加盐等方式避免热点,Hbase本身提供字典排序,查询时可以利用这些属性等等
请输入图片描述

优化一:缩短Rowkey
在Rowkey中有很多一部分的重复数据,重复的指标名称,标签等
metric、tag进行唯一标示,缩短metric、tag的长度

优化二:减少行数
按时间戳进行存储,每天会产生非常多行数据,造成存储浪费
高表转宽表

优化三:metric分桶
将metric放在首位虽然近似散列,但是同一metric数据过多也会产生热点问题,影响写入和查询效率。
通过tsd.storage.salt.buckets配置项对metric进行分桶(加盐)

怎么保证OpenTSDB 一直运行、采集是否重复
TCollector 简介
TCollector 是OpenTSDB的一个开源采集信息客户端,负责信息的采集,处理完成后按照tsdb的数格式发送到OpenTSDB

TCollector 把采集任务抽象为collector,除了自带的collector,用户也可以自己实现,高度可扩展
TCollector 负责保证collector的运行,从collector获取数据发送到tsdb,提供网络处理和数据重复处理

TCollector 示意图
请输入图片描述

TCollector架构图
请输入图片描述

标签: none

添加新评论