用Lily Hbase indexer 工具包同步Hbase的索引到solr出错

用Lily Hbase indexer 工具包同步Hbase的索引到solr出错

错误堆栈

2019-05-21 06:52:07,181 ERROR [IPC Server handler 8 on 42709] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1555666124724_2625_m_000005_1 - exited : java.lang.NullPointerException
	at org.apache.zookeeper.server.DataTree.copyStat(DataTree.java:340)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.solr.common.cloud.SolrZkClient$7.execute(SolrZkClient.java:352)
	at org.apache.solr.common.cloud.SolrZkClient$7.execute(SolrZkClient.java:349)
	at org.apache.solr.common.cloud.ZkCmdExecutor.retryOperation(ZkCmdExecutor.java:61)
	at org.apache.solr.common.cloud.SolrZkClient.getData(SolrZkClient.java:349)
	at org.apache.solr.common.cloud.ClusterState.load(ClusterState.java:257)
	at org.apache.solr.common.cloud.ZkStateReader.createClusterStateWatchersAndUpdate(ZkStateReader.java:397)
	at org.apache.solr.client.solrj.impl.CloudSolrServer.connect(CloudSolrServer.java:262)
	at org.apache.solr.client.solrj.impl.CloudSolrServer.request(CloudSolrServer.java:554)
	at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:124)
	at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:68)
	at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:54)
	at com.ngdata.hbaseindexer.indexer.DirectSolrInputDocumentWriter.add(DirectSolrInputDocumentWriter.java:104)
	at com.ngdata.hbaseindexer.mr.BufferedSolrInputDocumentWriter.flush(BufferedSolrInputDocumentWriter.java:111)
	at com.ngdata.hbaseindexer.mr.BufferedSolrInputDocumentWriter.close(BufferedSolrInputDocumentWriter.java:123)
	at com.ngdata.hbaseindexer.mr.HBaseIndexerMapper.cleanup(HBaseIndexerMapper.java:350)
	at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:148)
	at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
	at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apac

在这里插入图片描述

解决思路

从堆栈信息中可知, 是空指针异常

java.lang.NullPointerException
	at org.apache.zookeeper.server.DataTree.copyStat(DataTree.java:340)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at 

具体是哪呢? 是 Lily Hbase Indexer 工具包里面的方法空指针异常了。
从字面上看是从 zookeeper 上拿 solr 的配置信息的时候没有拿到, 返回结果为空, 所以我去 zookeeper 上找了下这个索引的配置, 发现在。

那就奇怪了, 为什么 zookeeper 上有, 但是拿不到呢?

但是我发现 solr 索引的配置文件在 zookeeper 上有太多,导致 zookeeper 数据节点数据量太大,client 端拿不到数据。

解决办法

问题已经找到, zookeeper 数据节点数据量太大。

所以现在有两个解决办法:

  • 修改 zookeeper 配置,增加数据节点数据量限制。
  • 删除没用 solr 索引。

因为我们索引并不多, 很多都是备份好几个月前的备份数据,所以我选择了第二种方法, 把备份数据缩短到 7 天, 把历史数据都清空了。

重新同步, 成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值