Hbase聊聊RIT的那点事.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hbase聊聊RIT的那点事 范欣欣 2021-07-12 信任长时间运维HBase集群的童鞋确定都会对RIT(Region-In-Transition,很多参考材料误会为Region-In-Transaction,需要留意)有一种咬牙切齿的痛恨感,一旦Region处于长时间的RIT就会有些不知所措,至少以前的我就是这样过来的。正所谓“恐惊来源于未知”,不知所措意味着我们对RIT知之甚少,然而“凡事都有因果,万事皆有源头”,处于RIT形态的Region只是肉眼看到的一个结果,为什么会处于RIT形态才是问题探究的根本,也是处理问题的关键。本文就基于hbase 0.98.9版本对RIT的工作机制以及实现原理进行普及性的引见,同时在此基础上通过真实案例讲解如何正确合理地处理处于RIT形态的Region。一方面期望大家能够更好的了解RIT机制,另一方面期望通过本文的学习之后可以不再’惧怕’RIT,正确生疏处于RIT形态的Region。 Region-In-Trasition机制 从字面意思来看,Region-In-Transition说的是Region变迁机制,实际上是指在一次特定操作行为中Region形态的变迁,那这里就涉及这么几个问题:Region存在多少种形态?HBase有哪些操作会触发Region形态变迁?一次正常操作过程中Region形态变迁的完整流程是怎样样的?假如Region形态在变迁的过程中消灭特别又会怎样样? Region存在多少种形态?有哪些操作会触发形态变迁? HBase在RegionState类中定义了Region的次要形态,次要有如下: 上图中实际上定义了四种会触发Region形态变迁的操作以及操作对应的Region形态。其中特定操作行为通常包括assign、unassign、split以及merge等,而很多其他操作都可以拆成unassign和assign,比如move操作实际上是先unassign再assign; Region形态迁移是如何发生的? 这个过程有点类似于形态机,也是通过大事驱动的。和Region形态一样,HBase还定义了很多大事(具体见EventType类)。此处以unassign过程为例说明大事是如何驱动形态变迁的,见下图: 上图所示是Region在close时的形态变迁图,其中红字部分就是发生的各种大事。可见,假如发生M_ZK_REGION_CLOSING大事,Region就会从OPEN形态迁移到PENDING_CLOSE形态,而发生RS_ZK_REGION_CLOSING大事,Region会从PENDING_CLOSE形态迁移到CLOSING形态,以此类推,发生RS_ZK_REGION_CLOSED大事,Region就会从CLOSING形态迁移到CLOSED形态。当然,除了这些大事之外,HBase还定义了很多其他大事,在此就不逐一列举。截至到此,我们晓得Region是一个有限形态机,那这个形态机是如何正常工作的,HMaster、RegionServer、Zookeeper又在形态机工作过程中扮演了什么角色,那就接着往下看~ 一次正常操作过程中Region形态变迁的完整流程是怎样样的? 接下来本节以unassign操作为例对这个流程进行解析: 整个unassign操作是一个比较简单的过程,涉及HMaster、RegionServer和Zookeeper三个组件: 1. HMaster担任维护Region在整个操作过程中的形态变化,起到一个枢纽的作用。它有两个重要的HashMap数据结构,分别为regionStates和regionsInTransition,前者用来存储整个集群中全部Region及其当时形态,而后者次要存储在变迁过程中的Region及其形态,后者是前者的一个子集,不包含OPEN形态的Regions; 2. RegionServer担任接收HMaster的指令执行具体unassign操作,实际上就是关闭region操作; 3. Zookeeper担任存储操作过程中的大事,它有一个路径为/hbase/region-in-transition的节点。一旦一个Region发生unssign操作,就会在这个节点下生成一个子节点,子节点的内容是一个“大事”经过序列化的字符串,并且Master会监听在这个子节点上,一旦发生任何大事,Master就会监听到并更新Region的形态。 下图是整个流程示意图: ~ 1. HMaster先执行大事M_ZK_REGION_CLOSING并更新RegionStates,将该Region的形态改为PENDING_CLOSE,并在regionsInTransition中插入一条记录; 2. 发送一条RPC命令给拥有该Region的Reg

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档