HBase1.0.2源码分析
文章平均质量分 80
lipeng_bigdata
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HBase源码分析之Region上Spilt流程
HBase源码分析之Region上Spilt流程,近期推出!原创 2016-03-19 17:30:14 · 1317 阅读 · 0 评论 -
HBase源码分析之Region合并merge
HBase源码分析之Region合并merge,近期推出!原创 2016-03-19 17:43:09 · 2633 阅读 · 0 评论 -
HBase源码分析之Region上线
HBase源码分析之Region上线,近期推出!原创 2016-03-19 17:55:00 · 1714 阅读 · 0 评论 -
HBase源码分析之Region下线
HBase源码分析之Region下线,近期推出!原创 2016-03-19 17:55:41 · 1418 阅读 · 0 评论 -
HBase源码分析之MemStore的flush发起时机、判断条件等详情(二)
在《HBase源码分析之MemStore的flush发起时机、判断条件等详情》一文中,我们详细介绍了MemStore flush的发起时机、判断条件等详情,主要是两类操作,一是会引起MemStore数据大小变化的Put、Delete、Append、Increment等操作,二是会引起HRegion变化的诸如Regin的分裂、合并以及做快照时的复制拷贝等,同样会触发MemStore的flush流程。同时,在《HBase源码分析之compact请求发起时机、判断条件等详情(一)》一文中,我们讲到了针对compa原创 2016-03-07 17:04:46 · 4231 阅读 · 0 评论 -
HBase源码分析之事件处理模型
HBase是一个复杂的分布式非结构化数据库,它将表中的数据按照行的方向切分成一个个的Region,并在若干RegionServer上上线,依靠所在RegionServer对外提供数据读写IO服务。一开始,表中数据由于很少,只有一个Region。随着数据越来越多,一个Region已难以满足频繁的数据读写请求,所以,Region开始分裂。分裂后的两个Region又会按照一定策略选择一个RegionSe原创 2016-03-19 23:09:59 · 1247 阅读 · 2 评论 -
HBase源码分析之HRegion上MemStore的flsuh流程(一)
HRegion中,有两个关于关闭的状态标志位成员变量,分别定义如下:final AtomicBoolean closed = new AtomicBoolean(false);final AtomicBoolean closing = new AtomicBoolean(false);为什么需要两个状态标志位呢?我么知道,Region下线关闭时,需要处理一些诸如flush等的操作,原创 2016-02-25 21:21:36 · 4840 阅读 · 0 评论 -
HBase源码分析之HRegion上MemStore的flsuh流程(二)
继上篇《HBase源码分析之HRegion上MemStore的flsuh流程(一)》之后,我们继续分析下HRegion上MemStore flush的核心方法internalFlushcache(),它的主要流程如图所示: 其中,internalFlushcache()方法的代码如下:/** * Flush the memstore. Flushing the mems原创 2016-02-25 23:31:47 · 4790 阅读 · 2 评论 -
HBase源码分析之HRegionServer上MemStore的flush处理流程(一)
在《HBase源码分析之HRegion上MemStore的flsuh流程(一)》、《HBase源码分析之HRegion上MemStore的flsuh流程(二)》等文中,我们介绍了HRegion上Memstore flush的主体流程和主要细节。但是,HRegion只是HBase表中按照行的方向对一片连续的数据区域的抽象,它并不能对外提供单独的服务,供客户端或者HBase其它实体调用。而HRegion上MemStore的flush还是要通过HRegionServer来对外提供服务的。下面,我们就详细探究下HR原创 2016-02-29 22:27:24 · 3655 阅读 · 0 评论 -
HFile写入Cell浅析(一)
在HBase中,无论是MemStore的flush,还是HFile的Compact,都会涉及到新HFile的产生,那么HFile是如何产生的呢?我们又是如何将数据Cell写入到HFile中的呢?本文,我们将会大家简单介绍下HFile写入Cell的主体流程。原创 2016-03-28 22:32:05 · 1781 阅读 · 0 评论 -
HBase-1.2.4 CombinedBlockCache和InclusiveCombinedBlockCache
一、综述 在《HBase-1.2.4 Allow block cache to be external分析》一文的最后,讲解了如何实例化外部缓存MemcachedBlockCache。本文将对上文中提到的几种缓存中的InclusiveCombinedBlockCache和CombinedBlockCache做个综述。 上文中提到的缓存实现,有以下几种: 1原创 2016-12-01 23:54:23 · 889 阅读 · 0 评论 -
HBase-1.2.4LruBlockCache实现分析(一)
BlockCache是HBase中的一个重要特性,相比于写数据时缓存为Memstore,读数据时的缓存则为BlockCache。 LruBlockCache是HBase中BlockCache的默认实现,它采用严格的LRU算法来淘汰Block。原创 2016-12-01 17:28:22 · 2529 阅读 · 0 评论 -
HBase-1.2.4LruBlockCache实现分析(二)
本文介绍LruBlockCache如何获取缓存数据。 缓存数据的获取是在方法getBlock()中实现的,代码如下: /** * Get the buffer of the block with the specified name. * @param cacheKey block's cache key * @param caching true if the原创 2016-12-02 00:01:45 · 777 阅读 · 0 评论 -
HBase源码分析之compact请求发起时机、判断条件等详情(一)
一般说来,任何一个比较复杂的分布式系统,针对能够使得其性能得到大幅提升的某一内部处理流程,必然有一个定期检查机制,使得该流程在满足一定条件的情况下,能够自发的进行,这样才能够很好的体现出复杂系统的自我适应与自我调节能力。我们知道,HBase内部的compact处理流程是为了解决MemStore Flush之后,文件数目太多,导致读数据性能大大下降的一种自我调节手段,它会将文件按照某种策略进行合并,原创 2016-03-07 17:00:42 · 5540 阅读 · 1 评论 -
HBase源码分析之compact请求发起时机、判断条件等详情(二)
近期推出,敬请期待!原创 2016-03-07 17:09:32 · 1092 阅读 · 2 评论 -
HBase的Nonce实现分析
当客户端发送RPC请求给服务端时,基于各种原因,服务器的响应很可能会超时。如果客户端只是在那等待,针对数据的操作,很可能出现服务器端已处理完毕,但是无法通知客户端,此时,客户端只能重新发起请求,可是又可能造成服务端重复处理请求。该如何解决该问题呢?原创 2016-01-05 18:24:56 · 2710 阅读 · 0 评论 -
写在HBase源码分析前面的话
本版块全部为HBase1.0.2相关源码分析文章,系个人研究源码原创写成,除对部分引用标示外,其余均为原创,或翻译源码注释。 该系列文章为与网友交流HBase学习,不做任何其他商业用途~~O(∩_∩)O哈哈~ 由于水平有限,文章基本上是边读源码,边翻译注释,边分析源码写成,没有较强的前后逻辑性,我会在写完全部文章后再回头整理。 由于水平有限,文章原创 2016-01-05 22:57:43 · 4871 阅读 · 5 评论 -
HBase的scan源码分析客户端部分之整体流程(一)
scan的调用代码示例如下: // 创建HBase配置config Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "192.168.1.226");// zookeeper部署的服务器IP config.set("hbas原创 2016-01-12 22:29:47 · 4274 阅读 · 2 评论 -
HBase源码分析之HRegionServer上MemStore的flush处理流程(二)
继上篇文章《HBase源码分析之HRegionServer上MemStore的flush处理流程(一)》遗留的问题之后,本文我们接着研究HRegionServer上MemStore的flush处理流程,重点讲述下如何选择一个HRegion进行flush以缓解MemStore压力,还有HRegion的flush是如何发起的。原创 2016-03-01 11:33:39 · 2518 阅读 · 0 评论 -
HBase源码分析之MemStore的flush发起时机、判断条件等详情
前面的几篇文章,我们详细介绍了HBase中HRegion上MemStore的flsuh流程,以及HRegionServer上MemStore的flush处理流程。那么,flush到底是在什么情况下触发的呢?本文我们将详细探究下HBase中MemStore的flush流程的发起时机,看看到底都有哪些操作,或者哪些后台服务进程会触发MemStore的flush。原创 2016-03-01 22:29:25 · 5550 阅读 · 1 评论 -
HBase源码分析之HRegionServer上的MovedRegionsCleaner工作线程
MovedRegionsCleaner是HRegionServer上一个工作线程,它周期性的清理已被移动Region列表movedRegions中的到达时间的MovedRegionInfo信息,而线程工作的频率和MovedRegionInfo存活时间,均是TIMEOUT_REGION_MOVED,也就是2分钟。原创 2016-03-15 19:59:20 · 954 阅读 · 0 评论 -
HBase源码分析之HRegion上compact流程分析(一)
首先来想两个问题:1、何谓compact?2、它产生的背景是怎样的? compact是指HBase表中HRegion上某个Column Family下,部分或全部HFiles的合并。它是由于数据在持续写入后,MemStore达到一定阈值,被flush到磁盘上,形成许许多多的文件,这些文件如果不做处理,将会严重影响HBase数据读取的效率。所以,在HBase系统内部,需要定期在满足一定条件的情况下,或者由人为手动触发,将这许多文件合并成一个大文件。 那么,在HRegion上,c原创 2016-03-03 20:24:01 · 3257 阅读 · 1 评论 -
HBase源码分析之HRegion上compact流程分析(二)
我们继续HRegion上compact流程分析,接下来要讲的是针对表中某个列簇下文件的合并,即HStore的compact()方法。原创 2016-03-03 21:38:04 · 3852 阅读 · 1 评论 -
HBase源码分析之HRegion上compact流程分析(三)
在《HBase源码分析之HRegion上compact流程分析(二)》一文中,我们没有讲解真正执行合并的CompactionContext的compact()方法。现在我们来分析下它的具体实现。原创 2016-03-04 20:46:54 · 2849 阅读 · 0 评论 -
HBase源码分析之Region定位
我们知道,HBase是一个基于RowKey进行检索的分布式数据库。它按照行的方向将表中的数据切分成一个个Region,而每个Region都会存在一个起始行StartKey和一个终止行EndKey。Region会最终选择一个RegionSever上线,并依靠RegionSever对外提供数据存取服务。那么,HBase是如何实现数据的检索,也就是它如何将需要读写的行Row准确的定位到其所在Region和RegionServer上的呢?本文,我们就将研究下HRegion的定位。原创 2016-03-16 22:29:55 · 6962 阅读 · 0 评论 -
HBase源码分析之HRegionServer上compact流程分析
前面三篇文章中,我们详细叙述了compact流程是如何在HRegion上进行的,了解了它的很多细节方面的问题。但是,这个compact在HRegionServer上是如何发起的?合并时文件是如何选择的呢?在这篇文章中,你将找到答案! 首先,在HRegionServer内部,我们发现,它定义了一个CompactSplitThread类型的成员变量compactSplitThread原创 2016-03-05 17:51:17 · 3298 阅读 · 1 评论 -
HMaster分析之Region的负载均衡实现(一)
HBase中Region是表按行方向切分的一个个数据区域,由RegionServer负责管理,并向外提供数据读写服务。如果一个RegionServer上的Region过多,那么该RegionServer对应的就会承担过多的读写等服务请求,也就有可能在高并发访问的情况下,造成服务器性能下降甚至宕机。如此,RegionServer间Region的动态负载均衡,也就成了HBase实现高性能读写请求访问的原创 2016-02-20 23:43:16 · 4814 阅读 · 3 评论 -
HBase源码分析之KeyValue
HBase内部,单元格Cell的实现为KeyValue,它是HBase某行数据在内存中的组织形式,由Key Length、Value Length、Key、Value四大部分组成。其中,Key又由Row Length、Row、Column Family Length、Column Family、Column Qualifier、Time Stamp、Key Type七部分组成。原创 2016-03-30 15:53:30 · 6837 阅读 · 4 评论 -
HBase行锁原理及实现
请带着如下问题阅读本文。 1、什么是行锁? 2、HBase行锁的原理是什么? 3、HBase行锁是如何实现的? 三、HBase行锁的实现 HBase的行锁主要是通过HRegion的两个内部类实现的,其中一个是RowLock,另外一个是RowLockContext。 我们首先看RowLock原创 2016-02-20 23:41:50 · 10487 阅读 · 6 评论 -
HBase-1.2.4 Allow block cache to be external分析
从HBase-1.1.0起,HBase可以使用memcached作为外部BlockCache,这是一个在设备失效或者升级时不会发生完全的冷缓存的很好的特性。用句通俗的话讲,就是HBase出现故障或者升级时,缓存轻易不会丢失。原创 2016-12-01 23:35:54 · 937 阅读 · 0 评论
分享