用Scala api访问阿里云服务器hbase问题

  • Post author:
  • Post category:其他


api连接阿里云服务器的hbase报错:

Exception in thread “main” org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /test

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:1501)

at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1529)

at com.jiq.test.ZooKeeperTest.main(ZooKeeperTest.java:12)

1.首先Windowsping不通服务器

在阿里云控制面板的安全组里配置入方向的规则,可以ping通了。

2.仍然报错,检查Windows和服务器的防火墙。

都关闭,还是报错。

3.配置Windows和服务器ip地址的域名映射。

仍然报错。

4.这是打算从zookeeper入手,在网上找了个demo打算试下

package Hbase

import java.util.concurrent.CountDownLatch

import org.apache.zookeeper.CreateMode
import org.apache.zookeeper.ZooDefs.Ids
import org.apache.zookeeper.ZooKeeper


object ZooKeeperTest {
  @throws[Exception]
  def main(args: Array[String]): Unit = {


    val zk = new ZooKeeper("cts01:2181", 3000, null)
    System.out.println("=========创建节点===========")
    if (zk.exists("/test1", false) == null) zk.create("/test", "znode1".getBytes, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT)
    System.out.println("=============查看节点是否安装成功===============")
    System.out.println(new String(zk.getData("/test", false, null)))
    System.out.println("=========修改节点的数据==========")
    zk.setData("/test", "zNode2".getBytes, -1)
    System.out.println("========查看修改的节点是否成功=========")
    System.out.println(new String(zk.getData("/test", false, null)))
    System.out.println("=======删除节点==========")
    zk.delete("/test", -1)
    System.out.println("==========查看节点是否被删除============")
    System.out.println("节点状态:" + zk.exists("/test", false))
    zk.close()
  }

}

报错zookeeper拒绝连接

5.确定防火墙已经关闭,还是报错

关闭的命令:

systemctl status firewalld.service #检查防火墙状态

systemctl stop firewalld.service #关闭防火墙

systemctl disable firewalld.service #禁止开机启动防火墙

6.关闭SELINUX,还是报错

vim /etc/selinux/config

SELINUX=enforcing 注释掉

SELINUXTYPE=targeted 注释掉

SELINUX=disabled #增加

7.再回去看阿里云的安全组配置规则,发现原因。

增加了一条全部规则,zookeeper可以访问了。

进入阿里云ECS实例控制台

1)进入ECS控制台

2).选择更多-安全组配置

3).选择配置规则

4)选择添加安全组规则

5)添加安全组规则

这里写图片描述

这样Windows机器就能使用ECS提供的外网IP访问到ZooKeeper了。

但是在Windows上不能访问hbase,就提交工单问阿里云工作人员,结果说hbase不能本地访问,只能在ecs服务器中访问。



版权声明:本文为tang_xiaotang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。