我们都知道,region在数据量大到一定程度的时候,会进行拆分(最开始由一个变成二个),而拆分的方式有三种,包括预拆分、自动拆分、手动强制拆分。下面就来介绍介绍拆分的方式。

预拆分

预拆分(pre-splitting)就是在建表的时候就定义好了拆分点的 算法,所以叫预拆分。

预拆分一部分的作用能减少rowkey热点,另外一部分能减轻region切分时导致的服务不可用。

(1)Hex拆分点

上面这条命令的意思就是新建一个叫my_split_table的表,并根据 HexStringSplit拆分点算法预拆分为10个Region,同时要建立的列族叫 mycf。建完后用hbase shell看一下结果。执行以下命令查出所有10个 Region的信息:

可以看到已经建立的10个Region,由于输出信息太多,我只截取其 中关于每一个Region的起始rowkey和结束rowkey的信息给你们看,这10 个Region的范围分别是:

  • STARTKEY => '', ENDKEY => '19999999'
  • STARTKEY => '19999999', ENDKEY => '33333332'
  • STARTKEY => '33333332', ENDKEY => '4ccccccb'
  • STARTKEY => '4ccccccb', ENDKEY => '66666664'
  • STARTKEY => '66666664', ENDKEY => '7ffffffd'
  • STARTKEY => '7ffffffd', ENDKEY => '99999996'
  • STARTKEY => '99999996', ENDKEY => 'b333332f'
  • STARTKEY => 'b333332f', ENDKEY => 'ccccccc8'
  • STARTKEY => 'ccccccc8', ENDKEY => 'e6666661'
  • STARTKEY => 'e6666661', ENDKEY => ''

这就是你预定了拆分点后的Region

(2)手动指定拆分点

手动指定拆分点的方法就是在建表的时候跟上SPLITS参数,比如:

自动拆分

拆分的策略有很多种,以下举例一个说明:ConstantSizeRegionSplitPolicy

早在0.94版本的时候HBase只有一种拆分策略。这个策略非常简单,从名字上就可以看出这个策 略就是按照固定大小来拆分Region。它唯一用到的参数是:

hbase.hregion.max.filesize  ------------region的最大大小,默认10GB

当单个Region大小超过了10GB,就会被HBase拆分成为2个Region。 采用这种策略后的集群中的Region大小很平均。

手动拆分

除了预拆分和自动拆分以外,你还可以对运行了一段时间的Region 进行强制地手动拆分(forced splits)。方法是调用hbase shell的 split方法,比如:

推荐方案

一开始可以先定义拆分点,但是当数据开始工作起来后会出现热点 不均的情况,所以推荐的方法是:

(1)用预拆分导入初始数据。

(2)然后用自动拆分来让HBase来自动管理Region。

建议:不要关闭自动拆分。

备注

region自动拆分默认选择Region当中最大Store下的最大Storefile文件中的midkey,而midkey其实只是在通过HFile获取了这个文件之前记录好的数据。在自动触发Split操作的前提下,大部分的Split操作都伴随在Compaction操作之后进行的原因,在于可以对于Region中的文件进行合并,生成较大的StoreFile文件,以方便选择更好的SplitPoint。

注意:region的拆分与rowkey是否热点无关,假如原来rowkey是0000xxx - 9999xxx ,那么拆分后,一个reigon是0000xxx-5555xxx,另一个region是5555xxx - 9999xxx,那么原来集中的rowkey还是集中,跟rowkey热点无任何关联。

附链接:https://blog.csdn.net/weixin_33877092/article/details/87308095

hbase region拆分的三种方式相关推荐

  1. 数据导入HBase最常用的三种方式及实践分析

    要使用Hadoop,数据合并至关重要,HBase应用甚广.一般而言,需要针对不同情景模式将现有的各种类型的数据库或数据文件中的数据转入至HBase中. 常见方式为:1.使用HBase的API中的Put ...

  2. Hbase split的三种方式和split的过程

    Hbase split的三种方式和split的过程https://www.cnblogs.com/niurougan/p/3976519.html 在Hbase中split是一个很重要的功能,Hbas ...

  3. hbase 协处理器 部署_HBase协处理器加载的三种方式

    本文主要给大家罗列了hbase协处理器加载的三种方式:shell加载(动态).api加载(动态).配置文件加载(静态).其中静态加载方式需要重启hbase. 我们假设我们已经有一个现成的需要加载的协处 ...

  4. 【opencv学习笔记】第五篇:访问图像中像素的三种方式、ROI区域图像叠加和图像混合

    1. 访问图像中像素的三种方式 任何图像处理算法,都是从操作每个像素开始的.在OpenCV中,提供了三种访问每个像素的方法. 方法1:指针访问:C操作符[] 方法2:迭代器iterator 方法3:动 ...

  5. 表格拆分的两种方式 拆分成多个excel工作表或多个excel文件

    表格拆分的两种方式 拆分成多个excel工作表或多个excel文件 拆分Excel,可以分为3种层次:拆分excel单元格:拆分成多个excel工作表:拆分成多个excel文件 其中,第1种拆分是无法 ...

  6. 【大数据开发】SparkCore——进阶算子、Action算子、查看分区数的三种方式

    源代码中的大写V,指的是value rdd.getNumberPartitions获取分区数量 Transformation算⼦全都是RDD[U,T]类型的 Action算子的返回值一般情况下不会是R ...

  7. 三种方式细胞评分对比

    三种方式细胞评分对比 library(patchwork) library(ggplot2) library(ggalluvial) library(svglite) library(Seurat) ...

  8. 网络知识入门,用户如何连接互联网,ADSL调制解调器的妙用,PPP上网的三种方式(十二)

    互联网与家庭网络的区别      互联网是一个遍布世界的巨大而复杂的系统,但其基本工作方式却出奇地简单.和家庭.公司网络一样,互联网也是通过路由器来转发包的, 而且路由器的基本结构和工作方式也并没有什 ...

  9. WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式

    WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控 ...

最新文章

  1. fullpage 单屏高度超过屏幕高度,实现单屏内可以滚动并解决手机端单屏高度不正确的问题
  2. (二)Maven的安装与环境配置
  3. java怎么让表格的字段相乘,excel表格怎么让数据相乘-如何在excel表格中设置乘法公式...
  4. 开发函数计算的正确姿势——运行 Selenium Java
  5. SPI接口比IIC速度快的理解
  6. java 常量存储_JAVA 存储空间 寄存器 堆栈 堆 常量存储 非RAM存储
  7. git push/pull时总需要输入用户名密码的解决方案
  8. 使用python对数据集进行批处理
  9. 2016 ICPC 北京
  10. flink入门_Flink从入门到放弃-入门篇
  11. 数据仓库搭建——Inmon与Kimball
  12. 佳能ts9020墨盒不识别_canon佳能TS9010 TS9020清零软件5B00佳能TS9040废墨盒清零1700
  13. latex怎么改字体大小_latex更改字体 latex局部字体大小
  14. 圆柱体积怎么算立方公式_圆柱体积计算公式 计算方法及例题
  15. 华为S5700交换机升级记录
  16. 用Python画一只小兔子,祝您新年前途似锦,大展宏图
  17. 科罗拉多州立大学计算机科学,2020年科罗拉多州立大学排名TFE Times美国最佳计算机科学硕士专业排名第81...
  18. 悟空CRM在保险行业的应用
  19. mysql 使用java代码进行操作系统_【MySQL 05】使用Java对MySQL进行操作(创建数据库)...
  20. 我与小娜(20):去LIGO,探秘光子接力赛

热门文章

  1. 第7章 EL和JSTL
  2. 深度学习之手撕深度神经网络DNN代码(基于numpy)
  3. linux网络编程 copymemory,在VB6中用CopyMemory拷贝字符串的种种猫腻(一)
  4. Info.plist contained no UIScene configuration dictionary (looking for configura
  5. android 小数点后两位,android中处理价格的问题,价格保留小数点后两位
  6. CharGPT无法替代的职场发展底层逻辑
  7. 解决ssh连接Ubuntu拒绝访问
  8. ACP(MaxCompute篇)-使用MMA迁移工具上传数据
  9. Brackets 编辑器 12 个有用的扩展插件
  10. QT中.arg的用法