当前位置: 首页 > 知识库问答 >
问题:

Hbase连接到远程服务器上的localhost。Zookeper否认连接

楚翰
2023-03-14

我们在谷歌云平台上一直面临着一个相当奇怪的问题。我们试图在google cloud上设置一个Hbase独立实例,并使用静态IP地址,然后通过Java API远程连接到该实例。

如果代码被编入Jar并部署在HBase服务器上,则运行良好,但是从本地机器上运行,尽管它打开了所有端口并完全访问,但拒绝通过Zookeeper进行连接。

搜了无数论坛,都没能成功。

已经更改了etc/hosts文件,在hbase-site.xml中添加了zookeeper仲裁,但一切都不起作用。

我有一个孤立的问题是HBase只通过本地主机而不是外部IP连接到Zookeeper。

我们将在CentOS8上部署此功能。

为了确认它与连接性无关,我们在局域网的一台独立机器上的一台虚拟机上尝试了这个操作,但似乎在某个地方缺少了它不想工作的东西。

hbase-site.xml如下所示:

<property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  <property>
     <name>hbase.zookeeper.quorum</name>
    <value>ip of server</value></property>
  </property>

连接过程中遇到的错误是:

2021-03-02 17:57:00,327 INFO  [main] zookeeper.ZooKeeper: Initiating client connection, connectString=10.0.0.22:2181 sessionTimeout=10000 watcher=org.apache.hadoop.hbase.zookeeper.PendingWatcher@3dfa819
2021-03-02 17:57:00,332 INFO  [main] common.X509Util: Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2021-03-02 17:57:00,336 INFO  [main] zookeeper.ClientCnxnSocket: jute.maxbuffer value is 4194304 Bytes
2021-03-02 17:57:00,343 INFO  [main] zookeeper.ClientCnxn: zookeeper.request.timeout value is 0. feature enabled=
2021-03-02 17:57:00,356 INFO  [main-SendThread(10.0.0.22:2181)] zookeeper.ClientCnxn: Opening socket connection to server rd-hp-pav-2/10.0.0.22:2181. Will not attempt to authenticate using SASL (unknown error)
2021-03-02 17:57:00,358 INFO  [main-SendThread(10.0.0.22:2181)] zookeeper.ClientCnxn: Socket error occurred: rd-hp-pav-2/10.0.0.22:2181: Connection refused
2021-03-02 17:57:01,460 INFO  [main-SendThread(10.0.0.22:2181)] zookeeper.ClientCnxn: Opening socket connection to server rd-hp-pav-2/10.0.0.22:2181. Will not attempt to authenticate using SASL (unknown error)

服务器上的etc/hosts文件包含以下格式:

127.0.0.1 localhost
123.23.34.56 cloud.google.com.c1.hbase hbase

在HBase的Web gui上显示了以下信息,当HBase-site.xml中的所有值都已更改时,我可以看到这些信息指的是localhost

任何帮助都将不胜感激。

谢谢

共有1个答案

丁经略
2023-03-14

您可以尝试在本地/etc/hosts文件条目中添加以下内容

public_ip_zookeeper/master private_dns_name_zookeeper/master

我在AWS也遇到过类似的问题。这给我解决了。

 类似资料:
  • 问题内容: 我为远程服务器编写了以下hbase客户端类: 它引发了一些异常: 您能告诉我为什么会引发异常,代码有什么问题以及如何解决它。 问题答案: 由于您的HBase服务器的hosts文件,因此会发生此问题。 您只需要编辑HBase服务器的/ etc / hosts文件。 从该文件中删除localhost条目,然后将localhost条目放在HBase服务器IP的前面。 例如,您的HBase服务

  • 从任何远程计算机将Apache Phoenix JDBC客户端(我使用sqlline.py进行测试)连接到Hbase时遇到问题。 我测试的方式如下: 我ssh到另一台运行linux的机器,然后尝试连接到我的zookeeper仲裁(目前只有一台机器:christianwith-KP): 尝试连接后,命令行什么也不做,几分钟后我得到了很多Java错误消息。 这是来自日志文件Zookeeper.out的

  • 问题内容: 我想对redis.conf进行一些更改,以便每当我键入redis-cli时,它就会将我连接到安装在远程服务器上的redis。 我知道我们可以通过以下方式连接到安装在远程服务器上的redis: 但是实际上,我有一些bash脚本,在那些脚本中,我在很多地方都使用过redis-cli。因此,我不想以每个文件中的redis-cli -h’IP- Address-Of-Server’替换redi

  • 问题内容: 我已经使用Ubuntu 10.10服务器上http://redis.io/topics/quickstart上的快速入门指南中的说明成功安装了Redis 。我将服务作为dameon运行(因此可以通过init.d运行) 该服务器是具有内部和外部IP的Rackspace Cluster的一部分。主机在端口6379上运行(Redis的标准配置) 我在iptables中添加了一行,以允许来自端

  • 我在localhost上有一个带有mongo数据库的Spring Boot应用程序,一切都很好。 当我运行我的应用程序时,我得到“com.mongodb.mongoSocketOpenException:Exception opening Socket”由“regused by:java.net.SocketTimeoutException:connect timed out”引起

  • 我在A机上设置了伪分布式模式的Hadoop和Hbase,我正在B机上运行我的客户端(Java程序)(A机和B机可以互相通信)。但我这样做面临问题。 我的客户端代码如下所示: 配置config=HBaseConfiguration.create(); config.set(“HBase.ZookeePer.quorum”,zookeeperLocation);config.set(“hbase.zo