Hbase生产实践
背景
HBase是一个分布式的、面向列的开源数据库,它是hadoop生态圈的一员,有海量数据存储能力,对资源的消耗也相对较小,但同时查询能力也有局限,因此如何正确的使用hbase非常关键。
关于hbase
一个表可以有上亿行,上百万列
面向列(族)的存储和权限控制,列(族)独立检索。
对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
选择完成时,被选择的列要重新组装
INSERT/UPDATE比较麻烦
Hbase基本概念
Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上,但并不是存储的最小单元。
Region由一个或者多个Store组成,每个store保存一个columns
family,每个Strore又由一个memStore和0至多个StoreFile 组成。memStore存储在内存中, StoreFile存储在HDFS上。
HBase通过将region切分在许多机器上实现分布式。也就是说,你如果有16GB的数据,只分了2个region, 你却有20台机器,有18台就浪费了。
数目太多就会造成性能下降,现在比以前好多了。但是对于同样大小的数据,300个region比1000个要好。
数目太少就会妨碍可扩展性,降低并行能力。有的时候导致压力不够分散。这就是为什么,你向一个10节点的HBase集群导入200MB的数据,大部分