Hbase put写入源码分析
今天有空闲时间看一下HBASE的写入代码
MutiAction类,是一个action的container,包括get . put. delete。并且是根据region name分组的。其中核心的就是add方法,根据传进来的region name将action分组
public final class MultiAction<R> {
  // TODO: This class should not be visible outside of the client package.
  // map of regions to lists of puts/gets/deletes for that region.
  public Map<byte[], List<Action<R>>> actions =
    new TreeMap<byte[], List<Action<R>>>(Bytes.BYTES_COMPARATOR);
  private long nonceGroup = HConstants.NO_NONCE;
  public MultiAction() {
    super();
  }
  /**
   * Get the total number of Actions
   *
   * @return total number of Actions for all groups in this container.
   */
  public int size() {
    int size = 0;
    for (List<?> l : actions.values()) {
      size += l.size();
    }
    return size;
  }
  /**
   * Add an Action to this container based on it's regionName. If the regionName
   * is wrong, the initial execution will fail, but will be automatically
   * retried after looking up the correct region.
   *
   * @param regionName
   * @param a
   */
  public void add(byte[] regionName, Action<R> a) {
    add(regionName, Arrays.asList(a));
  }
  /**
   * Add an Action to this container based on it's regionName. If the regionName
   * is wrong, the initial execution will fail, but will be automatically
   * retried after looking up the correct region.
   *
   * @param regionName
   * @param actionList list of actions to add for the region
   */
  public void add(byte[] regionName, List<Action<R>> actionList){
    List<Action<R>> rsActions = actions.get(regionName);
    if (rsActions == null) {
      rsActions = new ArrayList<Action<R>>(actionList.size());
      actions.put(regionName, rsActions);
    }
    rsActions.addAll(actionList);
  }
  public void setNonceGroup(long nonceGroup) {
    this.nonceGroup = nonceGroup;
  }
  public Set<byte[]> getRegions() {
    return actions.keySet();
  }
  public boolean hasNonceGroup() {
    return nonceGroup != HConstants.NO_NONCE;
  }
  public long getNonceGroup() {
    return this.nonceGroup;
  }
}  
接下来介绍AyncProcess类,该类
待续
Hbase put写入源码分析的更多相关文章
- 【RocketMQ源码分析】深入消息存储(1)
		最近在学习RocketMQ相关的东西,在学习之余沉淀几篇笔记. RocketMQ有很多值得关注的设计点,消息发送.消息消费.路由中心NameServer.消息过滤.消息存储.主从同步.事务消息等等. ... 
- Hbase写入hdfs源码分析
		版权声明:本文由熊训德原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/258 来源:腾云阁 https://www.qclo ... 
- Hbase WAL线程模型源码分析
		版权声明:本文由熊训德原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/257 来源:腾云阁 https://www.qclo ... 
- Hbase源码分析:Hbase UI中Requests Per Second的具体含义
		Hbase源码分析:Hbase UI中Requests Per Second的具体含义 让运维加监控,被问到Requests Per Second(见下图)的具体含义是什么?我一时竟回答不上来,虽然大 ... 
- 浅谈ZooKeeper基本原理与源码分析
		最近一直有小伙伴私信我,问一些关于Zookeeper的知识,下边关于的Zookeeper的知识整理了一下,一起学习一下. 看完本文对于Zookeeper想深入全面了解的读者朋友们,小编这里整理了一份更 ... 
- spark源码分析以及优化
		第一章.spark源码分析之RDD四种依赖关系 一.RDD四种依赖关系 RDD四种依赖关系,分别是 ShuffleDependency.PrunDependency.RangeDependency和O ... 
- 图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize)
		图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize) 大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步 ... 
- 【图解源码】Zookeeper3.7源码分析,包含服务启动流程源码、网络通信源码、RequestProcessor处理请求源码
		Zookeeper3.7源码剖析 能力目标 能基于Maven导入最新版Zookeeper源码 能说出Zookeeper单机启动流程 理解Zookeeper默认通信中4个线程的作用 掌握Zookeepe ... 
- zookeeper源码分析之四服务端(单机)处理请求流程
		上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ... 
随机推荐
- CMake编译的VS工程,安装时遇到错误:error MSB3073: 命令“setlocal
			错误提示 70>CMake Error at src/base/cmake_install.cmake:63 (file): 70> file INSTALL cannot find 70 ... 
- js中this关键字的作用
			this中的几种情况 1.普通函数中的this window 2.构造函数中的this 是当前构造函数创建的对象在new这个构造函数的时候会在内存中创建一个对象,此时会让this指向刚创建好的这个对象 ... 
- elasticsearch 入门篇
			前言: 要论入门最好的文档,非elasticsearch权威指南和官方的开发文档莫属,我只是基于这两份文档,记录一些关键知识点和自己的理解. 我们为什么要用elasticsearch,或者说来解决什么 ... 
- [PHP] 三种运行模式 ISAPI模式 APACHE2HANDLER模式 CGI模式  FastCGI模式
			ISAPI模式:ISAPI是微软提供的一套标准,PHP的ISAPI模式意思是PHP在windows系统上的IIS进行配合的运行模式,在PHP5.3之后不再支持,php5isapi.dll文件,PHP进 ... 
- 【ORACLE】Oracle提高篇之DECODE
			DECODE含义 decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)这个是decode的表达式,具体的含义解释为: IF 条件=值1 THEN RETURN(翻译值1) E ... 
- 过滤身份证号和grep复习
			一.把身份证号过滤出来 我们还是从一道面试题说起. 请从test.txt文件当中过滤出正确的的身份证号码 [root@localhost test.dir]# cat test.txt 赵 37083 ... 
- 防止ARP欺骗
			前言: 曾经因为宿舍里面的同学经常熬夜打游戏,好言相劝不管用,无奈之下使用arp欺骗他们的主机,使之晚上11点之后游戏延迟,掉线,最后,一到11点同学们就都上床睡觉了. 防止arp欺骗的三种思路: 在 ... 
- Hive学习之修改表、分区、列
			Hive学习之修改表.分区.列 https://blog.csdn.net/skywalker_only/article/details/30224309 https://www.cnblogs.co ... 
- Django2.2 Vue 前后端分离 无法访问Cookie
			个人验证后可用配置如下: 环境: - Django 2.2 - djangorestframework 3.9 - django-cors-headers 2.5.3 INSTALLED_APPS = ... 
- map的基本操作
			向map添加元素: 因为map是不允许出现重复关键字的,所以如果重复插入键相同的元素后面的元素是不会插入成功的,下面是一个验证程序: #include<iostream> #include ... 
