当 Amzon EMR 上的 运行 hbase 时,外部 hbase 客户端的 Zookeeper 仲裁问题
Zookeeper quorum issue with external hbase client when running hbase on Amzon EMR
我是 运行 HBase on Amazon EMR。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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-xx-xxx-aa-aa.us-west-1.compute.internal</value></property>
<property><name>hbase.rootdir</name><value>hdfs://xx.xxx.aa.aa: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>
<property><name>hbase.master.wait.for.log.splitting</name><value>true</value></property>
</configuration>
以上是配置。
现在我正在尝试使用以下方式启动一个新的 hbase 客户端:
val zk_quoroum = "xx.xxx.aa.aa"
val hBaseClient = new HBaseClient(zk_quoroum)
我无法以某种方式连接到动物园管理员:
6:04:54.238 [main-SendThread()] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server /xx.xxx.aa.aa:2181
16:04:59.264 [main-SendThread(xx.xxx.aa.aa:2181)] INFO org.apache.zookeeper.ClientCnxn - Client session timed out, have not heard from server in 5026ms for sessionid 0x0, closing socket connection and attempting reconnect
重新连接一直在尝试,但从未建立连接。这与法定人数是内部 url 这一事实有关吗?客户不住在 AWS 中。有人遇到过这个吗?
所以问题是端口 2181 不允许从外部 ips 访问。添加 tcp 规则解决了这个问题。
我是 运行 HBase on Amazon EMR。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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-xx-xxx-aa-aa.us-west-1.compute.internal</value></property>
<property><name>hbase.rootdir</name><value>hdfs://xx.xxx.aa.aa: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>
<property><name>hbase.master.wait.for.log.splitting</name><value>true</value></property>
</configuration>
以上是配置。 现在我正在尝试使用以下方式启动一个新的 hbase 客户端:
val zk_quoroum = "xx.xxx.aa.aa"
val hBaseClient = new HBaseClient(zk_quoroum)
我无法以某种方式连接到动物园管理员:
6:04:54.238 [main-SendThread()] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server /xx.xxx.aa.aa:2181
16:04:59.264 [main-SendThread(xx.xxx.aa.aa:2181)] INFO org.apache.zookeeper.ClientCnxn - Client session timed out, have not heard from server in 5026ms for sessionid 0x0, closing socket connection and attempting reconnect
重新连接一直在尝试,但从未建立连接。这与法定人数是内部 url 这一事实有关吗?客户不住在 AWS 中。有人遇到过这个吗?
所以问题是端口 2181 不允许从外部 ips 访问。添加 tcp 规则解决了这个问题。