hbase创建solr索引的超时问题
本次记录一下hbase创建solr二级索引出现的一些问题,传统比较保险的一种做法就是通过java API读取hbase中数据,同时创建到solr中。集群是五台服务器,对于几亿条的数据的数据全表扫描还是很困难的。
试过通过列中的时间进行过滤,都会有超时情况出现。rowkey的设计通过几个唯一的字段拼接而成的,分隔符为“|”。首位防止出现热点问题进行hash值处理,取账号字段hash值的最后两位。
防止数据量过大,在读取hbase数据时通过起止键加了一个filter进行时间过滤。本来是想减少对应区间内的数据量,反而弄巧成拙是性能下降了。下面是应用端报出的错误:
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:
Wed Mar 06 11:01:28 CST 2019, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=60103: Call to pbigdata1/196.1.40.33:21302 failed on local exception: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=5267, waitTime=60002, operationTimeout=60000 expired. row '97|017701800122410025|20181015|260500000032|8010002753|22419999|20190218^@' on table 'tbl_accounting_entry' at region=tbl_accounting_entry,94|019801370002199|20190214|M00020010750|0080064230|20010505|20190219,1551715791119.1f23765783d3cbf72861b9c5bdf612b2., hostname=pbigdata1,21302,1551669174213, seqNum=251080
at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.throwEnrichedException(RpcRetryingCallerWithReadReplicas.java:275)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:240)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:62)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:217)
at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:330)
at org.apache.hadoop.hbase.client.ClientScanner.loadCache(ClientScanner.java:411)
at org.apache.hadoop.hbase.client.ClientScanner.next(ClientScanner.java:374)
at com.hadoop.solr.HbaseSolr_AccountingEntry.run(HbaseSolr_AccountingEntry.java:33)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketTimeoutException: callTimeout=60000, callDuration=60103: Call to pbigdata1/196.1.40.33:21302 failed on local exception: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=5267, waitTime=60002, operationTimeout=60000 expired. row '97|017701800122410025|20181015|260500000032|8010002753|22419999|20190218^@' on table 'tbl_accounting_entry' at region=tbl_accounting_entry,94|019801370002199|20190214|M00020010750|0080064230|20010505|20190219,1551715791119.1f23765783d3cbf72861b9c5bdf612b2., hostname=pbigdata1,21302,1551669174213, seqNum=251080
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:176)
at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:65)
... 3 more
Caused by: java.io.IOException: Call to pbigdata1/196.1.40.33:21302 failed on local exception: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=5267, waitTime=60002, operationTimeout=60000 expired.
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.wrapException(AbstractRpcClient.java:285)
at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1281)
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:224)
at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:329)
at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:32741)
at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:217)
at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:63)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:217)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:387)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:361)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:138)
... 4 more
Caused by: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=5267, waitTime=60002, operationTimeout=60000 expired.
at org.apache.hadoop.hbase.ipc.Call.checkAndSetTimeout(Call.java:70)
at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1255)
... 13 more
在hbase服务端出现如下警告:
response时间过长,按理说通过rowkey去取数据应该不会这么慢。所以最后的问题定位在hbase查询时的filter导致的超时,将filter去掉再去读取问题解决了没有再报错。
但是感觉hbase rowkey的设计还是有点问题,rowkey打散的还是不够。首字母的区间设置应该还要更宽一些,或者直接通过hash值作为整个rowkey。
hbase创建solr索引的超时问题相关推荐
- hbase基于solr配置二级索引
一.概述 Hbase适用于大表的存储,通过单一的RowKey查询虽然能快速查询,但是对于复杂查询,尤其分页.查询总数等,实现方案浪费计算资源,所以可以针对hbase数据创建二级索引(Hbase Sec ...
- solr索引创建流程
solr索引创建流程: 分词组件Tokenizer 分词组件(Tokenizer)会做以下几件事情(这个过程称为:Tokenize),处理得到的结果是词汇单元(Token). 1.将文档分成一个一个单 ...
- 大数据架构-使用HBase和Solr将存储与索引放在不同的机器上
摘要: HBase可以通过协处理器 Coprocessor 的 方式向Solr发出请求,Solr对于接收到的数据可以做相关的同步:增.删.改索引的操作,这样就可以同时使用HBase存 ...
- 大数据架构-使用HBase和Solr配置存储与索引
大数据架构-使用HBase和Solr配置存储与索引 2014-08-22 11:04 王安琪 博客园 字号:T | T HBase可以通过协处理器Coprocessor的方式向Solr发出请求,Sol ...
- phoenix 使用详细介绍 创建二级索引
phoenix 关联hbase 基本使用参考:https://blog.csdn.net/zhangshenghang/article/details/97491597 Phoenix 创建二级索引 ...
- Hbase的二级索引和RowKey的设计
Hbase查询简介 Hbase查询的时候,有以下几种方式: • 通过 rowkey方式,指定 获取唯一记录 • 通过 scan方式,设置satrtRow 和stopRow 参数进行范围匹配(模糊查询) ...
- HBase phoenix二级索引
1. 为什么需要用二级索引? 对于HBase而言,如果想精确地定位到某行记录,唯一的办法是通过rowkey来查询.如果不通过rowkey来查找数据,就必须逐行地比较每一列的值,即全表扫瞄.对于较大的表 ...
- 将数据库表导入到solr索引
将数据库表导入到solr索引 编辑solrcofnig.xml添加处理器 <requestHandler name="/dataimport" class="org ...
- Phoenix创建二级索引
为什么需要Secondary Index 对于HBase而言,如果想精确地定位到某行记录,唯一的办法是通过rowkey来查询.如果不通过rowkey来查找数据,就必须逐行地比较每一列的值,即全表扫瞄. ...
最新文章
- 【Java】阶段性总结练习------图书管理系统实现
- c 多线程运行混乱_一篇文章读懂 Python 多线程
- asp .net mvc ajax 传值到后台,并放回JSon值解析
- linux查看网卡速度
- 安卓连接linux软件,利用 Telnet 无线控制安卓手机 无需 Root
- php代码导入sql,php导入SQL文件(示例代码)
- 数据科学 IPython 笔记本 8.2 Matplotlib 的应用
- js的跨域问题和解决办法
- MySQL text类型的最大长度
- php post 传递数组参数,php提交post数组参数实例分析
- hibernate教程笔记1
- [Linux程序设计][调试][splint]
- Linux系统的命令应该如何记
- 编译原理第三版陈火旺第二章答案
- 架构之美第四章-架构与美
- 格拉布斯法—异常值判断(异常值)
- 2022中兴捧月算法挑战赛(RAW图像去噪)——初赛到决赛总结与反思
- 入门级概述光学相干层析(OCT)原理
- 鸿蒙珠融入体内,逍遥至尊之诸天逍遥
- Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!