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 - |
문제
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.
해결책
다른 팁
Add this property in your client and see if it works :
conf.set("hbase.zookeeper.property.clientPort","2181");