自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 这一年来败的户外用品

这一篇与技术无关,整理了一下2011败在自己身上的户外用品,为2012年的行走做次铺垫。2011败的物品清单:[list][b]衣物类[/b][*]冲锋裤一条[*]抓绒衣一件[*]神衣一件[*]冲锋衣一件(春夏秋用)[*]登山袜六双[*]登山鞋两双[b]辅助衣物类[/b][*]80L背包一个[*]40L背包一个[*]户外腰包一个[*]雪套...

2012-01-21 03:16:56 162

lease引发的血案

今天线上出现了一个故障惊出一身冷汗,经过查明原来是lease引发的问题。不过查问题的过程让我们耽误了很多修复故障的时间,很是不爽。起因:datanode和regionserver以及master同时挂掉现象:datanode重启后,regionserver重启不久,多台regionserver相继即挂掉,log显示:[code="html"]org.apache.hadoop.hb...

2011-12-19 23:01:30 213

原创 关于zookeeper的讨论

zookeeper作为分布式集群广泛使用的应用程序协调服务集群。它的特点就不说了,很多人分析过。前段时间微博上说到zk有一些问题,其实只是某些场合下zk使用需要小心,这里列举一下:[list=1][*]zk不适合做大数据量的存储,简单来说就是不适合做公用存储。原因很简单,每个数据要同步到所有server才返回,既慢,而且消耗带宽,client还容易阻塞。所以这种应用对zk来说太“重”了...

2011-12-19 02:41:03 181

原创 todd的hadoop world的ppt笔记

todd的ppt是本次hadoop world大会上的亮点。之前知道他让hdfs随机读性能提升了2-3倍。具体他们做了哪些改进呢?这里详细记录一下原理。(都是ppt上翻译过来再加上理解的)[code="xml"]IO cache上的改进:1 增加了预读,避免大量随机seek,对mapreduce这样的只读一次数据的应用很有效2 去掉了write在OS层面的cache,因为对ma...

2011-12-14 09:15:04 120

bookkeeper简单分析

上一篇介绍了bookkeeper的安装与测试。这一篇介绍一下bookkeeper的结构与原理。这是官网给出的bookkeeper结构:[img]http://dl.iteye.com/upload/attachment/599489/9e5ce5f8-a69b-39b3-8727-48e5f69d3d94.jpg[/img] bookie就是bookkeeper中...

2011-12-03 19:58:39 808

bookkeeper安装及测试体验

随着zookeeper 3.4.0 release,bookkeeper被从zk中分离成为了一个独立的项目。这是一个轻量级的项目,代码并不复杂,可以想见未来很可能被广泛用在各种应用系统中,以提供基于日志的高可靠共享消息存储。 bookkeeper是一个基于zookeeper实现的分布式共享消息存储服务,它提供高可靠性、高并发性,以及很高的读写性能。 向bookkeepe...

2011-12-03 19:31:44 872

原创 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 138

原创 在不同版本hdfs集群之间转移数据

本文仅供记录一下程序心得: 很多人会有这样一个需求:将一个hdfs集群上的数据写入另一个hdfs集群所在的hbase数据库。通常情况下两个hdfs集群的版本差距并不大,这样的程序会很容易写。但有时会跨大版本。比如作者所在的厂子,数据都在基于hadoop0.19.2版本修改的hdfs集群上,要将这样的数据导入版本为0.20.2+的hdfs集群,就不能使用同一个hadoop jar包来完成了...

2011-10-26 18:56:30 494

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 959

原创 splitlog期间丢失数据的问题

splitlog是保证在重启或rs挂掉后,恢复hlog的重要手段。master需要将hlog写到各个region目录下的recovered.edits目录中,然后由各台rs自行replay这个目录来恢复数据。这个过程中,master会启动一个读线程和多个写线程,一边读到内存中,一边将内存队列中的数据写到各个目录中去。 当master将.logs下的数据写到recovered.ed...

2011-10-18 22:26:10 229

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 93

两次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 735

hbase中regionserver常见的oom原因分析

首先要清楚reginserver中内存是如何使用的。 reginserver中内存总体分成三部分:blocksize专供读使用的内存,memstore供读写使用的内存,其它内存。 其中前两者的大小在配置中分别通过hfile.block.cache.size以及hbase.regionserver.global.memstore.upperLimit来控制,两者的...

2011-09-15 10:40:09 787

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 442

disable table失败的处理

相信每一个维护hbase集群的运维人员一定碰到过disable失败,陷入无穷的"Region has been PENDING_CLOSE for too long..."状态,此时没有什么好的办法处理。经常需要重启集群。 这个问题产生的原因非常讨厌,经过一段时间的分析和验证,得到了根本原因。要理解它,必须从disable的原理说起:[list][*] disable...

2011-08-30 20:02:56 266

原创 丢数据

对于任何存储,丢失数据后,不管是没找到原因,或者没找到解决方案,都是无法过用户这一关的。 今天上午因为meta表损坏丢失了数据,虽然即将开发完成恢复meta表的工具,但是没找到原因很痛苦啊...

2011-08-22 13:23:48 95

ConcurrentModificationException异常的原因及解决

今天在对map进行遍历的程序中发现抛出ConcurrentModificationException 异常: 一个线程中: [code="java"]Map map = new ConcurrentHashMap(); while((row = results.next()) != null){ map.clear(); ... ...

2011-08-18 13:59:58 622

使用zookeeper管理多个hbase集群

zookeeper是hbase集群的"协调器"。由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器。多个hbase集群共用zookeeper集群的方法是使用同一组ip,修改不同hbase集群的"zookeeper.znode.parent"属性,让它们使用不同的根目录。比如cluster1使用/hbase-c1,clust...

2011-08-16 15:30:19 164

一次奇异的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 159

多region下的hbase写入问题

最近在集群上发现hbase写入性能受到较大下降,测试环境下没有该问题产生。而生产环境和测试环境的区别之一是生产环境的region数量远远多于测试环境,单台regionserver服务了约3500个region。 通过jstack工具检查到大半写入线程BLOCKED状态在"public synchronized void reclaimMemStoreMemory() {"这一行,...

2011-08-10 13:13:34 128

perftools查看堆外内存并解决hbase内存溢出

最近线上运行的hbase发现分配了16g内存,但是实际使用了22g,堆外内存达到6g。感觉非常诡异。堆外内存用一般的工具很难查看,可以通过google-perftools来跟踪:[url]http://code.google.com/p/google-perftools/downloads/list[/url] 它的原理是在java应用程序运行时,当调用malloc时换用它的...

2011-08-08 16:51:12 392

原创 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 134

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 75

原创 hbase中缓存的优先级

今天同事问到hbase中in-memory属性的作用,以前没有注意过,今天仔细看了下代码:[code="java"] // Instantiate priority buckets BlockBucket bucketSingle = new BlockBucket(bytesToFree, blockSize, singleSize())...

2011-06-15 16:30:51 86

原创 mvn学习

maven菜鸟,权当记录:原文链接:http://jackyrong.iteye.com/blog/935590我直接拷贝了1 mvn -v查看版本 2 设置代理 编辑settings.xml文件 abc true http ... ...

2011-06-08 16:32:04 83

原创 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 83

原创 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 131

原创 hdfs上的append测试

  hbase在写入数据之前会先写hlog,hlog目前是sequencefile格式,采用append的方式往里追加数据。之前团队的同学测试关闭hlog会一定程序上提升写hbase的稳定性。而在我之前的想象中,hlog的写入速度应该是稳定的。于是写了个append程序专门测试hdfs的append性能。  代码如下:[code="java"]  FSDataOutputStream ...

2011-05-04 23:42:29 299

原创 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 384

原创 hbase中的缓存的计算与使用

     hbase中的缓存分了两层:memstore和blockcache。     其中memstore供写使用,写请求会先写入memstore,regionserver会给每个region提供一个memstore,当memstore满64MB以后,会启动flush刷新到磁盘。当memstore的总大小超过限制时(heapsize * hbase.regionserver.glob...

2011-04-13 20:20:54 208

原创 看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 152

原创 对提高hbase写性能的一些思考

以下为使用hbase一段时间的三个思考,由于在内存充足的情况下hbase能提供比较满意的读性能,因此写性能是思考的重点。希望读者提出不同意见讨论  1 autoflush=false的影响    无论是官方还是很多blog都提倡为了提高hbase的写入速度而在应用代码中设置autoflush=false,然后lz认为在在线应用中应该谨慎进行该设置。原因如下:    a auto...

2011-04-09 17:40:13 120

原创 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 409

原创 zookeeper清除日志文件工具

zookeeper运行时间长了以后,日志会成为一个比较大的问题。比如作者压力测试hbase一周以后,zookeeper日志文件达到了10G的规模。由于zookeeper日志文件不能随意删除,因为一个长时间不更新的节点完全有可能存在于几天前的一个日志文件中。那么如何安全地删除它们呢?可以自己编写程序处理,但是zookeeper也提供给了我们一个方便的小工具:PurgeTxnLog ...

2011-04-01 22:06:06 321

原创 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 287

原创 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 188

原创 监控hbase集群

对于稳定维护hbase,全面掌握分布式系统中的每一台主机状况,以及检测系统可能或正在出现的瓶颈,强大的监控是必须的。比如:  region数、block住的内存大小、请求数、命中率、flush/split/compact次数和时间、读写响应时间分布、storefile数目、jvm状况、本文介绍将hbase监控加入ganglia中hbase本身集成了jmx进行数据采集...

2011-03-29 17:48:46 254

原创 hbase 源码解析之master篇2

HMaster的RPC接口,分两类: HMaster与RegionServer通讯接口,总共只有两个-->regionServerStartup: 当regionserver启动时会调用该接口 -->将发请起求的RS的信息写入serverInfo,注意这里的hostname为master所识别的hostname,而非RS告诉master的 -->调用se...

2011-03-27 16:52:38 130

原创 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 201

原创 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 113

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除