HBase 1.2.1 Offline in Docker Cannot Connect

I want to connect to HBase working offline in docker using Java and HBase API

I use this code to connect:

Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "163.172.142.199");
config.set("hbase.zookeeper.property.clientPort","2181");
HBaseAdmin.checkHBaseAvailable(config);

Here is my / etc / hosts file

127.0.0.1   localhost
XXX.XXX.XXX.XXX hbase-srv

Here is the / etc / hosts file from my docker (named hbase-srv)

XXX.XXX.XXX.XXX hbase-srv

With this configuration, I get a failure error message:

 INFO | Initiating client connection, connectString=163.172.142.199:2181 sessionTimeout=90000 watcher=hconnection-0x6aba2b860x0, quorum=163.172.142.199:2181, baseZNode=/hbase
 INFO | Opening socket connection to server 163.172.142.199/163.172.142.199:2181. Will not attempt to authenticate using SASL (unknown error)
 INFO | Socket connection established to 163.172.142.199/163.172.142.199:2181, initiating session
 INFO | Session establishment complete on server 163.172.142.199/163.172.142.199:2181, sessionid = 0x15602f8d8dc0002, negotiated timeout = 40000
 INFO | Closing zookeeper sessionid=0x15602f8d8dc0002
 INFO | Session: 0x15602f8d8dc0002 closed
 INFO | EventThread shut down
org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.net.ConnectException: Connection refused
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1560)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1580)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1737)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.isMasterRunning(ConnectionManager.java:948)
    at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:3159)
    at hbase.Benchmark.main(Benchmark.java:26)

However, if I delete lines XXX.XXX.XXX.XXX hbase-srvfrom both files /etc/hosts, I get an errorunknown host : hbase-srv

I also checked, I can successfully connect to my hbase dock on the client port.

On the docker, all ports used by HBase open and bind to one number (60,000 to 60,000, 2,181 to 2,181, etc.).

I also wanted to add that everything was fine when I used this configuration on localhost.

, hbase .

UPDATE: Docker

FROM java:openjdk-8

ADD hbase-1.2.1 /hbase-1.2.1

WORKDIR /hbase-1.2.1
# ZooKeeper
EXPOSE 2181

# HMaster
EXPOSE 60000

# HMaster Web
EXPOSE 60010

# RegionServer
EXPOSE 60020

# RegionServer Web
EXPOSE 60030

EXPOSE 16010

RUN chmod 755 /hbase-1.2.1/bin/start-hbase.sh
CMD ["/hbase-1.2.1/bin/start-hbase.sh"]

HBase , , iptables tcp udp,

+4
1

Dockerfile :

  • hbase master start start-hbase.sh
  • 60020

- . hbase >= 1.2.0 ( , 1.2.0), hbase , hbase-site.xml, hbase .

hbase.localcluster.port.ephemeral hbase , .

+5

Source: https://habr.com/ru/post/1648338/


All Articles