1. 基础知识
Phoenix Salted Table是phoenix为了防止hbase表rowkey设计为自增序列而引发热点region读和热点region写而采取的一种表设计手段。通过在创建表的时候指定SALT_BUCKETS来实现pre-split(预分割)。如下表示创建表的时候将表预分割到20个region里面。
CREATE TABLE SALT_TEST (a_key VARCHAR PRIMARY KEY, a_col VARCHAR) SALT_BUCKETS = 20;
默认情况下,对salted table创建二级索引,二级索引表会随同源表切进行Salted切分,SALT_BUCKETS与源表保持一致。当然,在创建二级索引表的时候也可以自定义SALT_BUCKETS的数量,phoenix没有强制它的数量必须跟源表保持一致。
2. 实现原理
Phoenix Salted Table的实现原理是在将一个散列取余后的byte值插入到 rowkey的第一个字节里,并通过定义每个region的start key 和 end key 将数据分割到不同的region,以此来防止自增序列引入的热点问题,从而达到平衡HBase集群的读写性能的目的。
salted byte的计算方式大致如下:
hash(rowkey) % SALT_BUCKETS
SALT_BUCKETS的取值为1到256。
默认下salted byte将作为每个region的start key 及 end key,以此分割数据到不同的region,这样能做到具有相同salted byte的数据能够位于同一个region里面。
3. SALT_BUCKET的本质
Sa

本文详细介绍了Phoenix的Salted Table机制,旨在解决HBase表的热点region问题。通过在创建表时指定SALT_BUCKETS进行预分区,数据会被均匀分布到多个region,提高读写性能。内容包括基础知识、实现原理、SALT_BUCKET的本质以及实例展示,特别强调使用Phoenix SQL进行数据读写的重要性,以避免因HBase API导致的问题。
最低0.47元/天 解锁文章
424

被折叠的 条评论
为什么被折叠?



