在对Hbase进行Scan的时候有时候会抛出ScannerTimeoutException,场景如下:
- 2012 15:28:52 (14mins, 41sec)
- org.apache.hadoop.hbase.client.ScannerTimeoutException: 60622ms passed since the last invocation, timeout is currently set to 60000
- at org.apache.hadoop.hbase.client.HTable$ClientScanner.next(HTable.java:1196)
- at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.nextKeyValue(TableRecordReaderImpl.java:133)
- at org.apache.hadoop.hbase.mapreduce.TableRecordReader.nextKeyValue(TableRecordReader.java:142)
- at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:532)
- at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67)
- at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143)
- at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
- at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
- at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
- at java.security.AccessController.doPrivileged(Native Method)
- at javax.security.auth.Subject.doAs(Subject.java:396)
- at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093)
- at org.apache.hadoop.mapred.Child.main(Child.java:249)
原因查看步骤:
查找源码如下:
- long timeout = lastNext + scannerTimeout;
- // If we are over the timeout, throw this exception to the client
- // Else, it's because the region moved and we used the old id
- // against the new region server; reset the scanner.
- if (timeout < System.currentTimeMillis()) {
- long elapsed = System.currentTimeMillis() - lastNext;
- ScannerTimeoutException ex = new ScannerTimeoutException(
- elapsed + "ms passed since the last invocation, " +
- "timeout is currently set to " + scannerTimeout);
- ex.initCause(e);
- throw ex;
- }
核实下如下代码
- long timeout = lastNext + scannerTimeout;
- 得出:ClientScanner.lastNext和HTable.scannerTimeout
跟踪:HTable.scannerTimeout
- this.scannerTimeout =
- (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那么他们采用默认值即
- public static long DEFAULT_HBASE_REGIONSERVER_LEASE_PERIOD = 60000;
跟踪:ClientScanner.lastNext发现此为上次访问时间
解决方案:
可以通过设置HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY解决
代码如下:
- config.setLong(HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, 120000);
相关推荐
在IT行业中,尤其是在大数据处理领域,HBase是一个广泛使用的分布式、高性能、列式存储的NoSQL数据库。HBase是建立在Hadoop文件系统(HDFS)之上,为处理大规模数据提供了一个高效的数据存储解决方案。而Spring Data...
本文将深入探讨如何进行HBase的安装、节点的添加与移除,以及如何解决常见的问题。 首先,Hadoop是HBase的基础,因此在安装HBase之前,必须先确保Hadoop环境已经正确配置并稳定运行。对于`hadoop-2.5.2-hbase-...
### HBase权威指南知识点概述 #### 一、引言与背景 ...该书不仅详细解释了HBase的工作原理和关键特性,还提供了大量的实际应用场景案例,对于希望利用HBase解决大数据问题的读者来说具有极高的参考价值。
1. 行键设计:优化行键设计,避免热点问题,确保数据均匀分布。 2. 列族配置:根据数据访问模式调整列族的缓存、压缩和版本策略。 3. Bloom Filter:减少无效磁盘I/O,提高查询效率。 4. Coprocessor:在Region...
搭建pinpoint需要的hbase初始化脚本hbase-create.hbase
### HBase 配置内置 ZooKeeper 的详细步骤与解析 #### 一、配置背景与目的 在 HBase 的部署环境中,ZooKeeper 起着非常重要的作用,它主要用于协调集群中的各个节点,并且管理 HBase 的元数据。通常情况下,HBase ...
HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...
HBase是一种分布式、基于列族的NoSQL数据库,它在大数据领域中扮演着重要的角色,尤其是在需要实时查询大规模数据集时。HBase以其高吞吐量、低延迟和水平扩展能力而闻名,常用于存储非结构化和半结构化数据。在HBase...
### HBase开启审计日志详解 #### 一、概述 HBase是一款分布式列式存储系统,基于Google的Bigtable论文实现。它具有高可靠性、高性能、面向列、可伸缩的特点,非常适合处理海量数据。在大数据领域,HBase被广泛用于...
"基于SpringBoot集成HBase过程解析" SpringBoot集成HBase是当前大数据处理和存储解决方案中的一种常见组合。HBase是基于Hadoop的分布式、可扩展的NoSQL数据库,能够存储大量的结构化和非结构化数据。SpringBoot则...
### HBase 安装与使用知识点详解 #### 概述 HBase 是一款构建于 Hadoop 之上的分布式、可扩展的大规模数据存储系统。它提供了类似 Google BigTable 的功能特性,非常适合处理海量数据和高并发读写需求的应用场景。...
2. 定期进行健康检查,排查可能存在的问题,如Region不均、内存溢出等。 3. 对HBase进行定期备份,以防数据丢失。 总结来说,HBase-2.4.17-bin安装包提供了一个强大且高效的NoSQL数据库,适合大数据场景下的实时...
书中涵盖了HBase的安装配置、数据模型设计、表管理、性能调优、故障排查等方面,让开发者能够快速上手并解决实际问题。 《HBase权威指南》则是一部全面的HBase技术手册,详细阐述了HBase的内部机制和工作原理,包括...
遇到的问题与解决方案 在实验过程中,可能会遇到启动HBase Shell的困扰。这通常是因为没有启动HBase服务或者环境变量配置不正确。解决方法是首先确保HBase服务正常运行,然后通过以下命令启动Shell: ```shell ...
在Windows上安装HBase 本文将指导您如何在Windows平台上安装HBase,包括配置详解。安装完成后,您将能够配置集群。 一、前提条件 在安装HBase前,需要安装Cygwin和Hadoop。这两个软件的安装不在本文的讨论范围内...
对HBase的API做了一层抽象,统一了HBase1.x和HBase2.x的实现,并提供了读写HBase的ORM的支持,同时,sdk还对HBase thrift 的客户端API进行了池化封装,(类似JedisPool),消除了直接使用原生API的各种问题,使之...
HBase 和 Hadoop 数据块损坏是非常常见的问题,可能会导致数据丢失、集群崩溃等严重后果。因此,了解如何处理 HBase 和 Hadoop 数据块损坏是非常重要的。本文将介绍 HBase 和 Hadoop 数据块损坏的处理方法。 一、...
2. 性能优化:合理设计RowKey,避免热点问题;使用HBase的Compaction和Split机制,保持Region的平衡;并考虑使用二级索引提高查询效率。 六、总结 通过SpringBoot搭建的HBase可视化系统,使得非技术人员也能便捷地...