HBase2.0 regionServer退出处理流程
rs主动退出或者宕机超过一定时间后,zk上/hbase/rs目录下对应的znode会被删除;
master的RegionServerTracker组件监听到该目录的子节点变化事件,会对zk上的rs节点和内存中的数进行对比,找出挂掉的ServerName;
ServerManager将该ServerName从onlineServers移到deadservers;
AssignmentManager创建ServerCrashProcedure实例(简称scp)并提交到ProcedureExecutor;
PE首先为scp设置procId,并持久化到hdfs,然后创建对应的RootProcedureState,用以回滚,最后提交到ProcedureScheduler中的相应队列中;
某个WorkerThread从队列中获取到该scp开始执行;
如果meta region在这个rs上,先split其log并assign,然后等待,直到被metaLoadEvent唤醒;
如果存在待处理的wal,则进行分布式split,这个任务由master中的SplitLogManager协调各rs中的SplitLogWorker完成;
split完成后,对该rs下的每个region,提交AssignProcedure(简称ap),然后scp挂起;
ap的执行分为3步:
由balancer分配目标rs;
通过RSProcedureDispatcher请求目标rs打开该region;
接收到已打开的消息后更新region的状态数据,包括内存和meta表(如果是meta region,则更新的是zk上的meta-region-server节点);
ap执行完成的时候,判断如果存在parent proc,则会将childrenLatch减1;
childrenLatch等于0的时候意味着所有ap都已经完成,此时会通过ap携带的parentProcId唤醒前面那个scp;
scp继续执行,清理AssignmentManager和ServerManager中关于该rs的相关数据后结束;
详细流程图:https://www.processon.com/view/link/5c49a5dae4b0fa03cea60e27
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
docker_常用命令模板
基础模板 docker run -itd \ --name {容器名称} \ -v {主机文件目录}:{容器目录} \ -v {主机文件目录2}:{容器目录2} \ -p {主机port}:{容器port} \ -p {主机port2}:{容器port2} \ {镜像名称}
- 下一篇
每当我想放弃 Scala,我就写写 Python 和 Java
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 我的一位朋友最近在推特上表示:公众对 Scala 编程语言的兴趣似乎已经趋于稳定或减弱,这与我的感受一致。这篇博文将会讨论为什么会发生这种情况,并且聊聊 Scala 现在的地位以及 Scala 社区的未来。 本文最初发布于 Li Haoyi 的个人博客,经原作者授权由 InfoQ 中文站翻译并分享。 本文受下面这条推特启发:看到 Typesafe/Lightbend(注:Scala 的技术推广公司)的朋友被解雇是一件很遗憾的事情,但正如我一直说的,免费的东西很难卖出去。 我很想知道 Scala 现在的采用情况。它没死,但似乎在 2016 年就达到了热度的顶峰。不过我没有任何数据支持这个观点。——Jamie Allen Jamie 注意到,公众对 Scala 编程语言的兴趣似乎已经减弱了:对 Meetup 的兴趣减少了,对会议的兴趣减少了... 这或多或少跟我的观察一致。尽管面向 Scala 爱好者的 Scala 专门会议仍然很热门(或者说在新冠疫情之前,曾经很热门),但我认为毫无疑问,在...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果