结合接下来这节中的 Rowkey salt 设计就可以平均地将数据分散在各 Region 中。
Rowkey 和列设计
图1:Hbase 的存储道理
Rowkey 设计由 salt(1 byte) 办事器 ID(4 byte) timestamp(4 byte) 监控特点 ID(4 byte) 的方法构成:
- Salt 是应用办事器 id 进行 hash 后对单表初始 Region 数进行求余所得的一位字节,用来将不合办事器的监控数据平均分布在表的各个 Region 中。
- Rowkey 第二部分为办事器 ID,办事器监控数据萌芽平日是萌芽指定办事器的某些特点,因而将办事器 ID 放在第二部分可以大年夜幅进步萌芽效力。
- timestamp 实际上是一个 time-base,用于将一段时光内的数据存放在同一行。
- attr_id 为特点 id,区分具体监控指标。
HBase 成长至今已是个比较成熟的开源分布式数据库,其高机能,高可用性及高可扩大的特点,可为海量数据的存取供给强大年夜动力。
这里应用一个字节 t 作为列族,列知名称本身并没什么含义,重要强调只应用一个列族存储数据,尽量小的名称作为名字。应用多列族每个 Region 会对应有多个 Memstore,会加重内存消费,在此场景下不实用。
列名(在 Hbase 中称 Qualifier)为时光偏移,与 Rowkey 中的 time-base 一路构成 timestamp 标识数据点的精确时光。
基于列的 Compaction
在介绍列 Compaction 之前,我们先看下 Hbase 数据的具体存储构造:
图2:表构造与存储构造
如图 2 所示,为表构造以及对应的存储构造示例,在 Hbase 或表格存储这类底层采取 LSM-tree 的数据库中,表数据会按列存储。
每行中的每一列在存储文件中都邑以 Key-value 的情势存在于文件中。个中 Key 的构造为:行主键 列族 列名,Value 为列的值。
该种存储构造的特点是:
- 每行主键会反复存储,取决于列的个数。
- 列名会反复存储,每一列的存储都邑携带列名。
- 存储数据按 row-key排序,相邻的 row-key会存储在相邻的块中。
可以留意到,在 Hbase 的物理存储中,每一列都邑存储该列的 rowkey 和列族信息,在列很多的情况下这些反复的信息将占用大年夜量的存储空间。
本文将大年夜当前存储架构存在的问题出发,介绍大年夜测验测验应用 Opentsdb 到自行设计 Hbase 存储筹划来存储 TMP 办事器海量监控数据的实践过程。
是以这里参考 Opentsdb 的做法,将同一 time-base 内的所有列归并紧缩为一列(留意这里说的列 Compaction 与 HBase 本身的 Compation 是完全不合的,Hbase 的 Compation 是指将多个小的 HFile 归并为一个大年夜的 HFile)。
Opentsdb 的列 Compaction 由数据量大年夜小和时光距离合营触发,在并发写操作巨大年夜的时刻会对 Hbase 产生很大年夜的读写压力,并且会壅塞写操作,机能表示较差。
基于这些原因,TMP 监控数据在天天凌晨对前一天的数据表进行全表扫描,并对每行数据的列名(Qualifier)和 Value 进行归并,紧缩为一列。在现网实际情况中可以看到,列紧缩后的数据表比紧缩前占用存储空间削减接近90%,如下图:
Hbase 机能调优
Hbase 机能调优是个比较复杂的工作,网上可以看到很多专门讲 Hbase 调优的文┞仿。
这里仅挑出几个比较立竿见影的点来分享:
Heap 和 Memstore 大年夜小。尽量调大年夜 RegionServer 的 heap 大年夜小,壬烫蛛量弘远年夜于萌芽量,可以增大年夜 Memstore 与 BlockCache 的比例,如 0.5 : 0.3 。原因是 HBase 基于 LSM Tree 的存储引擎,数据会先缓存至 Memstore 再刷入磁盘。
Snappy 紧缩。对数据表启用 Snappy 紧缩,可以削减磁盘 IO,增大年夜写人道能。
Hbase 自身的 Compation 线程数。Hbase 在 flush 和 compaction 的时刻会对 rowkey 进行排序操作,恰当增大年夜 compaction 线程,可加倍充分应用 CPU,增长机能。具体可将 hbase.regionserver.thread.compaction.small/large 调节为 5。
GC 调优。GC 参数设置欠妥会触发 Stop the world 这类严重影响机能的问题。
总结
推荐阅读
存储瓶颈会对存储延迟和虚拟机机能表示造成严重影响,是以治理员应当控制若何应用SIOC存储策略解决这种存储资>>>详细阅读
本文标题:日均采集1200亿数据点,腾讯千亿级服务器监控数据存储实践
地址:http://www.17bianji.com/lsqh/36675.html
1/2 1