使用java在远程HBase中创建表时出错

时间:2015-11-03 10:43:33

标签: java api hadoop hbase

public class HBase {

    static HBaseAdmin admin = null;
    static Configuration conf = null;

    public static final String HBASE_CONFIGURATION_ZOOKEEPER_QUORUM = "hbase.zookeeper.quorum";
    public static final String HBASE_CONFIGURATION_ZOOKEEPER_CLIENTPORT = "hbase.zookeeper.property.clientPort";
    public static final String HBASE_HOST = "hdn01.***.com ";
    public static final String HBASE_PORT = "2181";

    public static void main(String[] args) throws MasterNotRunningException,
            ZooKeeperConnectionException {

        conf = HBaseConfiguration.create();

        conf.clear();

        conf.set("hbase.zookeeper.quorum", HBASE_HOST);
        conf.set("hbase.zookeeper.property.clientPort", HBASE_PORT);

        HTableDescriptor tableDescriptor = new HTableDescriptor("website");

        // Adding column families to table descriptor
        tableDescriptor.addFamily(new HColumnDescriptor("personal"));
        tableDescriptor.addFamily(new HColumnDescriptor("professional"));
        System.out.println(" Table creation started ");

        try {
            HBaseAdmin.checkHBaseAvailable(conf);
            admin = new HBaseAdmin(conf);
            admin.createTable(tableDescriptor);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(" Table created ");

    }
}

显示以下错误:

Table creation started 
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException: Unexpected exception HadoopUser<init>
    at org.apache.hadoop.hbase.security.User$HadoopUser.<init>(User.java:275)
    at org.apache.hadoop.hbase.security.User$HadoopUser.<init>(User.java:256)
    at org.apache.hadoop.hbase.security.User.getCurrent(User.java:159)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionKey.<init>(HConnectionManager.java:473)
    at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:199)
    at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:118)
    at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1780)
    at HBase.main(HBase.java:45)
Caused by: javax.security.auth.login.LoginException: Login failed: Cannot run program "bash": CreateProcess error=2, The system cannot find the file specified
    at org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:250)
    at org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:275)
    at org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:257)
    at org.apache.hadoop.security.UserGroupInformation.login(UserGroupInformation.java:67)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
    at org.apache.hadoop.hbase.security.User.call(User.java:607)
    at org.apache.hadoop.hbase.security.User.callStatic(User.java:602)
    at org.apache.hadoop.hbase.security.User.access$500(User.java:51)
    at org.apache.hadoop.hbase.security.User$HadoopUser.<init>(User.java:265)

0 个答案:

没有答案