
hbase
koven2049
这个作者很懒,什么都没留下…
展开
-
hbase中的缓存的计算与使用
hbase中的缓存分了两层:memstore和blockcache。 其中memstore供写使用,写请求会先写入memstore,regionserver会给每个region提供一个memstore,当memstore满64MB以后,会启动flush刷新到磁盘。当memstore的总大小超过限制时(heapsize * hbase.regionserver.glob...原创 2011-04-13 20:20:54 · 249 阅读 · 0 评论 -
hbase性能测试小结
性能测试小结:测试环境:机器:1 client 5 regin server 1 master 3 zookeeper配置:8 core超到16 /24G内存,region server分配了4G heap /单seta磁盘,raid10后500GB系统:Red Hat Enterprise Linux Server release 5.4版本:hadoop-0.20.2+...原创 2011-03-24 13:26:07 · 140 阅读 · 0 评论 -
hbase 源码解析之master篇1
master启动过程: -->首先初始化HMaster -->创建一个rpcServer,其中并启动 -->启动一个Listener线程,功能是监听client的请求,将请求放入nio请求队列,逻辑如下: -->创建n个selector,和一个n个线程的readpool,n由"ipc.server.read.threadpool.size"决...原创 2011-03-24 23:56:57 · 237 阅读 · 0 评论 -
hbase 源码解析之master篇2
HMaster的RPC接口,分两类: HMaster与RegionServer通讯接口,总共只有两个-->regionServerStartup: 当regionserver启动时会调用该接口 -->将发请起求的RS的信息写入serverInfo,注意这里的hostname为master所识别的hostname,而非RS告诉master的 -->调用se...原创 2011-03-27 16:52:38 · 162 阅读 · 0 评论 -
hbase中的deleteColumn
Delete类的接口有两个方法:deleteColumns和deleteColumn,它们的区别从method注释里可以看到:[code="html"] deleteColumns:Delete all versions of the specified column with a timestamp less than or equal to the specified tim...2011-10-26 16:59:42 · 1025 阅读 · 0 评论 -
在不同版本hdfs集群之间转移数据
本文仅供记录一下程序心得: 很多人会有这样一个需求:将一个hdfs集群上的数据写入另一个hdfs集群所在的hbase数据库。通常情况下两个hdfs集群的版本差距并不大,这样的程序会很容易写。但有时会跨大版本。比如作者所在的厂子,数据都在基于hadoop0.19.2版本修改的hdfs集群上,要将这样的数据导入版本为0.20.2+的hdfs集群,就不能使用同一个hadoop jar包来完成了...原创 2011-10-26 18:56:30 · 525 阅读 · 0 评论 -
监控hbase集群
对于稳定维护hbase,全面掌握分布式系统中的每一台主机状况,以及检测系统可能或正在出现的瓶颈,强大的监控是必须的。比如: region数、block住的内存大小、请求数、命中率、flush/split/compact次数和时间、读写响应时间分布、storefile数目、jvm状况、本文介绍将hbase监控加入ganglia中hbase本身集成了jmx进行数据采集...原创 2011-03-29 17:48:46 · 288 阅读 · 0 评论 -
bulk-load装载hdfs数据到hbase小结
bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html:hbase提供了现成的程序将hdfs上的文件导入hbase,即bulk-load方式。它包括两个步骤(也可以一次完成):1 将文件包装成...原创 2011-04-01 11:36:27 · 222 阅读 · 0 评论 -
多region下的hbase写入问题
最近在集群上发现hbase写入性能受到较大下降,测试环境下没有该问题产生。而生产环境和测试环境的区别之一是生产环境的region数量远远多于测试环境,单台regionserver服务了约3500个region。 通过jstack工具检查到大半写入线程BLOCKED状态在"public synchronized void reclaimMemStoreMemory() {"这一行,...2011-08-10 13:13:34 · 150 阅读 · 0 评论 -
hbase开启lzo压缩
hbase只支持对gzip的压缩,对lzo压缩支持不好。在io成为系统瓶颈的情况下,一般开启lzo压缩会提高系统的吞吐量。但这需要参考具体的应用场景,即是否值得进行压缩、压缩率是否足够等等。想要hbase支持lzo压缩,参照以下步骤:1 首先要让系统支持lzo动态库,安装lzo-2.00以上版本:[url]http://www.oberhumer.com/opensource/lzo/...原创 2011-04-01 21:23:11 · 314 阅读 · 0 评论 -
hbase的replication使用
hbase-0.90.0的一个重要改进是引入了replication机制,使它的数据完整性得到了进一步的保障。虽然这一功能还不太完善,但是今后必然会变得更加重要。hbase的replication机制很像mysql statement-based replication。它是通过WALEdit和hlog来实现的。当请求发送给master cluster时,hlog日志放入hdfs的同时进入...原创 2011-04-02 00:05:31 · 480 阅读 · 0 评论 -
一次奇异的getRegionInfo异常定位
今天在线上环境的监控页面中点击http://hbasemaster:60010/table.jsp?name=table1,界面中没有显示出应用的region情况,通过修改table.jsp可以观察到jsp程序在执行regions = table.getRegionsInfo()时,会抛出以下异常。[code="html"]java.lang.NullPointerException...2011-08-10 19:55:21 · 189 阅读 · 0 评论 -
对提高hbase写性能的一些思考
以下为使用hbase一段时间的三个思考,由于在内存充足的情况下hbase能提供比较满意的读性能,因此写性能是思考的重点。希望读者提出不同意见讨论 1 autoflush=false的影响 无论是官方还是很多blog都提倡为了提高hbase的写入速度而在应用代码中设置autoflush=false,然后lz认为在在线应用中应该谨慎进行该设置。原因如下: a auto...原创 2011-04-09 17:40:13 · 157 阅读 · 0 评论 -
看facebook分享hbase经验的笔记
http://www.qconbeijing.com/download/Nicolas.pdf重点看了下facebook做了哪些改进以及他们的运维经验,比较重要的有以下几点: 改进:1 加强了行级的ACID约束2 改善了数据的分布规则,可以配置hdfs的replicas所在节点3 改写了master的assign规则,利用zk来进行assign4 不用停机地重启c...原创 2011-04-10 00:34:33 · 184 阅读 · 0 评论 -
lease引发的血案
今天线上出现了一个故障惊出一身冷汗,经过查明原来是lease引发的问题。不过查问题的过程让我们耽误了很多修复故障的时间,很是不爽。起因:datanode和regionserver以及master同时挂掉现象:datanode重启后,regionserver重启不久,多台regionserver相继即挂掉,log显示:[code="html"]org.apache.hadoop.hb...2011-12-19 23:01:30 · 248 阅读 · 0 评论 -
ycsb的使用
ycsb是一个非常方便的针对分布式文件系统的测试工具:[url]https://github.com/brianfrankcooper/YCSB[/url]特点:1 可以任意设置读写比例、线程数量,打印结果比较详细2 它是hbase等nosql官方jira上面的测试标准,与人交流时ycsb的测试数据最能说明问题缺点:1 每次测试时数据需要重新写入,否则读取时选取不了正确的k...原创 2011-03-20 12:06:47 · 388 阅读 · 0 评论 -
splitlog期间丢失数据的问题
splitlog是保证在重启或rs挂掉后,恢复hlog的重要手段。master需要将hlog写到各个region目录下的recovered.edits目录中,然后由各台rs自行replay这个目录来恢复数据。这个过程中,master会启动一个读线程和多个写线程,一边读到内存中,一边将内存队列中的数据写到各个目录中去。 当master将.logs下的数据写到recovered.ed...原创 2011-10-18 22:26:10 · 250 阅读 · 0 评论 -
hbase中多次加载root及meta的bug
执行以下case可以见到root或meta被加载两次:[list][*]1 kill掉root和meta表所在的rs[*]2 start该台rs[*]3 立即再次kill掉这台rs[*]4 立即再次start该台rs[/list] 原因: 当ROOT表和META表所在的server如果挂掉了,不管是重启这台rs还是等待它自然超时,master都会...2011-10-18 22:24:06 · 119 阅读 · 0 评论 -
hbase写入性能影响续
今天发现hbase在写入一张新表时,写入过程中时常会出现一段连续的时间无法写入数据,时间长达10s以上。经过查看region server日志发现有如下记录:[code="java"]2011-04-18 14:50:22,942 INFO org.apache.hadoop.hbase.regionserver.HRegion: Blocking updates for 'I...原创 2011-04-18 15:28:43 · 411 阅读 · 0 评论 -
hdfs上的append测试
hbase在写入数据之前会先写hlog,hlog目前是sequencefile格式,采用append的方式往里追加数据。之前团队的同学测试关闭hlog会一定程序上提升写hbase的稳定性。而在我之前的想象中,hlog的写入速度应该是稳定的。于是写了个append程序专门测试hdfs的append性能。 代码如下:[code="java"] FSDataOutputStream ...原创 2011-05-04 23:42:29 · 331 阅读 · 0 评论 -
secondary index for hbase
最近因为业务需求的原因,需要开始研究hbase中的secondary index。 业务模型有点类似于rmdb中的select from table where xx=xx,这里的xx无法做成rowkey,因此需要secondary index,否则只能全表扫描。尽管hbase的全表扫描是优势,但是在线应用也接受不了相应的延迟。 在早期的hbase中(0.20.x)曾经出...原创 2011-05-07 23:05:00 · 159 阅读 · 0 评论 -
使用zookeeper管理多个hbase集群
zookeeper是hbase集群的"协调器"。由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器。多个hbase集群共用zookeeper集群的方法是使用同一组ip,修改不同hbase集群的"zookeeper.znode.parent"属性,让它们使用不同的根目录。比如cluster1使用/hbase-c1,clust...2011-08-16 15:30:19 · 194 阅读 · 0 评论 -
disable table失败的处理
相信每一个维护hbase集群的运维人员一定碰到过disable失败,陷入无穷的"Region has been PENDING_CLOSE for too long..."状态,此时没有什么好的办法处理。经常需要重启集群。 这个问题产生的原因非常讨厌,经过一段时间的分析和验证,得到了根本原因。要理解它,必须从disable的原理说起:[list][*] disable...2011-08-30 20:02:56 · 295 阅读 · 0 评论 -
hbase的export与import工具
hbase提供了导出表的方案,将指定的表导出到HDFS或本地,这样方便了备份或数据转移。 最快的方式是通过mapreduce来完成这件事,需要在hbase的conf中添加mapred-site.xml:[code="java"] mapred.job.tracker 192.168.0.1:9001 hadoop.tmp.dir /tmp/ha...2011-09-01 08:01:43 · 481 阅读 · 0 评论 -
hbase交流记录
前几天和公司的同事杨传辉(http://www.nosqlnotes.net/)做了简单的关于hbase的交流。这里做下简单的记录。Q为杨传辉,A为我。[table]|Q: .meta.和root表是否要分裂?||A: meta表和root表不会分裂,代码中有所判断。||Q: 如果不分裂,那么都只有1个region?||A: ...||(查看代码后)A: meta和ro...原创 2011-06-02 10:34:03 · 107 阅读 · 0 评论 -
hbase中regionserver常见的oom原因分析
首先要清楚reginserver中内存是如何使用的。 reginserver中内存总体分成三部分:blocksize专供读使用的内存,memstore供读写使用的内存,其它内存。 其中前两者的大小在配置中分别通过hfile.block.cache.size以及hbase.regionserver.global.memstore.upperLimit来控制,两者的...2011-09-15 10:40:09 · 838 阅读 · 0 评论 -
hbase0.90.1安装问题
因为hbase的日志很分散,出问题时需要查看每个进程对应的日志,包括master/region/zookeeper出了三次问题:1 hbase.cluster.distributed=false,即单机版时,启动日志中报:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = C...原创 2011-02-22 17:25:05 · 114 阅读 · 0 评论 -
hbase中缓存的优先级
今天同事问到hbase中in-memory属性的作用,以前没有注意过,今天仔细看了下代码:[code="java"] // Instantiate priority buckets BlockBucket bucketSingle = new BlockBucket(bytesToFree, blockSize, singleSize())...原创 2011-06-15 16:30:51 · 107 阅读 · 0 评论 -
hbase-0.90.4的主要更新
apache邮件列表中提到0.90.4己经准备release了,看了一下所有的patch,这个版本在性能改进上基本没有改进,主要是对很多异常下bug的修复,其中比较重要的bug有以下几个:1 [url]https://issues.apache.org/jira/browse/HBASE-3820[/url] ----Splitlog() executed while the name...2011-07-15 22:15:43 · 96 阅读 · 0 评论 -
hbase上应用lucene创建索引及检索
hbasene([url]https://github.com/akkumar/hbasene[/url])是开源项目,在hbase存储上封装使用Lucene来创建索引,代码API非常简单,熟悉lucene的朋友可以很方便地创建。 以下为测试代码,完成读取一张hbase上记录url和用户id的表,对其创建索引并进行简单的基于url的索引的代码。当取到search的结果后,就可...原创 2011-07-21 17:14:50 · 161 阅读 · 0 评论 -
hbase中对deadserver处理的困扰
hbase在一个regionServer死掉后,即使重启了这个server,deadlist中也不会去掉原先死去的deadserver。例如:[code="java"]hbase shell>status5 servers, 0 dead, 6.2000 average load[/code]停掉其中一个节点[code="java"]hbase-daemon.sh stop...原创 2011-03-17 10:50:58 · 845 阅读 · 0 评论 -
两次hbase丢失数据的故障及原因分析
hbase的稳定性是近期社区的重要关注点,毕竟稳定的系统才能被推广开来,这里有几次稳定性故障和大家分享。 第一次生产故障的现象及原因 现象:[code="java"]1 hbase发现无法写入2 通过hbck检测发现.META.表中出现空洞,具体log是:;Chain of regions in table ... is broken; edges does ...2011-10-18 18:12:08 · 784 阅读 · 0 评论 -
hbase写被block住的典型案例分析
今天一个线上集群出现莫名奇妙不能写入数据的bug,log中不断打印如下信息:[quote]2011-11-09 07:35:45,911 INFO org.apache.hadoop.hbase.regionserver.HRegion: Blocking updates for 'IPC Server handler 32 on 60020' onregion xxx,333-2...原创 2011-11-10 22:32:42 · 160 阅读 · 0 评论