zoukankan      html  css  js  c++  java
  • Java调用HBase API卡死的解决方法

    假设有4台机,IP及主机名如下:

    192.168.100.105 c1
    192.168.100.110 c2
    192.168.100.115 c3
    192.168.100.120 c4

    调用HBase API的示例代码:

    String tableName = "User";
    try {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "c1:2181,c2:2181,c3:2181,c4:2181");
        Connection conn = ConnectionFactory.createConnection(conf);
        Admin admin = conn.getAdmin();
        TableName tbObj = TableName.valueOf(tableName);
        if (admin.tableExists(tbObj)) {  //debug运行一般会卡在这句
            System.out.println(tableName + "表已存在!");
        } else {
            HTableDescriptor desc = new HTableDescriptor(tbObj);
            admin.createTable(desc);
            System.out.println(tableName + "表创建成功!");
        }
    } catch (Exception e) {
        System.out.println(e);
    }

    原因:

    ZooKeeper需要使用主机名访问。

    * 只能用主机名访问。也就是说,即使把代码中的主机名改成IP,也会卡死,例如:

    conf.set("hbase.zookeeper.quorum", "192.168.100.105:2181,192.168.100.110:2181,192.168.100.115:2181,192.168.100.120:2181");

    解决方法:

    在运行代码的主机的hosts文件添加主机名和IP的映射。

    Linux

    vim /etc/hosts

    加入以下内容:

    192.168.100.105 c1
    192.168.100.110 c2
    192.168.100.115 c3
    192.168.100.120 c4

    Windows

    1.打开C:WindowsSystem32driversetc目录

    2.右键hosts文件属性,去掉“只读”属性(就是不勾选)

    3.安全 -> 编辑 -> User(一般还有括号用户名)

    4.在User的权限中,全部勾选为允许。

    5.保存(确定 -> 确定 -> 确定)。

    6.用记事本打开hosts文件,输入以下内容:

    192.168.100.105 c1
    192.168.100.110 c2
    192.168.100.115 c3
    192.168.100.120 c4
  • 相关阅读:
    9.8-9.9多校互测与牛客网提高一测
    数位$dp$
    互不侵犯_状压$dp$
    状态压缩dp初学__$Corn Fields$
    树形$dp$学习笔记
    最长公共上升子序列$LCIS$
    区间dp学习笔记
    保护知识产权,让创新更有动力!
    crmeb后台七牛云存储相关配置步骤
    crmeb一款最适合二次开发的开源微信公众号小程序框架
  • 原文地址:https://www.cnblogs.com/live41/p/15504691.html
Copyright © 2011-2022 走看看