HBase之Region Splitting

news2024/7/6 18:54:03

目录

  • Region Splitting
    • 步骤
  • Region状态
    • 过程

Region Splitting

在这里插入图片描述

步骤

  1. RegionServer开始split region,SPLIT事务开启。RegionServer在表上获取共享读锁防止split过程中数据被修改。接着在zk中创建一个znode,标记为SPLITTING。
  2. Master 将会观察到该znode的创建。
  3. RegionServer在父region的目录下创建一个名为.splits的子目录。
  4. RegionServer关闭父region,并将其下线。此时客户端请求该rs上的此region将会抛出NotServingRegionException,并回退重试。
  5. RegionServer在.splits目录下为子region创建region目录,同时在子region的目录中创建引用文件,指向父region下的文件。
  6. RegionServer创建子region的实际存储目录,并将引用文件移动到该目录下。
  7. RegionServer向.META表发送put请求。将.META表中父region的状态设置为下线,同时在表中添加子region的信息。此时子region不会在.META表中有单独的条目信息。如果请求成功,父region的split将是有效的。如果在rpc成功之前失败,master和之后打开该region的RegionServer将会清除split留下的脏数据。
  8. RegionServer并行打开所有的子region。
  9. RegionServer将子region的信息添加到.META,此时split region是online状态了。之后客户端就可以发现并向新的region请求。客户端默认会缓存.META在本地,每次请求RegionServer或.META时也会更新缓存。
  10. RegionServer将zk中的znode的后缀改为split,以便master能够观察到该事件。如果有需要balancer可以自由的重新分配子region到其他的regionserver。此时整个split事务结束。
  11. split完成后,.META和HDFS会仍然包含对父region的引用。当子region发生compaction并将文件重写后,该引用会被清除。master会周期的运行gc tasks来检查子region是否仍然在引用父region的文件。

Region状态

棕色:下线状态,一种特殊状态,如瞬时状态(closed之后、opening之前)、terminal(表的region被禁用)、初始状态(表的region刚被创建)
淡绿色:在线状态,region可以接受请求
浅蓝色:瞬时状态、短暂或临时状态
红色:失败状态,需要注意
金色:region拆分/合并的终端状态
灰色:通过拆分/合并创建的region的初始状态
在这里插入图片描述

  • OFFLINE:region下线,未打开
  • OPENING:region正在打开中
  • OPEN:region已经打开,并且RegionServer已通知master
  • FAILED_OPEN:RegionServer打开region失败
  • CLOSING:region正在关闭中
  • CLOSED:region已经被关闭,并且RegionServer已通知master
  • FAILED_CLOSE:RegionServer关闭region失败
  • SPLITTING::region正在spliting,RegionServer已通知master
  • SPLIT:region已经完成spliting,RegionServer已通知master
  • SPLITTING_NEW:通过split产生的region正在被创建
  • MERGING:region正在与另一个region合并,RegionServer已通知master
  • MERGED:region已经合并完成,RegionServer已通知master
  • MERGING_NEW:两个region合并产生的新region正在被创建

过程

  1. master将region从OFFLINE变为OPENING状态,并尝试分配该region到RegionServer。master会发起RPC请求,RegionServer收到后开始打开region
  2. 如果RegionServer未收到请求,master将会重试,直到rs收到请求或超过重试次数。如果master的重试次数用完,则即使RegionServer开始打开该region,master也会通过将该region变为到CLOSING状态并尝试关闭该region来阻止RegionServer打开该region。
  3. RegionServer打开region之后,会通知master。等待master将region变为OPEN状态,之后通知RegionServer,region已经打开。
  4. 如果RegionServer不能打开region,同样会通知master。此时master会将region置为CLOSED状态,并尝试在其他的RegionServer上打开region
  5. 如果region在多个rs在均无法open,master会将region置为FAILED_OPEN状态。
  6. master将region从OPEN置为CLOSING状态,并通知RegionServer
  7. 如果RegionServer不在线,将会抛出NotServingRegionException,master会将region置为OFFLINE状态,并重新分配到其他RegionServer
  8. 如果RegionServer在线,但不可达。master会将region置为FAILED_CLOSE状态
  9. 如果RegionServer收到关闭region的请求,它将关闭region并通知master。master会将region置为CLOSED状态,并重新分配到其他RegionServer
  10. 在分配region之前,如果region处于CLOSED状态,master会将region置为OFFINE状态
  11. 当RegionServer开始split region,会通知master。master会将该region从OPEN置为SPLITING状态,同时增加两个新创建的region(处于SPLITING_NEW状态)到RegionServer。
  12. 通知master之后,RegionServer将开始split region。RegionServer将会通知master更新hbase:meta表。如果split成功,则region将会从SPLITING置为SPLIT状态,两个新region将从SPLITING_NEW状态置为OPEN状态
  13. 如果split失败,则正在split的region将会从SPLITING置为OPEN状态,两个新region将从SPLITING_NEW状态置为OFFLINE状态
  14. RegionServer通知master准备开始合并两个region。master会将两个region从OPEN置为MERGING状态,同时增加一个新创建的region(处于MERGING_NEW状态)到RegionServer。
  15. 通知master之后,RegionServer开始合并两个region。RegionServer将会通知master更新hbase:meta表。如果merge成功,则两个region将会从MERGING置为MERGED状态,新合并的region将从MERGING_NEW状态置为OPEN状态
  16. 如果合并失败,则两个region将会从MERGING置为OPEN状态,新合并的region将从MERGING_NEW状态置为OFFLINE状态
  17. 对于处于FAILED_OPEN或FAILED_CLOSED状态的region,当通过hbase shell进行重分配操作时,master将会尝试再次关闭region。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1247004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux如何查看文件的hash数值

在Linux系统中,你可以使用各种工具来查看文件的哈希值。下面是一些常见的方法: md5sum命令: md5sum 文件名例如: md5sum example.txtsha1sum命令: sha1sum 文件名例如: sha1sum example.txtsha256sum命令&a…

Android 打包aar包含第三方aar 解决方案

Android 打包aar包含第三方aar 因项目需要,打包aar包含第三方aar,如果直接对module进行打包会产生一些问题。 * What went wrong: Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken be…

加速你的自动化测试:3种等待方式!

在自动化测试中,等待是一个重要的技术,用于处理页面加载、元素定位、元素状态改变等延迟问题。 等待能够确保在条件满足后再进行后续操作,提高自动化测试的稳定性以及可靠性。 等待方式:显示等待、隐式等待、线程睡眠 1. 显式等…

Python丨让简历脱颖而出的关键,居然是“它”!

进入疫情后时代,各行各业都在力争新的发展!财会行业亦是如此,浏览各大招聘网站,不难发现财会相关岗位的招聘要求越来越“卷”,那求职者如何才能让自己获得面试邀请呢? 答案就是:一份亮眼且具有…

设计模式—开闭原则

1.背景 伯特兰迈耶一般被认为是最早提出开闭原则这一术语的人,在他1988年发行的《面向对象软件构造》中给出。这一想法认为一旦完成,一个类的实现只应该因错误而修改,新的或者改变的特性应该通过新建不同的类实现。新建的类可以通过继承的方…

Duplicate 模型中的 ROLLUP(十六)

因为 Duplicate 模型没有聚合的语意。所以该模型中的 ROLLUP,已经失去了“上卷”这一层含义。而仅仅是作为调整列顺序,以命中前缀索引的作用。下面详细介绍前缀索引,以及如何使用 ROLLUP 改变前缀索引,以获得更好的查询效率。 前…

【开源】基于Vue.js的城市桥梁道路管理系统的设计和实现

项目编号: S 025 ,文末获取源码。 \color{red}{项目编号:S025,文末获取源码。} 项目编号:S025,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥…

选择TikTok直播网络方案前的必读指南

真实、稳定、可靠的TikTok直播网络方案挑选需要考虑这三大要素: 原生IP、独享带宽、线路 之前小编也分享了不少关于TikTok直播网络搭建方法和注意事项的文章及用户案例,但还是不少TikTok直播卖家不知道各个方法有何区别,毕竟市面上说可以解决…

Centos 7、Debian、Ubuntu中tree指令的检查与下载

目录 前言 Centos 7中检查tree指令是否安装的两种办法 which指令检查 查看当前版本指令 不同版本下安装tree指令 Centos 7的发行版本 重点 Debian的发行版本 重点 Ubuntu的发行版本 重点 前言 在大多数Linux发行版中,tree命令通常不是默认安装的指令。…

动物病理学3d虚拟仿真场景还原系统提高学员的判断准确性

动物疾病检查培训存在着标本难找、操作复杂及费用高等难点,将VR虚拟现实技术应用到动物疾病检查培训中,突破了诸多传统限制,为学生提供更为真实、直观的学习体验,通过实践操作,提高培训效果和质量。 每种动物的系统模块…

2024第十二届成都国际智能驾驶技术展览会

2024第十二届成都国际智能驾驶技术展览会 2024 Chengdu International Autonomous driving Expo 时间:2024年7月17-19日 地点:成都世纪城新国际会展中心 指导单位: 成都市人民政府 四川省经济和信息化厅 重庆市经济和信息化委员会 推动…

跨境电商贸易多币种处理:策略、方法与解决方案

在跨境电商中,企业需要与不同的跨境客户打交道,用客户喜欢的货币进行收款是一项很有挑战性的任务。现在,使用Zoho Books的高级多币种处理功能,这将变得毫不费力。 注:此功能在Zoho Books的精英版和旗舰版下可用。 商业全球化为商…

牛客 算法题 记负均正II golang实现

题目 HJ105 记负均正II golang 实现 package mainimport ("bufio""fmt""io""os""strconv""strings" )func main() {scanner : bufio.NewScanner(os.Stdin)nums:make([]int,0)sum:0minus:0for scanner.Scan() {l…

虚幻学习笔记—给UI添加动画

一、前言 本文所使用的虚幻版本为5.3.2,之前工作都是用unity,做这类效果用的最多的是一个DoTween的插件,在虚幻中都内置集成了这这种效果制作。 图1.1 UI动画 二、过程 1、首先,在诸如按钮、图像等可交互控件中选中,如…

JoySSL OV证书

JoySSL OV证书全称为Organization Validation SSL证书,属于组织验证型SSL证书。它是一种增强型的SSL证书,不仅能够提供基本的数据加密功能,还能提供更高级别的安全保障。通过验证申请者身份的方式,确保了用户访问的网站是由合法的…

2023年微软开源八个人工智能项目

自2001年软件巨头微软前首席执行官史蒂夫鲍尔默对开源(尤其是Linux)发表尖刻言论以来,微软正在开源方面取得了长足的进步。继ChatGPT于去年年底发布了后,微软的整个2023年,大多数技术都是面向开发人员和研究人员公开发…

快速入门Postman接口测试,让你轻松掌握接口测试技能!

1.postman界面 下载安装postman工具,以下是postman的界面 快捷区:提供常用的操作入口,新建请求,执行器,导入别人共享的收藏夹测试数据,包括运行收藏夹的一组测试数据; 侧边栏:搜索栏…

2022年MathorCup大数据竞赛B题北京移动用户体验影响因素研究求解全过程文档及程序

2022年MathorCup高校数学建模挑战赛—大数据竞赛 B题 北京移动用户体验影响因素研究 原题再现: 移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越…

探索移动端可能性:Capacitor5.5.1和vue2在Android studio中精细融合

介绍: 移动应用开发是日益复杂的任务,本文将带领您深入探索如何无缝集成Capacitor5.5.1、Vue2和Android Studio,以加速您的开发流程Capacitor 是一个用于构建跨平台移动应用程序的开源框架。Vue 是一个流行的 JavaScript 框架,用…

掌握高效创作的艺术,利用AI轻松生成高质量文章,提升你的写作效率!

作为现代人,写作已经成为我们生活中必不可少的一部分。无论是工作报告、学术论文还是个人博客,都需要我们付出大量的时间和精力来创作。然而,有时候我们会因为思路阻塞、语言表达能力不足等原因而无法高效地完成写作任务。为了解决这个问题&a…