HBase中冷热数据处理以及资源分配解决方案

资源紧张的情况下如何保证最近写入数据查询
 现状 使用云主机,硬件层面不可控,只能从软件和设计角度去考虑了
优化手段 优化原理 说明
将(Long.MAX_VALUE – timestamp)加到rowkey 如果最近写入HBase表中的数据是最可能被访问的,可以考虑将时间戳作为row key的一部分,由于是字典序排序,所以可以使用Long.MAX_VALUE – timestamp作为row key,这样能保证新写入的数据排在最前面,在读取时可以被快速命中。 快速命中,较少IO,查询也就快
适当减少memstore的flush 写数据先写入memstore,超多大小才flush到磁盘,可以把阈值适当调大,使刚写入的热数据在内存里待一会,增大缓存命中率,同时也降低了写磁盘的次数 阈值不能太大,否则flush比较慢
hbase.regionserver.global.memstore.upperLimit
使用堆外内存做二级缓存(blockcache) 热数据不容易被淘汰,命中率高,有一定的效果 LRU
不能以单次读写论英雄
云主机没有配ssd,也无法使用二级缓存
按天建表+最近时间段常驻内存
(设置将冷数据表关闭blockcache,留更多缓存空间给热数据)
按时间段建表,比如按天,当天的可以常驻内存,其余的动态设置为不常住内存; 具体时间段怎么界定有待讨论,不到万不得已不建议时间段搞得很小
按天建表+当天适当增大副本 副本数越多,数据本地性就越强,查询会变快 副本数不能过多,占用大量存储;冷数据可以降副本以缓解整体存储的占用

你可能感兴趣的:(Hbase,大数据)