Phoenix Salted Table
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. 实践
CREATE TABLE SALT_TEST (a_key VARCHAR PRIMARY KEY, a_col VARCHAR) SALT_BUCKETS = 4;UPSERT INTO SALT_TEST(a_key, a_col) VALUES('key_abc', 'col_abc');
UPSERT INTO SALT_TEST(a_key, a_col) VALUES('key_ABC', 'col_ABC');
UPSERT INTO SALT_TEST(a_key, a_col) VALUES('key_rowkey01', 'col01');
从phoenix sqlline.py查询数据,没感觉有什么不同:
通过hbase shell 观察验证,观察到phoenix确实是在rowkey的第一个字节插入一个byte字节:
这里我们可以判断phoenix是在写入数据的时候做了处理,在插入数据的时候会计算一个byte字段并将这个字节插入到rowkey的首位置上;而在读取数据的API里面也相应地进行了处理,跳过(skip)第一个字节从而读取到正确的rowkey(注意只有salted table需要这么处理),所以只能通过phoenix接口来获取数据已确保拿到正确的rowkey。
Phoenix Salted Table相关推荐
- Phoenix / HBase中的salted table
What are salted tables 为了避免读写HBase表数据时产生hot-spot问题,我们使用Phoenix来创建表时可以采用salted table. salted table可以自 ...
- Phoenix创建盐表
1.Phoenix创建盐表 官网地址:http://phoenix.apache.org/salted.html 创建一个盐表: CREATE TABLE test.test_salt (id VAR ...
- phoenix导出csv文件
原文地址:https://www.cnblogs.com/alexgl2008/articles/12852013.html?share_token=E21CB83E-5BBF-4D90-AF9B-5 ...
- Phoenix使用SALT_BUCKETS创建预分区表
1. 基础知识 Phoenix Salted Table是phoenix为了防止hbase表rowkey设计为自增序列而引发热点region读和热点region写而采取的一种表设计手段.通过在创建表的 ...
- Phoenix使用SALT_BUCKETS创建预分区
1. 基础知识 Phoenix Salted Table是phoenix为了防止hbase表rowkey设计为自增序列而引发热点region读和热点region写而采取的一种表设计手段.通过在创建表的 ...
- phoenix的元数据一般存在哪里_Phoenix常用操作记录-阿里云开发者社区
Apache Phoenix 常用操作 基础知识 1****.****Phoenix 主要技术点 a.将SQL转化为HBase Scan,将结果封装为JDBC Result Set. b.表的元数据保 ...
- Phoenix命令及语法
Phoenix命令及语法 官网 :http://phoenix.apache.org/language/index.html#select 基本命令: 登录相应机器 启动phoenix的客户端 首先s ...
- Phoenix二级索引那些事儿(下)
http://www.icaijing.com/hot/article4940159/ Phoenix二级索引那些事儿(下) 作者:中兴大数据| 发表时间:2015-7-30 03:31:18 索引配 ...
- Phoenix创建二级索引
为什么需要Secondary Index 对于HBase而言,如果想精确地定位到某行记录,唯一的办法是通过rowkey来查询.如果不通过rowkey来查找数据,就必须逐行地比较每一列的值,即全表扫瞄. ...
最新文章
- Android为TV端助力context转换类型
- 全球及中国自动驾驶行业应用领域及投资前景展望报告2022-2028年版
- vue如何把数组转为json数组_vue.js,_vuejs Ajax取得一个数据json数组,vue.js - phpStudy...
- 深入比特币原理(一)——比特币白皮书总结与点评
- 华为Mate40 Pro最新渲染图曝光:双孔瀑布屏有戏 再度惊艳
- 结合中国古典文化取名 华为意在把传说化为现实奇迹
- 将mysql表数据拼接成oracle的insert语句
- JAVA 表格组件 + rs.beforeFirst()使用
- c语言程序设计实践与案例周讯东,第1章 C语言程序设计导引免费阅读_C程序设计与项目实践免费全文_百度阅读...
- 《Android框架揭秘》——2.2节搭建Android平台编译环境
- ART中 MIR -- LIR -- 机器码 的流程
- 条码扫描模块通过什么编程才能使用呢?
- 360浏览器打不开微信的连接服务器,360浏览器打不开网页怎么办-解决360浏览器打不开网页的方法 - 河东软件园...
- 如何让搜狗收录方法分享
- iOS 上架流程图文详解2022版 (上)
- Win10实现截取视频并改为gif
- Unsafe code may only appear if compiling with /unsafe. Enable “Allow ‘unsafe‘ code“
- 搜索引擎技术的概要以及相关知识
- Excel数据分析:从入门到精通
- windows10神州网信政府版“麦克风”权限如何打开?
热门文章
- APG(Accelerate Proximal Gradient)加速近端梯度算法 和 NAG(Nesterov accelerated gradient)优化器原理 (一)
- Altium Designer使用简介
- 为什么滴滴司机“恨”滴滴?
- KM算法(DFS版,优化DFS版,BFS版)
- java中实例变量指什么呢?
- Stacked Denoising Autoencoders (SDAE)
- 小程序服务器token,小程序-登录-token
- Python基础(2.3w字,无一废话)---最新更新2021.7.18
- 抖音大火的AI虚拟人,画的猫为啥这么丑?
- linux用gzip文件怎么打开,linux下怎么解后缀名是gzip的文件?