Hbase split的过程以及解发条件
一、Split触发条件
1、 有任一一个Hfile的大小超过默认值10G时,都会进行split
2、 达到这个值不在拆分,默认为int_max,不进行拆分
3、compaction时,如果compact的store的大小超过了,则进行split
4、 flush之前会检测区域中HStoreFile数目是否超过hbase.hstore.blockingStoreFiles,如果超过且没有等待超时会调用CompactSplitThread.requestSplit(HRegion)
5、 flush之后会调用HRegion.checkSplit()检测是否需要split,如果需要则调用CompactSplitThread.requestSplit(HRegion)
6、人工触发
二、Split过程
1、启动一个CompactSplitThresd线程
2、 SplitRequest.run
首先,实例化一个事务:在HDFS上的parent’s region 目录下创建一个.splits目录
其次,实例化两个RegionInfo: hri_a和 hri_b,赋予key的起始结束值,根据给定的splitkey
然后,执行execute方法:
(1)createDaughters
每个Reference文件管理原始文件一半的数据。Reference文件名字是一个ID,它使用被参考的Region的名字的Hash作为前缀。例如:1278437856009925445.3323223323。Reference文件只含有非常少量的信息,这些信息包括被分割的原始Region的Key以及这个文件管理前半段还是后半段。HBase使用HalfHFileReader类来访问Reference文件并从原始数据文件中读取数据
Offline parent in meta. 向.META.表Put Split的信息
(2)openDaughter--DaughterOpener-- DaughterOpener.run()--openDaughterRegion--openHRegion
openDaughter--postOpenDeployTasks
addToOnlineRegions // Should add it toOnlineRegions
(3) transitionZKNode :Finish off splittransaction, transition the zknode ,更新Split的状态 (之后由Master来处理,CatalogJanitor 来清理多余文件夹)
Hbase split的过程以及解发条件的更多相关文章
- Hbase split的三种方式和split的过程
在Hbase中split是一个很重要的功能,Hbase是通过把数据分配到一定数量的region来达到负载均衡的.一个table会被分配到一个或多个region中,这些region会被分配到一个或者多个 ...
- TCP/IP协议的数据传输过程详解——IP与以太网的包收发操作
MTU:一个网络包的最大长度,以太网中一般是1500字节:(含有头部长度,包括IP头部,TCP头部,不包括MAC头部) MSS:除去头部后,一个网络包所能容纳的TCP的数据的最大长度 下图为TCP/I ...
- 大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解
hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解 一,环境: 1,主机规划: 集群中包括3个节点:hadoop01为Master,其余为Salve,节点之间局域网连接 ...
- Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
转自:http://blog.csdn.net/iamdll/article/details/20998035 分类: 分布式 2014-03-11 10:31 156人阅读 评论(0) 收藏 举报 ...
- Java并发包源码学习系列:详解Condition条件队列、signal和await
目录 Condition接口 AQS条件变量的支持之ConditionObject内部类 回顾AQS中的Node void await() 添加到条件队列 Node addConditionWaite ...
- ping命令执行过程详解
[TOC] ping命令执行过程详解 机器A ping 机器B 同一网段 ping通知系统建立一个固定格式的ICMP请求数据包 ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运 ...
- 理论经典:TCP协议的3次握手与4次挥手过程详解
1.前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一 ...
- 转载:C/C++源代码到可执行程序的过程详解
C/C++源代码到可执行程序的过程详解 编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格 ...
随机推荐
- jQuery Lint: enables you to automatically inject jQuery Lint into the page as it is loaded (great for ad-hoc code validation)
FireQuery is a Firebug extension for jQuery development jQuery Lint: enables you to automatically in ...
- 一步一步学c#(六):数组
数组 简单数组 如果需要使用同一个类型的多个对象,就可以使用数组.数组是一种数据结构,它可以包含同一类型的多个元素. 数组声明:int[] myArray 使用new运算符,指定数组中元素的类型和数量 ...
- git将本地项目添加到github远程仓库
1.首先准备好你的github 账号密码,注册就不说了.. 2.由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以要在本地生成一个私钥和一个密钥 命令: $ ssh-keygen ...
- https tomcat 证书搭建
首先生成证书说明 keytool -genkey -alias castest -keyalg RSA -keystore c:/keys/caskey 先让输入密码,密码必须记住,下面会用到 其中“ ...
- 02-C语言执行过程
目录: 一.MACOS系统操作 二.C语言的使用方式 三.编码 四.编译 五.运行 六.分析第一个C程序 七.预处理指令#include 八.完整执行过程 回到顶部 一.MACOS系统操作 操作计算机 ...
- JDK JRE先保存 后面再整理
1. 定义 JRE(Java Runtime Enviroment)是Java的运行环境.面向Java程序的使用者,而不是开发者.如果你仅下载并安装了JRE,那么你的系统只能运行Java程 序.JRE ...
- web乱码问题
String data = "不见青山"; ServletOutputStream sos = response.getOutputStream(); byte b[] = dat ...
- JVM典型配置
堆大小设置: JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存 限制.32位系统下,一般限制在1.5G~2G:64为 ...
- 基于FPGA的cordic算法的verilog初步实现
最近在看cordic算法,由于还不会使用matlab,真是痛苦,一系列的笔算才大概明白了这个算法是怎么回事.于是尝试用verilog来实现.用verilog实现之前先参考软件的程序,于是先看了此博文h ...
- VS前台设计中的缺陷
程序的前台界面设计我一般都是Blend中完成的,因为在VS中前台比较难控制.而效果之内的就更不用说了.今天写了个小程序用来启动其他程序的.运行界面如下: 这是尺寸和距离刚刚好的,我们去Blend当中看 ...