博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Phoenix Tips (3) 加盐
阅读量:5075 次
发布时间:2019-06-12

本文共 1357 字,大约阅读时间需要 4 分钟。

因为HBase 数据储存按照 row key 排序,如果HBase表的 row key 是单调递增的,则HBase 容易有RegionServer 的局部热点问题。加盐可以缓解这个问题。

create table H3 (id varchar not null primary key, cf1.a varchar, cf2.b varchar) SALT_BUCKETS=20;

 
只能在创建表格时候加,创建后不可更改。

alter table h1 set salt_buckets=10;

Error: ERROR 1024 (42Y83): Salt bucket number may only be specified when creating a table. tableName=H1

加盐后的注意事项:

a、sequential scan 返回的结果可能不是自然排序的,如果sequential scan使用了LIMIT语句,将与不加盐的情况不一样。

b、 Spit point:If no split points are specified for the table, the salted table would be pre-split on salt bytes boundaries to ensure load distribution among region servers even during the initial phase of the table. If users are to provide split points manually, users need to include a salt byte in the split points they provide.

c、Row Key 排序:Pre-spliting also ensures that all entries in the region server all starts with the same salt byte, and therefore are stored in a sorted manner. When doing a parallel scan across all region servers, we can take advantage of this properties to perform a merge sort of the client side. The resulting scan would still be return sequentially as if it is from a normal table

实际上是改写了Row Key,添加了一个prefix

new_row_key = (++index % BUCKETS_NUMBER) + original_key
数据存储到 Buckects_Number 个Bucket中 ,每个Bucket的Prefix 相同,在query的时候,同时在各个Bucket进行。

转载于:https://www.cnblogs.com/leeeee/p/7276377.html

你可能感兴趣的文章
代码书写格式
查看>>
Google 搜索知识
查看>>
Selenium 设置管理cookie,超时时间
查看>>
2. CNN卷积网络-前向传播算法
查看>>
nginx负载均衡和lvs负载均衡的比较分析
查看>>
Hadoop学习笔记(1)(转)
查看>>
C# 笔记 Func<TResult> 委托、Action<T> 委托
查看>>
数据库之MySQL(三)
查看>>
C# 打印机Win32 API,用来探测打印状态
查看>>
hdu 5339 递归枚举
查看>>
mysql 使用积累
查看>>
编程王道,唯“慢”不破
查看>>
Ubuntu16.04.3安装并配置samba方法
查看>>
根据构建类型动态设置AndroidManifest.xml文件中的meta-data
查看>>
[转载] Oracle10g安装
查看>>
[转载] 百科全说——漆浩:怎样健康饮酒远离误区(11-03-10)
查看>>
类数组对象:arguments
查看>>
directive(E).点击显示收起
查看>>
js中的关键字 var
查看>>
L2-005 集合相似度
查看>>