`
lc_koven
  • 浏览: 353615 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
    相信每一个维护hbase集群的运维人员一定碰到过disable失败,陷入无穷的"Region has been PENDING_CLOSE for too long..."状态,此时没有什么好的办法处理。经常需要重启集群。     这个问题产生的原因非常讨厌,经过一段时间的分析和验证,得到了根本原因。要理解它,必须从disable的原理说起: disable线程是一个DisableTableHandler类,我们看它的handleDisableTable()方法,在while循环中先获取table的regions列表,然后调用BulkDisabler的bulkA ...

丢数据

    对于任何存储,丢失数据后,不管是没找到原因,或者没找到解决方案,都是无法过用户这一关的。     今天上午因为meta表损坏丢失了数据,虽然即将开发完成恢复meta表的工具,但是没找到原因很痛苦啊
    今天在对map进行遍历的程序中发现抛出ConcurrentModificationException 异常:     一个线程中: Map<byte[],byte[]> map = new ConcurrentHashMap<byte[],byte[]>(); while((row = results.next()) != null){ map.clear(); ... queue.put(map); }     另一个线程中: while(queue.size() > 0){ lin ...
    zookeeper是hbase集群的"协调器"。由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器。多个hbase集群共用zookeeper集群的方法是使用同一组ip,修改不同hbase集群的"zookeeper.znode.parent"属性,让它们使用不同的根目录。比如cluster1使用/hbase-c1,cluster2使用/hbase-c2,等等。       使用以上方法有一个现实的问题:如何避免各集群的相互干扰?因为client的配置权是在用户手上,并不能保证用户永 ...
    今天在线上环境的监控页面中点击http://hbasemaster:60010/table.jsp?name=table1,界面中没有显示出应用的region情况,通过修改table.jsp可以观察到jsp程序在执行regions = table.getRegionsInfo()时,会抛出以下异常。 java.lang.NullPointerException ...
    最近在集群上发现hbase写入性能受到较大下降,测试环境下没有该问题产生。而生产环境和测试环境的区别之一是生产环境的region数量远远多于测试环境,单台regionserver服务了约3500个region。     通过jstack工具检查到大半写入线程BLOCKED状态在"public synchronized void reclaimMemStoreMemory() {"这一行,这是在put之前的一个检查过程。     hbase在每次put以前,需要检查当前regionserver上的memstore是否超过总memstore阀值,如果超过,需要block住 ...
    最近线上运行的hbase发现分配了16g内存,但是实际使用了22g,堆外内存达到6g。感觉非常诡异。堆外内存用一般的工具很难查看,可以通过google-perftools来跟踪: http://code.google.com/p/google-perftools/downloads/list     它的原理是在java应用程序运行时,当调用malloc时换用它的libtcmalloc.so,这样就能做一些统计了 下载http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.gz,confi ...
    hbasene(https://github.com/akkumar/hbasene)是开源项目,在hbase存储上封装使用Lucene来创建索引,代码API非常简单,熟悉lucene的朋友可以很方便地创建。     以下为测试代码,完成读取一张hbase上记录url和用户id的表,对其创建索引并进行简单的基于url的索引的代码。当取到search的结果后,就可以拿到想要的数据了。由于分词后将原始内容进行了反向索引,所以匹配就转化为了查询,速度相当快。     其中getDocumentFromHTable为读取一张hbase上己有的表,将url字段提取出来创建content索引。 ...
    apache邮件列表中提到0.90.4己经准备release了,看了一下所有的patch,这个版本在性能改进上基本没有改进,主要是对很多异常下bug的修复,其中比较重要的bug有以下几个: 1 https://issues.apache.org/jira/browse/HBASE-3820 ----Splitlog() execu ...
    今天同事问到hbase中in-memory属性的作用,以前没有注意过,今天仔细看了下代码: // Instantiate priority buckets BlockBucket bucketSingle = new BlockBucket(bytesToFree, blockSize, singleSize()); BlockBucket bucketMulti = new BlockBucket(bytesToFree, blockSize, multiSize()); BlockBuc ...
maven菜鸟,权当记录: 原文链接:http://jackyrong.iteye.com/blog/935590 我直接拷贝了 1 mvn -v查看版本 2 设置代理    编辑settings.xml文件    <proxies>    <proxy>        <id>abc</id>        <active>true</active>       <protocol>http</protocol>         <host> </host> ...
前几天和公司的同事杨传辉(http://www.nosqlnotes.net/)做了简单的关于hbase的交流。这里做下简单的记录。Q为杨传辉,A为我。 Q: .meta.和root表是否要分裂?A: meta表和root表不会分裂,代码中有所判断。Q: 如果不分裂,那么都只有1个region?A: ...(查看代码后)A: meta和root表是要split的,.meta.和-root-不split是在0.20.6以前的版本,升级到0.89以后都会split了,只是不分裂的代码接口还保留着,实际调用的并不是这段代码。-root-理论上也会split,而且一旦发生split就完蛋。但是因为ro ...
  最近因为业务需求的原因,需要开始研究hbase中的secondary index。   业务模型有点类似于rmdb中的select  from table where xx=xx,这里的xx无法做成rowkey,因此需要secondary index,否则只能全表扫描。尽管hbase的全表扫描是优势,但是 ...
  hbase在写入数据之前会先写hlog,hlog目前是sequencefile格式,采用append的方式往里追加数据。之前团队的同学测试关闭hlog会一定程序上提升写hbase的稳定性。而在我之前的想象中,hlog的写入速度应该是稳定的。于是写了个append程序专门测试hdfs的append性能。   代码如下:   FSDataOutputStream stm = fs.create(path, true, conf.getInt("io.file.buffer.size", 4096), (sh ...
    今天发现hbase在写入一张新表时,写入过程中时常会出现一段连续的时间无法写入数据,时间长达10s以上。经过查看region server日志发现有如下记录: 2011-04-18 14:50:22,942 INFO org.apache.hadoop.hbase.regionserver.HRegion: Blocking updates for 'IPC Server handler 6 on 60020' on region data1,70712707089004,1303109282990.da1eccd9d9ebf0f8bfe1116fe7046763.: memstor ...
Global site tag (gtag.js) - Google Analytics