HBase学习笔记——基于HBase的日志系统的性能优化
我之前参与过一个日志系统的开发,存储用HBase。我简单罗列下用到的HBase优化,备忘。以后把它整理成更友好的介绍性文章。 系统简介 有一张大的日志数据表,保存所有日志。row key是 hash + app id + log-severity + timestamp + host等,cell保存日志正文数据。 可以看到row key的hash保证日志散列在各个region中,写入、查询的负载均衡。但是无法通过它进行范围查询,所以为不同查询模式,建立了多张索引表。 为不同的日志级别(DEBUG, INFO, WARN, ERROR, FATAL)分别建立了一张索引表。在每张索引表中,row key是 app id + timestamp + host等。也就是说,用于通常选择一个应用,加上时间范围,也可以进一步选择一台应用服务器,来查询日志。 表结构相关优化 多条日志打包,压缩保存。 我们发现,如果简单地将一条日志保存为HBase表中的一行,会导致HBase表记录数很大,row key数量很大,region数量很多,HBase元数据开销很大。这会造成HBase集群不稳定。 于是,我们...