解密 云HBase时序引擎OpenTSDB 优化技术

  • 时间:
  • 浏览:1



            

  OpenTSDB                                                                  HBase

上述2种模式,云HBase产品都能提供支持。

可不须要看过会有另有有有另一个数倍流量的爆发,要持续过后 都还后能 消化。

时序数据库是专门存放随着时间推移而不断变化的数据。近些年,随着IoT等概念的流行,时序数据库成为数据库另有有有另一个相对独立的领域逐渐受到重视,广泛应用于物联网、监控系统、金融、医疗和零售等多种场景。

当然有!亲戚亲戚亲戚亲们可不须要把压缩的逻辑倒进HBase结构去。可能性HBase四种 就须要对HFile做合并工作,这事先HBase四种 就会读写数据文件,这每项对HDFS的IO不需要少,而亲戚亲戚亲戚亲们通过hook在HBase读出数据后,替换掉要写入的数据(即压缩好的数据)。

salt四种 东西最好根据自己HBase集群规模去配置,它有另有有有另一个配置:

独立部署,即与多个业务共享另有有有另一个HBase。适合时序业务较小,可能性用不满HBase资源。

时间如流水,一去不复返。自古不乏对时间流逝的感慨,而现代可能性有可是我技术记录流逝的过去。亲戚亲戚亲戚亲们可不须要拍照,可不须要录像,当然还可不须要用时序数据库!

这里亲戚亲戚亲戚亲们后会 有四种 的大问题,直接通过qualifier长度是4还是2不就能判断是秒级精度的数据点,还是毫秒了么?缘何还须要MS flag另另有有有另一个 另有有有另一个标记信息?阅读下面的“压缩”每项,就能知道为四种 。

没办法 亲戚亲戚亲戚亲们通过 band.heartbeat  + id=1  就能查询到编为1的手环整理到的心跳信息。

混合部署,即TSDB进程和RS在另有有有另一个VM内。适合时序业务较重,须要独享HBase。

没办法 云上的用户如何构建另有有有另一个存储海量数据的时序数据库呢?笔者这里推荐使用 云HBase + OpenTSDB 方案。云HBase是使用阿里多年优化过的HBase内核版本,本文不作太大介绍,详情请看产品主页。

OpenTSDB是一款基于HBase构建的时序数据库,它的数据存储完整篇 交给HBase,四种 没办法 任何数据存储。所有节点是对等的,可是我部署起来嘴笨 是非常方便的。可能性基于HBase,可是我四种 就具备了横向扩展,存储海量数据的能力。常见的部署模式有2种,四种 分离部署,四种 混合部署。





实现上面四种 功能,当然须要一定内核开发量。喜讯为社 写是通过云HBase购买页面购买的时序引擎,可能性自带了上述功能。不管是分离部署模式,还是混合部署模式。

四种 功能的好处显而易见,消除峰值节省成本,提升集群稳定性。另另有有有另一个 亲戚亲戚亲戚亲们对另有有有另一个现有的HBase集群空闲资源需求就后会 没办法 高了,完整篇 可不须要复用了。下面是使用此功能后,同样只做写入的测试集群的流量情况汇报:

举个例子,比如亲戚亲戚亲戚亲们监控另有有有另一个手环整理的心跳信息,没办法 亲戚亲戚亲戚亲们可不须要另另有有有另一个 定义:

四种 设计几次特点:

查询的事先会 并发 tsd.storage.salt.buckets   个Scanner到HBase上,可是我可能性四种 配置太大,对查询影响比较大,容易打爆HBase。这里嘴笨 是另有有有另一个权衡,写入热点和查询压力。默认20嘴笨 我自己嘴笨 怪怪的多,配置3~8就差太大了,当然实际效果还和metric设计有关,可能性在另有有有另一个metric里设计了可是我时间线,那就得配置可是我bucket。在另有有有另一个metric中设计太大时间线,会影响OpenTSDB的查询波特率,可是我不建议没办法 做。

四种 参数也是设置了就都还后能 改的,可是我也是要一过后刚开始了了规划好。



很明显,每个KV都记录了rowX,那rowX可是我另有有有另一个空间浪费。四种 空间不仅影响成本,还影响查询波特率(毕竟数据多了)。压缩做的事情可是我把多个小KV合成另有有有另一个大KV,减少这每项浪费。可是我压缩的事先会 涉及到对HBase的“读-写-删”,这可是我整点HBase IO流量的来源。

没办法 亲戚亲戚亲戚亲们有没办法 土法子,既做压缩,一起去又消除这每项HBase IO呢?

。首先亲戚亲戚亲戚亲们要明白OpenTSDB缘何要做压缩?在压缩些四种 东西?

这是列名(HBase中称为qualifier)的格式,可不须要看过毫米级须要多出另有有有另一个字节。可是我可能性你的整理间隔不须要精确到毫秒级别,那请一定使用秒级(10位整数)。Value都还后能 存储整数和浮点,可是我有另有有有另一个bit存储Float flag。

salt:打散同一metric不一起去间线的热点

metric, tagK, tagV:实际存储的是字符串对应的UID(在tsdb-uid表中)

timestamp:每小时数据地处一行,记录的是每小时整点秒级时间戳

它们长度默认是三个字节,即最多都还后能 分配 2^24=16777216 个UID。可不须要通过四种 参数调整:

一根绳子 绳子 时间线由 Metirc + 多个tag 唯一选取,时间线上会有源源不断的数据点(Data Point)写入,数据点由时间戳和值组成。OpenTSDB支持秒级(10位整数),毫秒级别(13位整数)四种 时间精度。

逝者如斯夫,不舍昼夜。

                                                       —— 孔子

OpenTSDB有个很常见或者很麻烦的四种 的大问题,可是我整点事先对HBase对流量冲击。下面2张图是亲戚亲戚亲戚亲们另有有有另一个测试集群只做写入对效果:

注意

集群可能性写过数据后就无法修改,可是我最好是一过后刚开始了了就选取好,建议另有有有另一个字节。可能性使用压缩技术后,RowKey多占的几次字节可不须要忽略,下文会提到。

过去1另有有有另一个月时序数据库(Time Series DBMS)热度不断增长

前面提到过OpenTSDB一行一小时的特点,没办法 一行里会有可是我KV。皮下组织上看起来好像没四种 四种 的大问题,或者实际上对比逻辑视图和物理视图或者你发现其他四种 的大问题。