深入分析HBase Compaction机制

四月 27th, 2013 by klose | 2 Comments | Filed in 互联网应用, 海量数据存储与处理

Compaction介绍 Compaction是buffer->flush->merge的Log-Structured Merge-Tree模型的关键操作,主要起到如下几个作用: 1)合并文件 2)清除删除、过期、多余版本的数据 3)提高读写数据的效率 Minor & Major Compaction的区别 1)Minor操作只用来做部分文件的合并操作以及包括minVersion=0并且设置ttl的过期版本清理,不做任何删除数据、多版本数据的清理工作。 2)Major操作是对Region下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。 从这个功能上理解,Minor Compaction也不适合做Major的工作,因为部分的数据清理可能没有意义,例如,maxVersions=2,那么在少部分文件中,是否是kv仅有的2个版本也无法判断。 下面是引用: There are two types of compactions: minor and major. Minor compactions will

Tags: , ,

HBase Flush操作流程以及对读写服务的影响

四月 19th, 2013 by klose | No Comments | Filed in 海量数据存储与处理

HBase Flush操作流程以及对读写服务的影响   HBase的Flush操作的触发条件: 1)Manual调用,HRegionInterface#flushRegion,可以被用户态org.apache.hadoop.hbase.client.HBaseAdmin调用flush操作实现,该操作会直接触发HRegion的internalFlush。 2)HRegionServer的一次更新操作,使得整个内存使用超过警戒线。警戒线是globalMemStoreLimit, RS_JVM_HEAPSIZE * conf.getFloat(“hbase.regionserver.global.memstore.upperLimit”),凡是超过这个值的情况,会直接触发FlushThread,从全局的HRegion中选择一个,将其MemStore刷入hdfs,从而保证rs全局的memstore容量在可控的范围。   RS上HRegion的选择算法: 步骤1:RS上的Region,按照其MemStore的容量进行排序。 步骤2:选出Region下的Store中的StoreFile的个数未达到hbase.hstore.blocking

Tags: , , , ,

HBase Metrics参数详解

四月 2nd, 2013 by klose | 5 Comments | Filed in 互联网应用, 海量数据存储与处理

本研究针对HBase 0.94.* 及以上版本的系统。 RegionServer 本目标主要集中分析在RegionServer提供的相关Metrics接口。在0.94新版本中,Metrics包括:RegionServerMetrics、JvmMetrics、以及RegionServerDynamicMetrics。下面分别进行介绍。 1、RegionServerMetrics 这是延续了以前版本的Metrics。它主要是以RegionServer为单位的基本功能的监控信息的收集,主要包括: 1)通用信息的收集。例如RS内store个数、storefiles的个数等。 2)与RS整体读写性能指标相关的参数。例如Cacheblock相关的信息、RS内读写请求个数、写操作相关的性能、以及读操作相关的性能。 3)功能性调整的参数个数。如Compaction、Split等。 下面细化这些参数的含义。(ps:参数名省略了前两位的hbase.regionserver.,例如如果blockCacheCount,那么Metrics上实际名字是hbase.regi

Tags: , ,