我正在尝试在Amazon EMR上设置测试群集。有一个主节点和两个从节点,端口也打开60000-65535和Master 2181。
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
所以Region Server启动并运行,我的客户端可以连接到主节点上的Zookeeper实例:
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "ec2-54-******.eu-west-1.compute.amazonaws.com");
但在执行HTableInterface table = pool.getTable("sensorValues");
org.apache.hadoop.hbase.client.NoServerForRegionException:10次尝试后无法找到sensorValues ,, 99999999999999的区域。
我在HBase Master WebUI提供的日志中找不到任何有用的东西。
我使用的是hbase-site.xml
,因为它是由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>
此问题是否与区域服务器绑定到内部专用DNS域有关?我该如何解决这个问题?
更新:使用完全相同的设置进行第二次尝试后,我没有收到错误。区域服务器需要具有可从客户端访问的域名。所以我也在Amazon Cloud中移动了我的应用程序,可以通过私有DNS访问区域服务器。
答案 0 :(得分:0)
在您的客户端中添加此属性,看看它是否有效:
conf.set("hbase.zookeeper.property.clientPort","2181");
答案 1 :(得分:0)
在第二次尝试完全相同的设置后,我没有得到错误。区域服务器需要具有可从客户端访问的域名。所以我也在Amazon Cloud中移动了我的应用程序,可以通过私有DNS访问区域服务器。