Support Questions

Find answers, ask questions, and share your expertise
Check out our newest addition to the community, the Cloudera Data Analytics (CDA) group hub.

HBase : Zookeeper serves Internal IP to Remote client (Java API)



I am running a very basic HBase connection program from a remote server.
Reading the server logs, I see Zookeeper acknowledge the request, but then serves to the Client the internal IP of HBase Master, which is of no use from the outside world.

I know where the master is and what its public IP is but I do not know how to effectively connect to HBase remotely using the Java API. Any Ideas ?

I've seen some people advice to mess up with the /etc/hosts file but that's an ugly and inelegant solution, and it breaks other parts of the ecosystem.


    String zookeeperHost = "public.ip.address";
    Configuration hconfig = HBaseConfiguration.create();
    hconfig.set("", "2181");
    hconfig.set("zookeeper.znode.parent", "/hbase-unsecure");

org.apache.hadoop.hbase.MasterNotRunningException: unknown host:


Master Guru
Running over a public IP may not be a good idea if it is open to the internet. Consider using a VPC?

That said, you can point HBase Master and RegionServer to use the address from a specific interface name (eth0, eth1, etc.) and/or a specific DNS resolver (IP or name that can answer to a dns:// resolving call) via advanced config properties:



By default the services will use whatever is the host's default name and resolving address: getent hosts $(hostname -f) and publish this to clients.
Take a Tour of the Community
Don't have an account?
Your experience may be limited. Sign in to explore more.