【前言】

  本篇博客主要描述一下在开发过程中遇到的scan的超时问题。

【问题描述】

  刚刚完成了对索引表的定义和建议,并且在单元测试中对该表进行插入和扫描时均未发现错误。但是在对该表进行整体更新时,需要在扫描weather表的过程中对该表进行不断的更新操作。但是发现每次更新到第100条数据的时候就报scan的超时错误。即使只更新一行数据中的某一列也是如此(只获取区块首的时候扫描量会大大下降),于是证明不是扫描量的问题。具体报错如下

Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hbase.client.ScannerTimeoutException: 1255382ms passed since the last invocation, timeout is currently set to 60000at org.apache.hadoop.hbase.client.AbstractClientScanner$1.hasNext(AbstractClientScanner.java:97)at com.zxc.fox.dao.IndexDao.updateAll(IndexDao.java:118)at com.zxc.fox.dao.IndexDao.main(IndexDao.java:38)
Caused by: org.apache.hadoop.hbase.client.ScannerTimeoutException: 1255382ms passed since the last invocation, timeout is currently set to 60000at org.apache.hadoop.hbase.client.ClientScanner.loadCache(ClientScanner.java:417)at org.apache.hadoop.hbase.client.ClientScanner.next(ClientScanner.java:332)at org.apache.hadoop.hbase.client.AbstractClientScanner$1.hasNext(AbstractClientScanner.java:94)... 2 more
Caused by: org.apache.hadoop.hbase.UnknownScannerException: org.apache.hadoop.hbase.UnknownScannerException: Name: 533, already closed?at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2017)at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31443)at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)at java.lang.Thread.run(Thread.java:745)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:525)at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95)at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:313)at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:241)at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:62)at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126)at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:310)at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:291)at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)at java.util.concurrent.FutureTask.run(FutureTask.java:166)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 533, already closed?at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2017)at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31443)at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)at java.lang.Thread.run(Thread.java:745)at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1199)at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:216)at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:300)at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:31889)at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:200)... 9 more

【解决过程】

  先查看了datanode的错误日志,然后参考了如下两篇博客:参考博客01,参考博客02,在代码中配置了超时时间,未成功。修改了hadoop配置文件,但是没有起作用。仔细思考了问题出错的原因,比对了之前自己写的一些方法,最后发现我嵌套了两个scan,于是修改此部分代码,先用一个scan得到所有的城市id之后保存在一个list里,在遍历这个list来代替之前的scan,这样做在实践中没有出现明显的时间消耗,但是却避免了scan超时问题。

【体会】

  出现该问题可能是由多种原因造成的,先检查一下。可以从如下几方面考虑

1. 是否你自己每次的scan处理较耗时? ->  优化处理程序,scan一些设置调优(比如setBlockCache(false) )

2. 是否每次scan的caching设置过大?  ->  减少caching (一般默认先设100)

3. 是否是网络或机器负载问题?    ->  查看集群原因

4. 是否HBase本身负载问题?     ->   查看RegionServer日志

转载于:https://www.cnblogs.com/420Rock/p/7943280.html

毕设开发日志2017-12-01-Scan超时相关推荐

  1. 毕设开发日志2017-11-03

    [工作总结] 又到新的周五,总结一下这个周. 1.这周的工作节奏基本比较平缓,自己作息也比较规律,然后项目进度也是比较缓慢的推进着. 2.基本框架有了之后后面添加别的功能应该就快了.但是今天发现之前做 ...

  2. 【徕卡全站仪Geocom开发】开发日志#01

    前言 不知道能写多久的开发日志,先将就着写着看看,也算是对自己当前的总结和未来的鞭策吧. 本人从21年10月份开始接触前端开发,22年3月份开始接触app开发,对一些原生的安卓语言可能不太了解甚至可能 ...

  3. 《世界·领主》开发日志[01]

    其实很早就想写下开发日志了,可是每次都不知道怎么怎么地就忘记了.到现在<世界·领主>已经进入Coding阶段,才有这第一篇的开发日志.因为是第一篇,而且经历了这么多,所以要写的东西有点多. ...

  4. 中国象棋程序的设计与实现(七)--心得体会和开发日志

    上大学那会,还没有自己专属的SVN仓库,但是我已经意识到了管理代码的重要性,我最常用的一种需求就是恢复到上一个正确的版本. 为此,我每实现一个重要功能,就会备份整个项目一次,增加开发日志,如" ...

  5. XiaoHu.ai开发日志(自2018年2月6日至2019年4月11日)

    一年多来,一直在项目目录下的update_log.txt里记录开发日志,今天放到网上来,共 6189个字. ----XiaoHu.ai Standard 代号STD---- 2/6 v0.1 项目启动 ...

  6. PHP银联在线支付接口开发日志

    银联在线支付接口开发日志 1. 登录银联自助化测试平台(登陆地址:open.unionpay.com),登录后,点击我的产品,如下:点击右方需要测试的接口,本例以 手机网页支付(WAP支付)为例. 2 ...

  7. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  8. 12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间

    - 12.10 Nginx访问日志 - 12.11 Nginx日志切割 - 12.12 静态文件不记录日志和过期时间# 12.10 Nginx访问日志 - 日志的格式- vim /usr/local/ ...

  9. APL开发日志 -- 2013-03-02

    以后作者在博客上在专栏记录 APL每天开发日志, 以记录APL最新进展. 2013-03-02 APL开发日志: ------------------------------------------- ...

最新文章

  1. parsel安装老是失败_Photoshop安装失败解决办法
  2. /IWBEP/CX_MGW_TECH_EXCEPTION - expand issue for old service on Docu history node
  3. DVS/DVR常见的监控名词
  4. leetcode 39. 组合总和 思考分析
  5. ElasticSearch 2 (27) - 信息聚合系列之故事开始
  6. 论文浅尝 | 提取计数量词丰富知识库
  7. 跨平台屏幕/摄像头RTMP推流模块设计要点
  8. 【Java】数据库编程
  9. Webrtc demo system
  10. Python 安装skimage即Scikit-Image
  11. Ubuntu16.04中安装Moveit教程及示例教程
  12. 前端项目(1)--《学成在线》简单首页
  13. 关于Jqueryweui 的select联动用法
  14. WIN10系统下命令提示符(cmd)的基本操作
  15. word设置多级标题
  16. itextpdf生成pdf中文乱码 (乱码中挣扎的自述)
  17. 勒索病毒防护形式_病毒的完整形式是什么?
  18. 微信小程序跳转美团外卖小程序时出现白屏解决demo
  19. 【应用C】C语言实现离散数学合式公式的递归判断
  20. 架构师的工作都干些什么?!想做架构师必看!

热门文章

  1. android studio中断,Android Studio是否有任何修复方法可以在Macbook Pro中断开测试设备的连接?...
  2. java并发集合面试题,那些经常被问的JAVA面试题(1)—— 集合部分
  3. android资产目录,android – 从非目录设备中的资产文件夹复制数据库
  4. mysql数据库初识实训总结_MySQL(数据库)的初识
  5. matlab 动态分配内存,[Matlab科学计算之高效编程] 1. 预分配内存
  6. 一阶系统单位阶跃响应的特点_一阶系统的阶跃响应有什么特点
  7. android屏幕适配流程,Android屏幕适配姿势
  8. java入职华为,通过这9个Java面试题,就可以入职华为啦
  9. sql截去最后一位_SqlServer从左边 最后 中间截取字符串
  10. gps卫星位置计算程序matlab_科研项目 | BD/ GPS卫星导航仿真测试系统研究