region 学习(2)
来源:互联网 发布:linux命令别名 编辑:程序博客网 时间:2024/04/27 21:33
HBase region的分裂过程如图所示,其中红色代表RegionServer和或Master的行为,绿色的代表Clients的行为。
1、RegionServer决定本地的region分裂,并准备分裂工作。第一步是,在zookeeper的/hbase/region-in-reansition/region-name下创建一个znode,并设为SPLITTING状态。
2、Master通过父region-in-transition znode的watcher监测到刚刚创建的znode。
3、RegionServer在HDFS中父region的目录下创建名为“.split”的子目录。
4、RegionServer关闭父region,并强制刷新缓存内的数据,之后在本地数据结构中将标识为下线状态。此时来自Client的对父region的请求会抛出NotServingRegionException ,Client将重新尝试向其他的region发送请求。
5、RegionServer在.split目录下为子regionA和B创建目录和相关的数据结构。然后RegionServer分割store文件,这种分割是指,为父region的每个store文件创建两个Reference文件。这些Reference文件将指向父region中的文件。
6、RegionServer在HDFS中创建实际的region目录,并移动每个子region的Reference文件。
7、RegionServer向.META.表发送Put请求,并在.META.中将父region改为下线状态,添加子region的信息。此时表中并单独存储没有子region信息的条目。Client扫描.META.时回看到父region为分裂状态,但直到子region信息出现在表中,Client才直到他们的存在。如果Put请求成功,那么父region将被有效地分割。如果在这条RPC成功之前RegionServer死掉了,那么Master和打开region的下一个RegionServer会清理关于该region分裂的脏状态。在.META.更新之后,region的分裂将被Master回滚到之前的状态。
8、RegionServer打开子region,并行地接受写请求。
9、RegionServer将子region A和B的相关信息写入.META.。此后,Client便可以扫描到新的region,并且可以向其发送请求。Client会在本地缓存.META.的条目,但当她们向RegionServer或.META.发送请求时,这些缓存便无效了,他们竟重新学习.META.中新region的信息。
10、RegionServer将zookeeper中的znode /hbase/region-in-transition/region-name更改为SPLIT状态,以便Master可以监测到。如果子Region被选中了,Balancer可以自由地将子region分派到其他RegionServer上。
11、分裂之后,元数据和HDFS中依然包含着指向父region的Reference文件。这些Reference文件将在子region发生紧缩操作重写数据文件时被删除掉。Master的垃圾回收工会周期性地检测是否还有指向父region的Reference,如果没有,将删除父region。
- region 学习(2)
- HBase学习之region
- hbase Region 的学习
- HBase学习之Region
- region
- Region
- #region
- 学习.NET (2) 语言和国家地区 下 Language and Region (2nd Half)
- Android 2D Graphics学习(二)、Canvas篇2、Canvas裁剪和Region、RegionIterator
- Android 2D Graphics学习(二)、Canvas篇2、Canvas裁剪和Region、RegionIterator
- Android 2D Graphics学习(二)、Canvas篇2、Canvas裁剪和Region、RegionIterator
- Android 2D Graphics学习(二)、Canvas篇2、Canvas裁剪和Region、RegionIterator
- 【Opencv 学习笔记】 -- ROI(Region of Interest)
- Android 2D Graphics学习(二)、Canvas篇2、Canvas裁剪和Region、RegionIterator 分类: Android基础知识学习
- TRPO(trust region policy optimization)(2)
- Frequency-tuned Salient Region Detection 算法学习总结
- halcon学习笔记——Image,region,xld初步
- HBase-1.2.1之查找Region位置的源码学习
- C结构体中数据的内存对齐问题
- jsoncpp fatal error C1083: 无法打开编译器生成的文件 No such file or
- 百度地图
- 行情板块列表里面,两融标的券前面未加“融”字图标
- API Guides > Contacts Provider (二)
- region 学习(2)
- C++位域详解
- JS 实用函数 insertAfter和addLoadEvent 记录
- java的StringBuffer的细解
- 什么是凸优化问题
- 个股行情板块列表里面,两融标的券标题前面的个股代码前未加“融”字图标
- 带缓存的io与不带缓存的io
- c# 二维码生成库ThoughtWorks使用指南
- A*算法