- 浏览: 349972 次
- 性别:
- 来自: 杭州
最新评论
-
penkee:
为何我启动 zookKeeper bookie 10 不能创 ...
bookkeeper安装及测试体验 -
Golden-jin:
1楼也好时髦呀
bookkeeper简单分析 -
xGss2000:
要是减少到300个 region,block就0.04s了。话 ...
多region下的hbase写入问题 -
brandom520:
请问lz,我从hbase0.94版本上的数据导入到0.96.1 ...
在不同版本hdfs集群之间转移数据 -
huanghaifeng1990:
您好,我想请问一下,我执行了会发生OOM溢出的Deflater ...
perftools查看堆外内存并解决hbase内存溢出
lease引发的血案
- 博客分类:
- hbase
今天线上出现了一个故障惊出一身冷汗,经过查明原来是lease引发的问题。不过查问题的过程让我们耽误了很多修复故障的时间,很是不爽。
起因:datanode和regionserver以及master同时挂掉
现象:datanode重启后,regionserver重启不久,多台regionserver相继即挂掉,log显示:
看起来是datanode的问题,但是登陆datanode发现木有问题。于是再重启regionserver,过一会又报同样的错误退出...
于是开始查系统的问题。半个小时过去鸟。。。
实在查不到原因,再重启,发现系统好了。。。
原因:datanode挂掉的时候,regionserver正在写hlog,这是一个append的过程。当regionserver也挂掉后,则相应的块的client也断开了,很自然这个block连同它的备份都处于需要修复的状态。由于master也挂掉了,所以master被备机接管。接管时候有一步是检查哪些region server处于online状态(waitForRegionServers)。不处于online状态的rs(默认的配置下有一定概率在线的rs也会被判断为不在线,如果hbase.master.wait.on.regionservers.timeout设置为大于6秒则不会出现这种情况)会被master强制执行recoverFileLease。于是引发了namenode对这个block发起recovery block过程,这个过程抢占了lease。当其它region server需要读这个文件或者其它这个datanode原先持有的block的时候都会发现需要recovery block,这个过程由于抢占不到lease导致失败。而写hlog阶段的失败regionserver的处理逻辑是让自己挂掉(这样最安全)。于是会发现凡是需要写这个hlog的region server会连续挂掉。
虽然regionserver挂掉了,但是它对这个坏块仍然发起过一次写操作,于是这个block上的lease由1小时的硬lease降级为了1分钟的软lease,即1分钟后租约消失。所以1分钟后再次发起请求就恢复正常了。
但是为什么再次重启regionserver也挂掉了呢?原因是当时datanode上面还有其它正在被写的hlog的block,所以多重启几次就好了。事实上当时如果我们不等待这半小时而是直接手忙脚乱重启的话,故障就会更快恢复了。。。
结论:master和regionserver不能同时挂掉。只要不是同时挂掉,就不会导致recovery block的发生,也就不会发生lease的杯具了。不过这种情况很难发生,所以我们决定将hbase.master.wait.on.regionservers.timeout参数改为10秒。
大师威武,感激艳堂
master发起lease recovery在先,rs写满hlog滚动log时需要recovery在后,这两者间隔在1分钟以内的话就挂了。P.S:修改了下原文,再看下吧。还有,这里挂的rs并不是原先被重启的那一台,而是其它好几台的rs
今天再review了一下,稍改了下原文
起因:datanode和regionserver以及master同时挂掉
现象:datanode重启后,regionserver重启不久,多台regionserver相继即挂掉,log显示:
org.apache.hadoop.hbase.regionserver.wal.HLog: Could not append. Requesting close of hlog java.io.IOException: Reflection at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:147) at org.apache.hadoop.hbase.regionserver.wal.HLog.sync(HLog.java:994) at org.apache.hadoop.hbase.regionserver.wal.HLog.completeCacheFlush(HLog.java:1176) at org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1038) at org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:929) at org.apache.hadoop.hbase.regionserver.HRegion.doClose(HRegion.java:571) at org.apache.hadoop.hbase.regionserver.HRegion.close(HRegion.java:524) at org.apache.hadoop.hbase.regionserver.handler.CloseRegionHandler.process(CloseRegionHandler.java:120) at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:151) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:145) ... 11 more Caused by: java.io.IOException: Error Recovery for block blk_-5430512709521689588_45878056 failed because recovery from primary datanode xx.xx.xx.xx:50010 failed 6 times. Pipeline was xx.xx.xx.xx:50010. Aborting... at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2841) at
看起来是datanode的问题,但是登陆datanode发现木有问题。于是再重启regionserver,过一会又报同样的错误退出...
于是开始查系统的问题。半个小时过去鸟。。。
实在查不到原因,再重启,发现系统好了。。。
原因:datanode挂掉的时候,regionserver正在写hlog,这是一个append的过程。当regionserver也挂掉后,则相应的块的client也断开了,很自然这个block连同它的备份都处于需要修复的状态。由于master也挂掉了,所以master被备机接管。接管时候有一步是检查哪些region server处于online状态(waitForRegionServers)。不处于online状态的rs(默认的配置下有一定概率在线的rs也会被判断为不在线,如果hbase.master.wait.on.regionservers.timeout设置为大于6秒则不会出现这种情况)会被master强制执行recoverFileLease。于是引发了namenode对这个block发起recovery block过程,这个过程抢占了lease。当其它region server需要读这个文件或者其它这个datanode原先持有的block的时候都会发现需要recovery block,这个过程由于抢占不到lease导致失败。而写hlog阶段的失败regionserver的处理逻辑是让自己挂掉(这样最安全)。于是会发现凡是需要写这个hlog的region server会连续挂掉。
虽然regionserver挂掉了,但是它对这个坏块仍然发起过一次写操作,于是这个block上的lease由1小时的硬lease降级为了1分钟的软lease,即1分钟后租约消失。所以1分钟后再次发起请求就恢复正常了。
但是为什么再次重启regionserver也挂掉了呢?原因是当时datanode上面还有其它正在被写的hlog的block,所以多重启几次就好了。事实上当时如果我们不等待这半小时而是直接手忙脚乱重启的话,故障就会更快恢复了。。。
结论:master和regionserver不能同时挂掉。只要不是同时挂掉,就不会导致recovery block的发生,也就不会发生lease的杯具了。不过这种情况很难发生,所以我们决定将hbase.master.wait.on.regionservers.timeout参数改为10秒。
评论
7 楼
alexanderdai
2012-04-03
lease非客户端正常回收有两种,一种是其他dfsclient主动force回收,一种是NN对lease的心跳判断,判定lease很久没有心跳了,心跳超时于是租约超时,然后主动走入force调用的相同逻辑代码。
执行逻辑如下:NN找到最后一个block所在的dn,并向dn发recoverblock命令,dn flush到磁盘后会向NN发送一个comit操作(全局互斥),NN在comit操作中会将pending的数据结构挂到正常数据结构中。
执行逻辑如下:NN找到最后一个block所在的dn,并向dn发recoverblock命令,dn flush到磁盘后会向NN发送一个comit操作(全局互斥),NN在comit操作中会将pending的数据结构挂到正常数据结构中。
6 楼
piaoya
2012-01-14
上周也遇到一个lease引发的线上血案~~~baggioss也清楚啊。哈哈。lease这东西,总是这么巧的被触发做recovery...
5 楼
lc_koven
2011-12-21
nopower 写道
发起lease recovery的不是datanode吧,貌似是NN?lease是针对文件而言的,DN只管block,所以不大可能是他发起的,回头我再看看代码。庄哥威武。
大师威武,感激艳堂
4 楼
lc_koven
2011-12-21
baggioss 写道
为什么会有多个人同时出发lease recovery? 我印象里split hlog不是有hmaster干的吗? lease的 owner 应该只有一个才对呀。
master发起lease recovery在先,rs写满hlog滚动log时需要recovery在后,这两者间隔在1分钟以内的话就挂了。P.S:修改了下原文,再看下吧。还有,这里挂的rs并不是原先被重启的那一台,而是其它好几台的rs
3 楼
lc_koven
2011-12-21
nopower 写道
发起lease recovery的不是datanode吧,貌似是NN?lease是针对文件而言的,DN只管block,所以不大可能是他发起的,回头我再看看代码。庄哥威武。
今天再review了一下,稍改了下原文
2 楼
baggioss
2011-12-21
为什么会有多个人同时出发lease recovery? 我印象里split hlog不是有hmaster干的吗? lease的 owner 应该只有一个才对呀。
1 楼
nopower
2011-12-20
发起lease recovery的不是datanode吧,貌似是NN?lease是针对文件而言的,DN只管block,所以不大可能是他发起的,回头我再看看代码。庄哥威武。
发表评论
-
hbase写被block住的典型案例分析
2011-11-10 22:32 5881今天一个线上集群出现莫名奇妙不能写入数据的bug,lo ... -
在不同版本hdfs集群之间转移数据
2011-10-26 18:56 7148本文仅供记录一下程序心得: 很多人会有这样一个需求:将 ... -
hbase中的deleteColumn
2011-10-26 16:59 5108Delete类的接口有两个方法:deleteColum ... -
splitlog期间丢失数据的问题
2011-10-18 22:26 3654splitlog是保证在重启或rs挂掉后,恢复hlog ... -
hbase中多次加载root及meta的bug
2011-10-18 22:24 3120执行以下case可以见到root或meta被加载两次: ... -
两次hbase丢失数据的故障及原因分析
2011-10-18 18:12 16590hbase的稳定性是近期社区的重要关注点,毕竟稳定的系 ... -
hbase中regionserver常见的oom原因分析
2011-09-15 10:40 8972首先要清楚reginserver中内存是如何使用的。 ... -
hbase的export与import工具
2011-09-01 08:01 11238hbase提供了导出表的方案,将指定的表导出到HDFS ... -
disable table失败的处理
2011-08-30 20:02 4290相信每一个维护hbase集群的运维人员一定碰到过dis ... -
使用zookeeper管理多个hbase集群
2011-08-16 15:30 18076zookeeper是hbase集群的"协调器 ... -
一次奇异的getRegionInfo异常定位
2011-08-10 19:55 2482今天在线上环境的 ... -
多region下的hbase写入问题
2011-08-10 13:13 9199最近在集群上发现hbase写入性能受到较大下降,测试环 ... -
hbase上应用lucene创建索引及检索
2011-07-21 17:14 11530hbasene(https://github.com/ ... -
hbase-0.90.4的主要更新
2011-07-15 22:15 2771apache邮件列表中提 ... -
hbase中缓存的优先级
2011-06-15 16:30 4083今天同事问到hbase中in-memory属性的作用, ... -
hbase交流记录
2011-06-02 10:34 3491前几天和公司的同事杨传辉(http://www.nosqlno ... -
secondary index for hbase
2011-05-07 23:05 5746最近因为业务需求 ... -
hdfs上的append测试
2011-05-04 23:42 6483hbase在写入数据之前会先写hlog,hlog目前是se ... -
hbase写入性能影响续
2011-04-18 15:28 10551今天发现hbase在写入一张新表时,写入过程中时常会出 ... -
hbase中的缓存的计算与使用
2011-04-13 20:20 8298hbase中的缓存分了两层:memstore和b ...
相关推荐
可以对dhcpd.lease 文件整理成以tab分隔的文本文件,支持以IP地址,starts,ends,mac等字段排序,可支持控制台直接输出,或指定输出文件,可以删除过期的IP分配记录并生成新的dhcpd.lease文件,(或直接更新原dhcpd....
LEASE AGREEMENT.doc
lease.sql
566885653546083lease_car-master.zip
Oracle Lease Management Implementation Guide Release 11i Part No. B10647-07
Oracle Lease Management User's Guide Release 11i Part No. B10646-09
hibernate-lease-4.3.5Final.jar
git clone https://github.com/andrewsbrown/lease-savings-calculator 在克隆目录中, bower update 执照 麻省理工学院许可证 (MIT) 版权所有 (c) 2014 安德鲁·布朗 特此授予任何人免费获得本软件副本和相关文档...
lease
lease-system 租赁系统
Lease of Storage Capacity - RWE Gas Storage:租赁的存储容量- RWE储气
OSCI组织最新lease出来的传输级建模指导实验,对初学者快速认识TLM中的一些基本概念很有用,本实验经作者修改并调试通过。-The tutorial1 of TLM-2.0 which is released frm OSCI group!
租赁球后端Lease-Orb的后端应用程序
lease = Lease ( 2000 ) ; function get ( cb ) { function criticalSection ( err , release ) { if ( err ) { if ( 'AlreadyLeasedError' === err . name ) return ; return cb ( err ) ; } setTimeout ( ...
sap press doc 解压密码:abap_developer
解决无法自动获取IP导致不能上网的问题。
时下最流行的小微企业建站必备,安装即可使用
首先介绍了Jini中编程组件Leasing,然后对Lease的授权运行机制及授权过程中涉及到的许多因素进行了深入研究。在租用的授权过程中,文章对租用的实现,租用授权者的职责以及租用与资源的关系,都做了详细的描述。明确...
一个以太坊支付的用于自动执行租赁协议的dApp。 由联合办公空间使用。 (从2018年第三季度开始的实时试用) 发展 安装 ... 实时实例托管在45.79.83.93 (在/ projects / mona-lease中)。 推送到liv
租租赁智能合约去做利用时间库获取实际(不是基于30天)的月份将无状态库Logic.sol部署到每个测试网中的特定地址,这样就不必在每次合同创建时都重新部署它。 将地址存储在单独的文件中重构测试套件,以便它通过侦听...