【问题标题】:thrift + hbase exception (in docker containers)thrift + hbase 异常(在 docker 容器中)
【发布时间】:2016-12-24 20:33:52
【问题描述】:

我正在尝试使用以下 docker-compose 文件将结合了 hbase 和 php 模块的遗留系统拆分为两个独立的容器:

version: '2'
services:
  php:
    image: my-legacy-php
    volumes:
      - ~/workspace/php:/workspace/php
    ports:
      - "80:80"
    links:
      - hbase:hbase-docker
  hbase:
    image: dajobe/hbase
    hostname: hbase-docker
    ports:
      - "43590-44000:43590-44000"
      - "8085:8085"
      - "2181:2181"
      - "8080:8080"
      - "16010:16010"
      - "9095:9095"
      - "9090:9091"
      - "16020:16020"
      - "16030:16030"
      - "60000:60000"
    volumes:
      - ~/workspace/hbase-docker/data:/data

我正在使用来自 dajobe/hbase 的公共 docker 映像用于 hbase。 现在我正在尝试向 php moudle 发送一些事件(HTTP GET 请求)并在我的 php 模块(Thrift lib)中获取以下异常:

ERROR HBaseFacade - exception in handling rcomEvent: Internal error processing increment, trace is: #0 /workspace/php/libs/thrift-0.8.0/packages/Hbase/THBaseService.php(536): THBaseServiceClient->recv_increment()

在 hbase 容器中,我看到以下异常(在 /data/log/hbase-thrift.log 中):

2016-11-21 09:13:29,620 ERROR [thrift-worker-0] thrift.ProcessFunction: Internal error processing increment
java.lang.NullPointerException
    at org.apache.hadoop.hbase.thrift.ThriftServerRunner$HBaseHandler.increment(ThriftServerRunner.java:1747)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.hbase.thrift.HbaseHandlerMetricsProxy.invoke(HbaseHandlerMetricsProxy.java:67)
    at com.sun.proxy.$Proxy9.increment(Unknown Source)
    at org.apache.hadoop.hbase.thrift.generated.Hbase$Processor$increment.getResult(Hbase.java:4537)
    at org.apache.hadoop.hbase.thrift.generated.Hbase$Processor$increment.getResult(Hbase.java:4521)
    at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
    at org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer$ClientConnnection.run(TBoundedThreadPoolServer.java:289)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

有什么想法吗?

编辑:我以前的本地 hbase 版本(与我的 php 模块一起使用)是 0.94.26,而 hbase-docker 运行的是 1.1.4

【问题讨论】:

    标签: docker hbase docker-compose thrift


    【解决方案1】:

    我的解决方案是在 hbase 容器中运行 thrift2 而不是 thrift

    来自https://github.com/dajobe/hbase-docker/blob/master/hbase-server: 我变了:

    hbase thrift start > $logs_dir/hbase-thrift.log 2>&1 &
    

    到:

    hbase thrift2 start > $logs_dir/hbase-thrift.log 2>&1 &
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多