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
  • 相关阅读:
    一些大佬博客里的个签
    后缀子串排序
    PAT 1024 Palindromic Number[难]
    dp训练
    字符串最长子串匹配dp矩阵[转载]
    最短路径并查集+Floyd[转载]
    素数牛客网[求大数内所有素数]
    sql server 的规格参数,限制等 (zz)
    sql server varchar(max), NVARCHAR(MAX), VARBINARY(MAX) (zz)
    Oracle Data Types NVARCHAR2 (zz)
  • 原文地址:https://www.cnblogs.com/live41/p/15504691.html
Copyright © 2011-2022 走看看