博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HBase 表的预分区是什么?为什么要预分区?如何预分区?
阅读量:4073 次
发布时间:2019-05-25

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

前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见

正文

当一个table刚被创建的时候,Hbase默认的分配一个region给table。

也就是说这个时候,所有的读写请求都会访问到同一个regionServer的同一个region中,这个时候就达不到负载均衡的效果了,集群中的其他regionServer就可能会处于比较空闲的状态。

解决这个问题可以用预分区(pre-splitting),在创建table的时候就配置好,生成多个region。

为何要预分区?

  • 增加数据读写效率
  • 负载均衡,防止数据倾斜
  • 方便集群容灾调度region
  • 优化Map数量

如何预分区?

每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。

手动指定预分区

create 'person','info1','info2',SPLITS => ['1000','2000','3000','4000']

在这里插入图片描述

  • 也可以把分区规则创建于文件中
cd /opt/bigdata/vim split.txt
  • 文件内容
aaabbbcccddd
  • 执行
create 'student','info',SPLITS_FILE => '/opt/bigdata/split.txt'
  • 成功后查看web界面

在这里插入图片描述

HexStringSplit 算法

HexStringSplit会将数据从“00000000”到“FFFFFFFF”之间的数据长度按照n等分之后算出每一段的其实rowkey和结束rowkey,以此作为拆分点。例如:create 'mytable','base_info','extra_info',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}

在这里插入图片描述

转载地址:http://bkgji.baihongyu.com/

你可能感兴趣的文章
linux和windows内存布局验证
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>