hbase表设计原则

原创 2018年04月15日 22:05:26
1、列族的数量及列族的势

建议将HBase列族的数量设置的越少越好。当强,对于两个或两个以上的列族HBase并不能处理的很好。这是由于HBase的Flushing和压缩是基于Region的。当一个列族所存储的数据达到Flushing的阈值时,该表中所有列族将同时进行Flushing操作。这将带来不必要的I/O开销,列族越多,该特性带来的影响越大。

此外,还要考虑到同一个表中不同列族所存储的记录数量的差别,即列族的势(Cardinality)。当两个列族数量差别过大时会使包含记录数量较少列族的数据分散在多个Region上,而Region有可能存储在不同的RegionServer上。这样,当进行查询或scan操作的时候,系统效率将会受到影响。

2、行键(RowKey)的设计

首先应该避免使用时序或单调(递减/递增)行键。因为当数据到来的时候,HBase首先需要根据记录的行键来确定存储的位置,即Region的位置,如果使用时序或单调行键,那么连续到来的数据将被分配到同一个Region中,而此时系统的其他Region/RegionServer处于空闲状态,这是分布式最不希望看到的状态。

3、尽量最小化行键和列族的大小

在HBase中,一个具体的值由存储该值的行键、对应的列(列族:列)以及该值的时间戳决定。HBase中索引是为了加速随即访问的速度,索引的创建是基于“行键+列族:列+时间戳+值”的,如果行键和列族的大小过大,甚至超过值本身的大小,纳闷将会增加索引的大小。并且在HBase中数据记录往往非常之多,重复的行键、列将不但使索引的大小过大,也将加重系统的负担

4、版本的数量

默认情况下为3个,可以通过HColumnDescriptor进行设置,建议不要设置的过大

HBase之表的设计原则

1、列族的数量及列族的势 建议将HBase列族的数量设置的越少越好。当强,对于两个或两个以上的列族HBase并不能处理的很好。这是由于HBase的Flushing和压缩是基于Region的。当一个列...
  • super_ozman
  • super_ozman
  • 2015-08-28 14:54:15
  • 3395

HBase的RowKey设计原则

HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定...
  • liuguangfudan
  • liuguangfudan
  • 2016-06-20 17:44:46
  • 814

Hbase设计以及优化

1、表的设计 1.1、Column Family 由于Hbase是一个面向列族的存储器,调优和存储都是在列族这个层次上进行的,最好使列族成员都有相同的"访问模式(access pattern)"和大小...
  • woshiwanxin102213
  • woshiwanxin102213
  • 2014-01-22 17:32:49
  • 10336

HBase RowKey的设计原则

HBase是三维有序存储的,三维指的是:RowKey(行健)、column key(columnFamily和qualifier)、TimeStamp(时间戳),通过这三个维度我们可以对HBase中的...
  • lzm1340458776
  • lzm1340458776
  • 2015-04-08 15:48:21
  • 11401

Hbase rowkey 设计原则

HBase是三维有序存储的,三维指的是:RowKey(行健)、column key(columnFamily和qualifier)、TimeStamp(时间戳),通过这三个维度我们可以对HBase中的...
  • bitcarmanlee
  • bitcarmanlee
  • 2016-05-24 09:49:12
  • 4528

Hbase 表设计

HBase与RDBMS的区别在于:HBase的Cell(每条数据记录中的数据项)是具有版本描述的(versioned),行是有序的,列(qualifier)在所属列簇(Column families)...
  • xiaoshunzi111
  • xiaoshunzi111
  • 2015-10-14 17:25:51
  • 906

hbase表结构模型

hbase 表结构模式、表属性、预分区设计原则
  • zychun1991
  • zychun1991
  • 2016-07-11 22:25:51
  • 448

HBase学习之HBase的RowKey设计原则

HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定...
  • ljp812184246
  • ljp812184246
  • 2016-09-13 15:17:53
  • 7144

HBase学习之五:HBase的RowKey设计原则

HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定...
  • javajxz008
  • javajxz008
  • 2016-07-12 22:05:21
  • 20203

分布式数据库HBase表设计

比较常用的数据库是关系型数据库,但很多场景下nosql数据库会更加擅长,从sql到nosql实施的第一步就是设计表结构,这是两种不同的思维方式,这里说下HBase表设计。需求:需要一张stock表用于...
  • wangyangzhizhou
  • wangyangzhizhou
  • 2016-06-15 12:10:58
  • 4416
收藏助手
不良信息举报
您举报文章:hbase表设计原则
举报原因:
原因补充:

(最多只允许输入30个字)