无法使java客户端连接到远程计算机中的独立hbase设置

8dtrkrch  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(354)

我使用的是hbase.1.1.2版本。我可以从hbase shell和hbase restapi做任何事情。我有一个vmware和ubuntu,其中hadoop&hbase已经配置好了,我正在windows机器上执行java程序。
note:- i 没有安装单独的zookeeper我正在使用hbase内置zookeeper。
jps输出:-

3824 SecondaryNameNode
4194 NodeManager
7154 HMaster
9092 Jps
3300 NameNode
3510 DataNode
3975 ResourceManager

下面是my hbase-site.xml:-

<configuration>
     <property>
      <name>hbase.rootdir</name>
      <value>hdfs://XX.XX.XX.XX:9000/hbase</value>
   </property>

   //Here you have to set the path where you want HBase to store its built in zookeeper  files.
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/prag/Desktop/hadoop_data/zookeeper</value>
   </property>  

<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property> 

</configuration>
  • xx.xx.xx.xx是我安装了hbase的ubuntu vm的ip地址,我可以从windows ping。

下面是我的java代码:-

import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.HBaseAdmin;

    public class HBaseConnection {

        public HBaseConnection() {

        }

        public static void main(String[] args){
            try{
                Configuration config=HBaseConfiguration.create();

                HBaseAdmin.checkHBaseAvailable(config);
                config.set("hbase.zookeeper.quorum", "00.00.00.00");

            }catch(Exception e){
                e.printStackTrace();
            }
        }

    }

下面是我从java程序中得到的一个例外:-

org.apache.hadoop.hbase.ZooKeeperConnectionException: Can't connect to ZooKeeper
        at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2813)
        at com.sag.hbase.HBaseConnection.main(HBaseConnection.java:17)
    Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
        at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
        at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1073)
        at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2806)
        ... 1 more
xjreopfe

xjreopfe1#

为了从客户端连接到hbase,客户端还需要知道zookeeper仲裁正在哪里运行。这与zookeeper连接信息相同。zookeeper默认使用端口 2181 ,因此在配置中,仲裁配置应设置为 XX.XX.XX.XX:2181 :

config.set(HConstants.ZOOKEEPER_QUORUM, "XX.XX.XX.XX:2181");

当然,用真正的ip地址替换xxs。可以使用hbase zkclki命令验证设置。在打电话之前,您还需要移动这条线路 checkHBaseAvailable .

zf9nrax1

zf9nrax12#

为了帮助其他人,我想回答我的问题。解决这个问题的方法是,你不应该在你的主机文件中有localhost的条目。

相关问题