摘要:
这一节本来打算讲解HRegion的初始化过程中一些比较复杂的流程。不过,考虑前面的博文做的铺垫并不够,因此,在这一节,我还是特意来介绍HBase的CF持久化。关于这个话题的整体流程性分析在博文《HBase数据持久化之HRegion.flushcache即CF持久化》中已经介绍过,大家最好先看一下我的 阅读全文
摘要:
上篇博文中已经谈到,有两个流程没有讲到。一个是MetaTableAccessor.getRegionLocations,另外一个是ConnectionImplementation.cacheLocation。这一节,就让我们单独来介绍这两个流程。 首先让我们来到MetaTableAccessor.g 阅读全文
摘要:
首先,让我们从HTable.put方法开始。由于这一节有很多方法只是简单的参数传递,我就简单略过,但是,关键的方法我还是会截图讲解,所以希望大家尽可能对照源码进行流程分析。另外,在这一节,我单单介绍put操作在客户端的流程,毕竟,这个内容已经很多了。至于具体服务端的流程,我会在后面的章节中介绍到,欢 阅读全文
摘要:
这一节我们简单介绍一下HBase的行信息。文章前半部分会对照源码介绍,后面会有我自己画的图,大家如果对这些信息已经比较了解了,跳过源码对照部分看后面的图,加深一下印象。 下面简单分析一下HBase中对于每一行的存储,这个知识点至关重要,以至于会影响到我们在后面的很多流程的分析。 根据下图,我们可以得 阅读全文
摘要:
在我的博文《HBase——HMaster启动之一》、《HBase——HMaster启动之二》中已经详细介绍过HMaster在启动过程中调用的各种方法。下面,单就HRegionServer在启动过程中与HMaster的交互做一下深入分析。 首先,让我们来到HRegionServer.run,由于其也是 阅读全文
摘要:
紧接着上一节HMaster的构建完成。接下来会调用HMaster调用master.start(),master.join()。 由HMaster的继承关系,很明显,他是Runnable的子类。也就是说,在调用其start方法时,run方法被调用。 下面,让我们来到HMaster.run方法。这里的涉 阅读全文
摘要:
首先,让我们来到HMaster的main方法。我们今天的流程就从这里开始。 我们需要注意,下图所示的tool的类型就是HMasterCommandLine。 接下来,让我们来到HMasterCommandLine.run方法 在HMasterCommandLine.startMaster方法开始,有 阅读全文
摘要:
我们从HRegion.flushcache开始分析。由于这个过程还是比较复杂的,因此,在这一节,我们不会分析的太过详细,只是单单的介绍一下其大体流程,待大家有了整体的把握之后,我们将在下一节详细介绍其持久化的具体流程。 为了尽可能严谨的描述整个流程,小编在讲解过程中会贴比较多的图来描述。 好了,闲话 阅读全文
摘要:
hbase中相关命令行操作在服务端都是由相应的Procedure来执行完成的,并不是一个单独的操作,而是由其状态机中的一系列状态按照流程来完成的。特别的,我这次本着有图有真相的原则来为大家分析这一流程。 这次,我们主要分析hbase在HMaster的初始化方法finishActiveMasterIn 阅读全文
摘要:
hbase的客户端代码并不想hive一样用java编写,shell调用,而是使用ruby编写。 在admin.rb文件中方法create,其中接受两个参数,其中第二个参数类型为变长参数。 而在create方法的最后,调用了admin.createTable,其中的admin是hbaes.rb初始化时 阅读全文