`
zhangxiong0301
  • 浏览: 359815 次
社区版块
存档分类
最新评论

HBASE ScannerTimeoutException 问题

阅读更多

在对Hbase进行Scan的时候有时候会抛出ScannerTimeoutException,场景如下:

 

Java代码  收藏代码
  1. 2012 15:28:52 (14mins, 41sec)  
  2. org.apache.hadoop.hbase.client.ScannerTimeoutException: 60622ms passed since the last invocation, timeout is currently set to 60000  
  3.     at org.apache.hadoop.hbase.client.HTable$ClientScanner.next(HTable.java:1196)  
  4.     at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.nextKeyValue(TableRecordReaderImpl.java:133)  
  5.     at org.apache.hadoop.hbase.mapreduce.TableRecordReader.nextKeyValue(TableRecordReader.java:142)  
  6.     at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:532)  
  7.     at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67)  
  8.     at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143)  
  9.     at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)  
  10.     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)  
  11.     at org.apache.hadoop.mapred.Child$4.run(Child.java:255)  
  12.     at java.security.AccessController.doPrivileged(Native Method)  
  13.     at javax.security.auth.Subject.doAs(Subject.java:396)  
  14.     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093)  
  15.     at org.apache.hadoop.mapred.Child.main(Child.java:249)  

 

原因查看步骤: 

查找源码如下:

 

Java代码  收藏代码
  1. long timeout = lastNext + scannerTimeout;  
  2.              // If we are over the timeout, throw this exception to the client  
  3.              // Else, it's because the region moved and we used the old id  
  4.              // against the new region server; reset the scanner.  
  5.              if (timeout < System.currentTimeMillis()) {  
  6.                long elapsed = System.currentTimeMillis() - lastNext;  
  7.                ScannerTimeoutException ex = new ScannerTimeoutException(  
  8.                    elapsed + "ms passed since the last invocation, " +  
  9.                        "timeout is currently set to " + scannerTimeout);  
  10.                ex.initCause(e);  
  11.                throw ex;  
  12.              }  

 

 核实下如下代码

 

Java代码  收藏代码
  1. long timeout = lastNext + scannerTimeout;  
Java代码  收藏代码
  1. 得出:ClientScanner.lastNext和HTable.scannerTimeout  

 

 跟踪:HTable.scannerTimeout

 

Java代码  收藏代码
  1. this.scannerTimeout =  
  2.      (int) conf.getLong(HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, HConstants.DEFAULT_HBASE_REGIONSERVER_LEASE_PERIOD);  

 

 查看HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY和HConstants.DEFAULT_HBASE_REGIONSERVER_LEASE_PERIOD

我们可以得知如果没有设置HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY那么他们采用默认值即

 

Java代码  收藏代码
  1. public static long DEFAULT_HBASE_REGIONSERVER_LEASE_PERIOD = 60000;  

 跟踪:ClientScanner.lastNext发现此为上次访问时间

解决方案:

可以通过设置HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY解决

代码如下:

 

Java代码  收藏代码
  1. config.setLong(HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, 120000);    
分享到:
评论

相关推荐

    HbaseTemplate 操作hbase

    在IT行业中,尤其是在大数据处理领域,HBase是一个广泛使用的分布式、高性能、列式存储的NoSQL数据库。HBase是建立在Hadoop文件系统(HDFS)之上,为处理大规模数据提供了一个高效的数据存储解决方案。而Spring Data...

    hbase安装,节点添加,移除,常见问题解决

    本文将深入探讨如何进行HBase的安装、节点的添加与移除,以及如何解决常见的问题。 首先,Hadoop是HBase的基础,因此在安装HBase之前,必须先确保Hadoop环境已经正确配置并稳定运行。对于`hadoop-2.5.2-hbase-...

    Hbase权威指南(HBase: The Definitive Guide)

    ### HBase权威指南知识点概述 #### 一、引言与背景 ...该书不仅详细解释了HBase的工作原理和关键特性,还提供了大量的实际应用场景案例,对于希望利用HBase解决大数据问题的读者来说具有极高的参考价值。

    HBase官方文档中文版-HBase手册中文版

    1. 行键设计:优化行键设计,避免热点问题,确保数据均匀分布。 2. 列族配置:根据数据访问模式调整列族的缓存、压缩和版本策略。 3. Bloom Filter:减少无效磁盘I/O,提高查询效率。 4. Coprocessor:在Region...

    pinpoint的hbase初始化脚本hbase-create.hbase

    搭建pinpoint需要的hbase初始化脚本hbase-create.hbase

    hbase配置内置的zookeeper

    ### HBase 配置内置 ZooKeeper 的详细步骤与解析 #### 一、配置背景与目的 在 HBase 的部署环境中,ZooKeeper 起着非常重要的作用,它主要用于协调集群中的各个节点,并且管理 HBase 的元数据。通常情况下,HBase ...

    HBase(hbase-2.4.9-bin.tar.gz)

    HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...

    hbase用于查询客户端工具

    HBase是一种分布式、基于列族的NoSQL数据库,它在大数据领域中扮演着重要的角色,尤其是在需要实时查询大规模数据集时。HBase以其高吞吐量、低延迟和水平扩展能力而闻名,常用于存储非结构化和半结构化数据。在HBase...

    HBase开启审计日志

    ### HBase开启审计日志详解 #### 一、概述 HBase是一款分布式列式存储系统,基于Google的Bigtable论文实现。它具有高可靠性、高性能、面向列、可伸缩的特点,非常适合处理海量数据。在大数据领域,HBase被广泛用于...

    基于springboot集成hbase过程解析

    "基于SpringBoot集成HBase过程解析" SpringBoot集成HBase是当前大数据处理和存储解决方案中的一种常见组合。HBase是基于Hadoop的分布式、可扩展的NoSQL数据库,能够存储大量的结构化和非结构化数据。SpringBoot则...

    hbase安装与使用

    ### HBase 安装与使用知识点详解 #### 概述 HBase 是一款构建于 Hadoop 之上的分布式、可扩展的大规模数据存储系统。它提供了类似 Google BigTable 的功能特性,非常适合处理海量数据和高并发读写需求的应用场景。...

    hbase-2.4.17-bin 安装包

    2. 定期进行健康检查,排查可能存在的问题,如Region不均、内存溢出等。 3. 对HBase进行定期备份,以防数据丢失。 总结来说,HBase-2.4.17-bin安装包提供了一个强大且高效的NoSQL数据库,适合大数据场景下的实时...

    hbase 资源合集 hbase 企业应用开发实战 权威指南 hbase 实战 hbase 应用架构

    书中涵盖了HBase的安装配置、数据模型设计、表管理、性能调优、故障排查等方面,让开发者能够快速上手并解决实际问题。 《HBase权威指南》则是一部全面的HBase技术手册,详细阐述了HBase的内部机制和工作原理,包括...

    Hbase实验报告.pdf

    遇到的问题与解决方案 在实验过程中,可能会遇到启动HBase Shell的困扰。这通常是因为没有启动HBase服务或者环境变量配置不正确。解决方法是首先确保HBase服务正常运行,然后通过以下命令启动Shell: ```shell ...

    在windows上安装Hbase

    在Windows上安装HBase 本文将指导您如何在Windows平台上安装HBase,包括配置详解。安装完成后,您将能够配置集群。 一、前提条件 在安装HBase前,需要安装Cygwin和Hadoop。这两个软件的安装不在本文的讨论范围内...

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架

    对HBase的API做了一层抽象,统一了HBase1.x和HBase2.x的实现,并提供了读写HBase的ORM的支持,同时,sdk还对HBase thrift 的客户端API进行了池化封装,(类似JedisPool),消除了直接使用原生API的各种问题,使之...

    hbase和hadoop数据块损坏处理

    HBase 和 Hadoop 数据块损坏是非常常见的问题,可能会导致数据丢失、集群崩溃等严重后果。因此,了解如何处理 HBase 和 Hadoop 数据块损坏是非常重要的。本文将介绍 HBase 和 Hadoop 数据块损坏的处理方法。 一、...

    hbase数据可视化系统

    2. 性能优化:合理设计RowKey,避免热点问题;使用HBase的Compaction和Split机制,保持Region的平衡;并考虑使用二级索引提高查询效率。 六、总结 通过SpringBoot搭建的HBase可视化系统,使得非技术人员也能便捷地...

Global site tag (gtag.js) - Google Analytics