HBase之Region Splitting

目录

  • 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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter接口测试——使用教程(上)

前言 jmeter是一款小巧,轻便、开源的性能测试工具,它也可以很方便的进行接口测试。 下面我就带大家学习下jmeter接口测试。 一、Jmeter简介 Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使…

镜头光圈参数详解和示例,如F2.8-16

光圈: 光圈用F值来表示,以镜头焦距f和通光孔径D的比值来衡量。F值越大,光圈越小;F值越小,光圈越大。 镜头表面标的F2.8-16是指相机镜头孔径的大小。如上图所示,光圈大小F2.8-16范围是F2.8、F4、F5.6、F8、…

量子计算突破云渲染资源调度!真机测试完整报告公开!

​摘要:在影视领域中,经常会涉及大量的视频图像渲染工作,而往往在这种大规模、动态渲染场景下,普遍存在着冗余渲染现象。究其原因在于大规模的图像渲染通常要求在短时间内做出渲染任务的算力分配决策,而经典计算机无法…

electron+vue3全家桶+vite项目搭建【26】electron本地安装Vue Devtool插件,安装浏览器扩展

文章目录 引入获取vue devtool导入插件排除插件的npm脚本最终效果 引入 demo项目地址 Vue Devtools插件是vue项目必备插件,它是安装在浏览器里的,而咱们的electron中实际就包含了一个浏览器,同理它也可以加载浏览器插件 获取vue devtool 直…

Java 之 final 详解

目录 一. 前言 二. final 的基础使用 2.1. 修饰类 2.2. 修饰方法 2.2.1. private 方法是隐式的 final 2.2.2. final 方法可以被重载 2.3. 修饰参数 2.4. 修饰变量 2.4.1. static final 2.4.2. blank final 2.4.3. 所有 final 修饰的字段都是编译期常量吗&#xff1f…

数据结构:二叉查找树,平衡二叉树AVLTree,红黑树RBTree,平衡多路查找数B-Tree,B+Tree

二叉查找树 二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。 对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深度为2的查找次数为2,深度为n的节点的查找次数为n,因此其平均查找次…

MacM1(ARM)安装Protocol Buffers

MacM1(ARM)安装Protocol Buffers 本文目录 MacM1(ARM)安装Protocol Buffers3.21之前版本安装使用configure3.22之后版本安装使用cmake使用编译后的版本 protobuf下载地址:https://github.com/protocolbuffers/protobuf/releases 在运行./autogen.sh或./configure命…

从 RBAC 到 NGAC ,企业如何实现自动化权限管理?

随着各领域加快向数字化、移动化、互联网化的发展,企业信息环境变得庞大复杂,身份和权限管理面临巨大的挑战。为了满足身份管理法规要求并管理风险,企业必须清点、分析和管理用户的访问权限。如今,越来越多的员工采用移动设备进行…

【网络奇幻之旅】那年我与区块链技术的邂逅

🌺个人主页:Dawn黎明开始 🎀系列专栏:网络奇幻之旅 ⭐每日一句:追光的人,终会光芒万丈 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️ 文章目录 &#…

每日OJ题_算法_双指针_力扣11. 盛最多水的容器

力扣11. 盛最多水的容器 11. 盛最多水的容器 - 力扣(LeetCode) 难度 中等 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成…

锂电池搅拌机常见故障及预测性维护解决方案

锂电池搅拌机作为锂电池生产过程中的关键设备,负责混合和搅拌材料,对生产效率和产品质量具有重要影响。但由于长时间运行和复杂工作环境,锂电池搅拌机常常面临各种故障和维护需求。传统的故障修复维护方式往往是被动的,不能及时预…

口袋参谋:如何避免宝贝被降权?这招屡试屡爽!

​至少99.99999%的店铺在今年都被降权过!各家店铺被降权的原因,无非就一个原因,那就是s单! s单的风险也就两种,一是操作问题,二是账号问题。 操作问题被降权,这个大家都心知肚明,s…

根据商品链接获取拼多多商品详情数据接口|拼多多商品详情价格数据接口|拼多多API接口

拼多多,作为中国最大的社交电商之一,为卖家提供了丰富的商品详情接口。这些接口可以帮助卖家快速获取商品信息,提高销售效率。本文将详细介绍如何使用拼多多商品详情接口,以及它的优势和注意事项。 一、拼多多商品详情接口概述 …

代码规范有用吗?听听100W年薪谷歌大佬怎么说!

谷歌内部的 python 代码规范 熟悉 python 一般都会努力遵循 pep8 规范,也会有一些公司制定内部的代码规范。大公司制定规范的目的不是说你一定要怎样去使用编程语言,而是让大家遵守同一套规则,节省其他人阅读代码的成本,方便协作…

一次爽个够,80款H5精品小游戏合集

前言 最近又找到了一款宝藏游戏资源分享给大家,包含 80 款 H5 精品小游戏,都是非常有趣味耐玩的游戏,比如植物大战僵尸、捕鱼达人、消消乐、斗地主、熊出没、飞机大战、象棋等等超级好玩的 H5 小游戏,让大家一次爽个够~ 本文讲解…

Qt 软件调试(一) Log日志调试

终于这段时间闲下来了,可以系统的编写Qt软件调试的整个系列。前面零零星星的也有部分输出,但终究没有形成体系。借此机会,做一下系统的总结。慎独、精进~ 日志是有效帮助我们快速定位,找到程序异常点的实用方法。但是好的日志才能…

【周报2023-11-24】

周报2023-11-24 本周主要工作下周工作计划 本周主要工作 本周的话一个主要工作有: 前后端进行联调接口: 那么目前为止的话,已经调通的接口 可以使用的是个人中心 历史生成的接口 选择新模板 新模板详情 ps: 下周工作计划 主要的话就是将…

【转载】如何在Macbook上把Ubuntu安装到移动硬盘里

我的设备系统版本、遇到的问题和解决: Mac:macOS Ventura 13.3 Ubuntu:22.04.3 问题: 按照这个教程在【3.3.10】修改完启动项后,Mac系统无法启动,Ubuntu可以正常启动。 原因: Mac找不到启动引导…

【Vue】浏览器安装vue插件

首先看一下安装之后的效果&#xff0c;再考虑一下要不要安装 安装完之后&#xff0c;打开浏览器控制台&#xff08;ctrl shift j) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</t…

多回路交流三相单相电压电流电量监测开口式互感器适用多种环境用电能耗监控

1 产品概述 多回路交流无线电压电流传感器/电量采集监测仪搭配多路开口式互感器&#xff0c;可以监控采集三相电压、电流、功率和电量等信息&#xff0c;可用于能耗采集监控。支持RS485和4G网络接口&#xff0c;数据可以对接客户指定的第三方云平台。本产品可实现单相/三相用电…