大数据学习整理篇(十四)在CentOS 7.*中将Phoenix+HBase的降级处理

我们在项目中使用了Phoenix 5.0.0最新版,在通过Phoenix5.0.0导入数据的时候,出现了这个错误。

Caused by: java.lang.VerifyError: org/apache/phoenix/hbase/index/covered/data/IndexMemStore$1
        at org.apache.phoenix.hbase.index.covered.data.IndexMemStore.<init>(IndexMemStore.java:82)
        at org.apache.phoenix.hbase.index.covered.LocalTableState.<init>(LocalTableState.java:57)
        at org.apache.phoenix.hbase.index.covered.NonTxIndexBuilder.getIndexUpdate(NonTxIndexBuilder.java:52)
        at org.apache.phoenix.hbase.index.builder.IndexBuildManager.getIndexUpdate(IndexBuildManager.java:90)
        at org.apache.phoenix.hbase.index.Indexer.preBatchMutateWithExceptions(Indexer.java:503)
        at org.apache.phoenix.hbase.index.Indexer.preBatchMutate(Indexer.java:348)
        ... 18 more
: 100 times, servers with issues: c9d60ba3a37b,60020,1603882654568
        at org.apache.phoenix.execute.MutationState.send(MutationState.java:1058)
        at org.apache.phoenix.execute.MutationState.send(MutationState.java:1344)
        at org.apache.phoenix.execute.MutationState.commit(MutationState.java:1167)
        at org.apache.phoenix.jdbc.PhoenixConnection$3.call(PhoenixConnection.java:670)
        at org.apache.phoenix.jdbc.PhoenixConnection$3.call(PhoenixConnection.java:666)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at org.apache.phoenix.jdbc.PhoenixConnection.commit(PhoenixConnection.java:666)
        at org.apache.calcite.avatica.jdbc.JdbcMeta.commit(JdbcMeta.java:904)
        ... 20 more
Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 100 actions: org.apache.phoenix.hbase.index.builder.IndexBuildingFailureException: Failed to build index for unexpected reason!
        at org.apache.phoenix.hbase.index.util.IndexManagementUtil.rethrowIndexingException(IndexManagementUtil.java:206)
        at org.apache.phoenix.hbase.index.Indexer.preBatchMutate(Indexer.java:351)
        at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$28.call(RegionCoprocessorHost.java:1010)
        at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$28.call(RegionCoprocessorHost.java:1007)
        at org.apache.hadoop.hbase.coprocessor.CoprocessorHost$ObserverOperationWithoutResult.callObserver(CoprocessorHost.java:540)
        at org.apache.hadoop.hbase.coprocessor.CoprocessorHost.execOperation(CoprocessorHost.java:614)
        at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.preBatchMutate(RegionCoprocessorHost.java:1007)
        at org.apache.hadoop.hbase.regionserver.HRegion$MutationBatchOperation.prepareMiniBatchOperations(HRegion.java:3542)
        at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutate(HRegion.java:3952)

这个错误,目前只能做降级处理,我们先使用docker搭建Phoenix4.14.3+HBase1.4环境,Docker compose如下:

hbase:
  image: boostport/hbase-phoenix-all-in-one:1.4-4.14
  container_name: hbase
  volumes:
    - /opt/hbase/data:/tmp
  ports:
    - 2181:2181
    - 8765:8765

最后使用下面两个命令进行访问:

#>docker exec -it **** /bin/bash

#>export HBASE_CONF_DIR=/opt/hbase/conf/
#>/opt/phoenix-server/bin/sqlline.py localhost

为了减少每次都要export下,可以编辑虚机vi ~/.bashrc

加入source /etc/profile

然后vi /etc/profile

在path一栏,加入:/opt/hbase/bin

最后一栏加入export HBASE_CONF_DIR=/opt/hbase/conf/

扫描二维码关注公众号,回复: 12435752 查看本文章

这样每次进入docker容器,就不用再敲export HBASE_CONF_DIR命令。

ps:经过上述的降级处理,HBase的性能大打折扣,通过JVM调优以及HBase调优和Phoenix参数调优,都效果欠佳,也许技术水平比较低,没有调优成功。所以建议降级到HBase 2.0.0和Phoenix 5.0.0

docker yaml文件如下:

hbase:
  image: boostport/hbase-phoenix-all-in-one:2.0.0-5.0.0
  container_name: hbase2
  volumes:
    - /opt/hbase2/data:/tmp
  ports:
    - 2182:2181
    - 8766:8765

 

猜你喜欢

转载自blog.csdn.net/penker_zhao/article/details/110475681