5 回答
TA贡献1852条经验 获得超7个赞
你要考虑几个点。
1 Region 压力
2 Region 分区
首先 自增来做不是不可以。 但是有很大的局限性。 比如你用自增做主键了。 那么你的 Region 几乎都在一台机器上, 发挥不出集群的性能, 这样的设计将导致效率低下。
如果你这样做了, 那么挽救办法就是 Region 分区。 假设你分区 以数字分区。 那么可以打散Region的分类。 那么第二个问题:
此时, 你的HBase 不是只为这一个 自增而做的。 那么你提前做好的时间分区将会导致其他的非时间rowkey 集中。 且业务数据量需要考虑。
TA贡献1831条经验 获得超4个赞
1.取样,先随机生成一定数量的rowkey,将取样数据按升序排序放到一个集合里
2.根据预分区的region个数,对整个集合平均分割,即是相关的splitKeys.
3.HBaseAdmin.createTable(HTableDescriptor tableDescriptor,byte[][] splitkeys)可以指定预分区的splitKey,即是指定region间的rowkey临界值.
TA贡献1865条经验 获得超7个赞
regionServer 其实是hbase的服务,部署在一台物理服务器上,region有一点像关系型数据的分区,数据存放在region中,当然region下面还有很多结构,确切来说数据存放在memstore和hfile中。我们访问hbase的时候,先去hbase 系统表查找定位这条记录属于哪个region,然后定位到这个region属于哪个服务器,然后就到哪个服务器里面查找对应region中的数据
TA贡献1793条经验 获得超6个赞
Region是HBase数据存储和管理的基本单位。
一个表中可以包含一个或多个Region。
每个Region只能被一个RS(RegionServer)提供服务,RS可以同时服务多个Region,来自不同RS上的Region组合成表格的整体逻辑视图。
添加回答
举报