After a second try with exactly the same setup I didn't get the error. The region-servers need to have domain names that are accessible from the client. So I moved my Application also in the Amazon Cloud, where the region servers are accessible through the private DNS.
HBase Cluster on Amazon EMR, Client Error: NoServerForRegionException
-
01-06-2022 - |
Question
I'm trying to set up a Test Cluster on Amazon EMR. With one Master and two Slave Nodes, Ports open 60000-65535 and on Master 2181 too.
hbase hbck
Version: 0.92.0
Number of Tables: 2
Number of live region servers: 2
Number of dead region servers: 0
Master: 10.33.204.***,60000,1371570170893
Number of backup masters: 0
Number of empty REGIONINFO_QUALIFIER rows in .META.: 0
Summary:
-ROOT- is okay.
Number of regions: 1
Deployed on: ip-10-33-188-***.eu-west-1.compute.internal,60020,1371570165684
.META. is okay.
Number of regions: 1
Deployed on: ip-10-33-159-***.eu-west-1.compute.internal,60020,1371570171430
firstTS is okay.
Number of regions: 1
Deployed on: ip-10-33-159-***.eu-west-1.compute.internal,60020,1371570171430
sensorValues is okay.
Number of regions: 1
Deployed on: ip-10-33-159-***.eu-west-1.compute.internal,60020,1371570171430
So the Region Server is up and running, my client can connect to the Zookeeper instance on the Master node:
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "ec2-54-******.eu-west-1.compute.amazonaws.com");
But throws the Error after executing HTableInterface table = pool.getTable("sensorValues");
org.apache.hadoop.hbase.client.NoServerForRegionException: Unable to find region for sensorValues,,99999999999999 after 10 tries.
I couldn't find anything usefull in the logs provided by the HBase Master WebUI.
I used the hbase-site.xml
as it was generated bei Amazon EMR:
<configuration>
<property><name>fs.hdfs.impl</name><value>emr.hbase.fs.BlockableFileSystem</value></property>
<property><name>hbase.regionserver.handler.count</name><value>100</value></property>
<property><name>hbase.zookeeper.quorum</name><value>ip-10-33-204-***.eu-west-1.compute.internal</value></property>
<property><name>hbase.rootdir</name><value>hdfs://10.33.204.***:9000/hbase</value></property>
<property><name>hbase.cluster.distributed</name><value>true</value></property>
<property><name>hbase.tmp.dir</name><value>/mnt/var/lib/hbase/tmp-data</value></property>
</configuration>
Is this problem related to the Binding of the region servers to the internal private DNS-Domain? How can i fix this?
UPDATE: After a second try with exactly the same setup I didn't get the error. The region-servers need to have domain names that are accessible from the client. So I moved my Application also in the Amazon Cloud, where the region servers are accessible through the private DNS.
Solution
OTHER TIPS
Add this property in your client and see if it works :
conf.set("hbase.zookeeper.property.clientPort","2181");