HBase新特性—Stripe Compaction

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

借鉴于LevelDB、Cassandra的Compaction方法,https://issues.apache.org/jira/browse/HBASE-7667 提出了Stripe Compaction的方法。 Motivation: 1)过多Region会增大RS维护的开销,降低RS的读写性能。随着数据量的增大,在一定程度上增加Region个数,会提高系统的吞吐率。然而,RS上服务的Region个数增多,增加了RS下内存维护的开销,尤其每个Store下都配置有一个MemStore,从而会造成频率更高的Flush操作,影响系统的读写性能。因此,如果能够提出更轻量级的mini-Region,不仅能够降低服务多个Region的开销,而且能够提升读写数据的效率。 2) Region Compaction容易”放大”。例如,Region区间为[1FFF,2FFF),在该区间内仅有[1FFF,21FF)区间有大量的写操作(put、delete),但是,在触及MajorCompaction条件时,却需要对所有的文件执行Maj

Tags: , , , , ,

HBase实战系列3—搭建ThriftServer实时监控系统

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

背景: 在hbase应用中,如果使用C++来访问HBase,往往通过ThriftServer进行数据的读写,ThriftServer服务的状况直接影响了应用服务的体验。因此,在HBase ThriftServer之上的Metrics系统、以及实时监控系统,可以第一时间发现服务质量变化以及相关问题,同时,良好的监控系统,也有助于服务的完善。 ThriftServer实时监控系统的挑战 1)ThriftServer的服务具有分散性。我们一般为不同的应用启动多个ThriftServer,那么如果我们想多维度统计分析某个应用的统计状况,就会比较困难。例如:百川抓取平台,随机使用多个ThriftServer进行读写操作,单个ThriftServer的实时请求状况可以很容易分析,但是如果想看整个百川平台对于HBase集群的整体压力,就必须实时地从不同的ThriftServer中收集相关读写请求的数据,然后还得将分散到不同节点上的数据,进行聚

Tags: , , , ,

HBase实战系列2—Region监控

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

1、背景 随着大数据表格应用的驱动,我们的HBase集群越来越大,然而由于机器、网络以及HBase内部的一些不确定性的bug,使得系统面临着一些不确定性的故障。 因此,HBase上有很多的Region组成,需要控制每个表格的Region的状态。 分析: 1)实时掌控Region的状态。应用的每次访问要直接与HBase某个Region关联,需要探测Table上Region是否处于可用状态。 2)Region的读写与底层的HDFS的状态相互关联。这种关联决定了通过Region的读写状况的监控,也可以反映HDFS的状况。 2、实战工具  org.apache.hadoop.hbase.tool.Canary 监控Region的可用和读写状况。==>对应分析中前两个问题。 使用方法: Usage: bin/hbase org.apache.hadoop.hbase.tool.Canary [opts] [table 1 [table 2...]] where [opts] are: -help          Show this help

Tags: , ,

HBase实战系列1—压缩与编码技术

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

1、hbase压缩与编码的配置 安装LZO 解决方案: 1)apt-get install liblzo2-dev 2)hadoop-gpl-compression-0.2.0-dev.jar 放入classpath 把libgpl下的共享库文件放入/opt/hbase/hbase/lib/native/Linux-amd64-64/ libgplcompression.a libgplcompression.la libgplcompression.so libgplcompression.so.0 libgplcompression.so.0.0.0 3)配置: <property> <name>io.compression.codecs</name> <value>com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec</value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property> 4)测试: hbase org.apache.hadoop.hbase.u

Tags: , , ,

系统性能分析的实践方法

六月 3rd, 2013 by klose | No Comments | Filed in 互联网应用, 海量数据存储与处理

任何系统的性能分析以及分布式负载平衡策略的执行,需要首先了解当前系统的资源使用情况。 从资源角度进行划分,可以把资源分为如下4类: 1)处理器资源,CPU 2)内存资源,Memory,从广义概念上讲,这还包括Swap\Cache\Buffer等 3)磁盘资源,Disk 4) 网络资源,Network IO,从广义概念上讲,还要考虑上层网络交换机的带宽和交换机之间的带宽。 1、CPU分析 CPU分析常用的工具top。 2、内存分析 内存分析最常用的工具有free、vmstat等。 一般内存的分析要分成两个层次来进行: 1)系统层面上。free可以查看当前系统的内存使用状况,用来分析机器的内存整体使用状况。 Linux内核为了获取更好的性能,总会尽可能地使用空余内存作为系统Cache,从上图可以看到有23G的系统Cache,对于读多写少的应用而言,这个数据是正常的。 vmstat是一个可以实时查看

Tags: