HBase Zookeeper连接错误

时间:2018-03-08 13:13:04

标签: docker networking hbase apache-zookeeper

我在docker容器中运行Hbase。当它使用docker-compose文件启动时,我看到以下错误:

  

警告[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181] server.NIOServerCnxn:捕获流异常结束

     

EndOfStreamException:无法从客户端sessionid 0x16205128eac02db读取其他数据,可能客户端已关闭套接字

     

at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228)

     

at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)

     

at java.lang.Thread.run(Thread.java:748)       2018-03-08 12:59:45,737 INFO [NIOServerCxn.Factory:0.0.0.0 / 0.0.0.0:2181] server.NIOServerCnxn:客户端/172.18.0.2:45372的已关闭套接字连接,其中包含sessionid 0x16205128eac02db

当我运行mapreduce从Hbase获取数据时,我也看到了以下内容:

Disconnecting client for session: 0x16205128eac00dc org.apache.zookeeper.ClientCnxn.disconnect(ClientCnxn.java:1290) 
An exception was thrown while closing send thread for session 0x16205128eac00dc : Unable to read additional data from server sessionid 0x16205128eac00dc, likely server has closed socket org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1086)

有什么方法可以解决这个问题吗?我的zoo.cfg文件如下所示:

clientPort=2181
clientPortAddress=hbase-docker
server.1=hbase-docker:2181
maxClientCnxns=200

Docker-compose文件如下所示:

hbase-docker:
  hostname: "hbase-docker"
  container_name: "hbase-docker"
  build:
    dockerfile: "Dockerfile-5.6"
    context: "./hbase-docker/"
  volumes:
  - "./hbase-docker/data:/data"
  ports:
  - "2181:2181"
  

docker容器中的HBase版本为: 1.2.4

     

Zookeeper版本: 3.4.6-1569965

     

Docker版本: 17.12.1-ce,build 7390fc6

     

Docker撰写版本: 1.16.1,构建6d1ac21

     

操作系统版本: Ubuntu 16.04.4 LTS(xenial)

Dockerfile如下所示:

# HBase in Docker
#
# Version 0.3

# http://docs.docker.io/en/latest/use/builder/

FROM ubuntu:xenial

COPY *.sh /build/

ENV HBASE_VERSION 1.2.4

RUN mkdir -p /var/zookeeper && \
    /build/prepare-hbase.sh && \
    cd /opt/hbase && /build/build-hbase.sh \
    cd / && /build/cleanup-hbase.sh 

VOLUME /data

ADD ./hbase-site.xml /opt/hbase/conf/hbase-site.xml

ADD ./zoo.cfg /opt/hbase/conf/zoo.cfg

ADD ./replace-hostname /opt/replace-hostname

ADD ./hbase-server /opt/hbase-server

# REST API
EXPOSE 8080
# REST Web UI at :8085/rest.jsp
EXPOSE 8085
# Thrift API
EXPOSE 9090
# Thrift Web UI at :9095/thrift.jsp
EXPOSE 9095
# HBase's Embedded zookeeper cluster
EXPOSE 2181
# HBase Master web UI at :16010/master-status;  ZK at :16010/zk.jsp
EXPOSE 16010

CMD ["/opt/hbase-server"]

1 个答案:

答案 0 :(得分:0)

看起来你在zoo.cfg文件中缺少dataDir

dataDir = /path/to/zookeeper/data

确保您指定的目录 已经存在,或者您需要添加Dockerfile来创建此目录,然后使用其他名称重建图像。