hash(主键) + 年月日时(2019062315)
这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中,效果最好。
列族固定,只有一个,设为f,标签为分钟加上秒数:
分秒(5623)
如果需要精确到毫秒,可以为列族f设置有多个版本或者将标签设计为分秒毫秒(5623142)或者分秒.版本号(5623.1)
一个regionserver可以管理的region数量和列族数量与每个列族缓存的大小有关,计算公式如下:
我这里只分了三个region,用hbase shell命令创建表,设置预分区数量为3
下图中,可以看到,预分区以后,数据的读写访问请求数量均匀分布在3台RegionServer上,避免了热点问题。
你要考虑几个点。1 Region 压力
2 Region 分区
首先 自增来做不是不可以。 但是有很大的局限性。 比如你用自增做主键了。 那么你的 Region 几乎都在一台机器上, 发挥不出集群的性能, 这样的设计将导致效率低下。
如果你这样做了, 那么挽救办法就是 Region 分区。 假设你分区 以数字分区。 那么可以打散Region的分类。 那么第二个问题:
此时, 你的HBase 不是只为这一个 自增而做的。 那么你提前做好的时间分区将会导致其他的非时间rowkey 集中。 且业务数据量需要考虑。
方法如下:1、rowkey是行的主键,Hbase支持3种检索方式,通过单个Rowkey访问,按照某个Rowkey键值进行get *** 作,获取唯一一条记录。
2、通过Rowkey的range进行scan,通过设置startRowKey和endRowKey,在这个范围内进行扫描。按指定的条件获取一批记录。
3、全表扫描,直接扫描整张表中所有行记录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)