hbase批量查批量写报错org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

hbase批量查批量写报错org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException

2018-11-07 15:59:18 11763 2

org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException

at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:228)
at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$1700(AsyncProcess.java:208)
at org.apache.hadoop.hbase.client.AsyncProcess.waitForAllPreviousOpsAndReset(AsyncProcess.java:1700)
at org.apache.hadoop.hbase.client.BufferedMutatorImpl.backgroundFlushCommits(BufferedMutatorImpl.java:208)
at org.apache.hadoop.hbase.client.BufferedMutatorImpl.flush(BufferedMutatorImpl.java:183)
at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1449)
at org.apache.hadoop.hbase.client.HTable.put(HTable.java:1052)
at com.pdd.service.medoc.dao.hbase.dao.impl.BaseDAO.lambda$batchInsertV3$15(BaseDAO.java:353)
at com.pdd.service.medoc.dao.hbase.config.HbaseTemplateV2.execute(HbaseTemplateV2.java:27)
at com.pdd.service.medoc.dao.hbase.dao.impl.BaseDAO.batchInsertV3(BaseDAO.java:339)
at com.pdd.service.medoc.dao.hbase.dao.impl.GoodsExtensionDAOV3Impl.batchInsert(GoodsExtensionDAOV3Impl.java:83)
at com.pdd.service.medoc.dao.hbase.dao.impl.GoodsExtensionDAOV3Impl

$$ FastClassBySpringCGLIB $$

f025277.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at com.pdd.service.medoc.dao.hbase.dao.impl.GoodsExtensionDAOV3Impl

$$ EnhancerBySpringCGLIB $$

499b33c1.batchInsert()
at com.pdd.service.medoc.build.sharding.ShardingGoodsHbaseLogic.processGoodsById(ShardingGoodsHbaseLogic.java:758)
at com.pdd.service.medoc.build.sharding.ShardingGoodsHbaseLogic.insertGoodsInfoIntoHbase(ShardingGoodsHbaseLogic.java:152)
at com.pdd.service.medoc.build.sync.SyncGoodsInfo.lambda$syncAll$0(SyncGoodsInfo.java:85)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
如上代码是批量读或者批量写时的报错,
public HbaseTemplateV2 hbaseTemplateV2() {

    HbaseTemplateV2 hbaseTemplateV2 = new HbaseTemplateV2();

    HbaseTemplateConfig config = new HbaseTemplateConfig();
    Configuration hBaseConfiguration = HBaseConfiguration.create();
    hBaseConfiguration.set("hbase.zookeeper.quorum", config.getZookeeperQuorumV2());
    hBaseConfiguration.set("hbase.zookeeper.property.clientPort", config.getZookeeperPortV2());
    hBaseConfiguration.set("zookeeper.znode.parent", config.getZookeeperParentV2());

    hBaseConfiguration.setInt("hbase.client.retries.number",3);
    hBaseConfiguration.setInt("ipc.socket.timeout",3000);//socket建立链接的超时时间
    hBaseConfiguration.setInt("hbase.rpc.timeout",3000);//单次rpc请求超时时间
    hBaseConfiguration.setInt("hbase.client.operation.timeout",18000);//单次数据操作总时间 不包括scan
    hBaseConfiguration.setInt("hbase.client.scanner.timeout.period",3000);//scan操作单次rpc请求超时时间
    hbaseTemplateV2.setConf(hBaseConfiguration);

    return hbaseTemplateV2;
}

如上代码,是hbase初始化时的参数配置,
protected List batchGetV2(String tableName, List rowNames, String familyName) {

    return hbaseTemplateV2.execute(conn -> {
        Table table = conn.getTable(TableName.valueOf(tableName));
        Transaction t1 = Cat.newTransaction("transaction_hbase_batch_get", tableName);
        try {
            List<Get> getList = Lists.newArrayList();
            rowNames.forEach(rowName -> {
                Get get = new Get(Bytes.toBytes(rowName));
                get.addFamily(Bytes.toBytes(familyName));
                getList.add(get);
            });
            Result results = table.get(getList);
            List<T> fetchResult = Lists.newArrayList();
            for (Result result : results) {
                T t = convertResult2DTO(result);
                if(t!=null) {
                    fetchResult.add(t);
                }
            }
            return fetchResult;
        } catch (Exception e) {
            Cat.logError("#medoc-hbase# failed to batch get tablename." + tableName + ".rowNames." + JsonUtils.toJson(rowNames), e);
            log.error("#medoc-hbase# failed to batch get tablename." + tableName + ".rowNames." + JsonUtils.toJson(rowNames), e);
            t1.setStatus(e);
            return null;
        } finally {
            if (Objects.nonNull(table)) {
                table.close();
            }
            t1.complete();
            t1.setStatus(Transaction.SUCCESS);
        }
    });
}

如上代码是我批量读的代码,
具体背景是,任务启动,程序从DB里批量读取一定量的数据,然后再从hbase里读取,进行比较筛选后,再写入hbase,有时候批量读会报错,有时候批量写会报错,都是上面那个类型的错误

hbase客户端版本
"org.apache.hbase:hbase-client:$hbaseVersion"
hbaseVersion = '1.1.2.2.4.2.0-258'

调用方法所在类
org.apache.hadoop.hbase.client.Table

取消 提交回答
全部回答(2)
添加回答
相关问答

1

回答

Apache Hadoop YARN中的ApplicationMaster的作用是什么?

2021-12-10 20:19:25 191浏览量 回答数 1

1

回答

Hadoop中为什么会自动生成cluster_id?

2021-12-05 10:12:40 99浏览量 回答数 1

1

回答

Hadoop 中若分区数不是1,reducetask为1,是否执行分区过程?

2021-12-05 11:15:08 76浏览量 回答数 1

1

回答

Hadoop中ReduceTask的排序是什么?

2021-12-04 21:46:30 56浏览量 回答数 1

1

回答

database cluster initialisation failed

2019-11-28 10:31:46 358浏览量 回答数 1

0

回答

A Container-based Sizing Framework for Apache Hadoop/Spark Clusters

2018-07-28 23:09:50 701浏览量 回答数 0

0

回答

Dr.Elephant for Monitoring and Tuning Apache Spark Jobs on Hadoop

2018-05-27 18:20:30 815浏览量 回答数 0

3

回答

client.GetAcsResponse(request)引发了“System.Xml.XmlException”类型的异常

2017-11-17 13:17:56 3473浏览量 回答数 3

1

回答

比较Apache Hadoop生态系统中不同的文件格式和存储引擎的性能

2017-06-02 16:34:18 3964浏览量 回答数 1

1

回答

hadoop hive 任务失败,终端提示 FAILED: Execution Error, return code 1?

2016-04-14 13:43:15 2793浏览量 回答数 1
+关注
hbase小能手
HBase是一个分布式的、面向列的开源数据库,一个结构化数据的分布式存储系统。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。阿里云HBase技术团队共同探讨HBase及其生态的问题。
112
文章
338
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载
http://www.vxiaotou.com