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

使用java在远程HBase中创建表时出错,java,api,hadoop,hbase,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_CONFIGURATI

它显示以下错误:

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 ");

    }
}
表创建已开始
线程“main”java.lang.reflect.UndeclaredThrowableException中的异常:HadoopUser意外异常
位于org.apache.hadoop.hbase.security.User$HadoopUser.(User.java:275)
位于org.apache.hadoop.hbase.security.User$HadoopUser。(User.java:256)
位于org.apache.hadoop.hbase.security.User.getCurrent(User.java:159)
位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionKey.(HConnectionManager.java:473)
位于org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:199)
位于org.apache.hadoop.hbase.client.HBaseAdmin.(HBaseAdmin.java:118)
位于org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1780)
位于HBase.main(HBase.java:45)
原因:javax.security.auth.login.login异常:登录失败:无法运行程序“bash”:CreateProcess error=2,系统找不到指定的文件
位于org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:250)
位于org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:275)
位于org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:257)
位于org.apache.hadoop.security.UserGroupInformation.login(UserGroupInformation.java:67)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
位于org.apache.hadoop.hbase.security.User.call(User.java:607)
位于org.apache.hadoop.hbase.security.User.callStatic(User.java:602)
位于org.apache.hadoop.hbase.security.User.access$500(User.java:51)
位于org.apache.hadoop.hbase.security.User$HadoopUser.(User.java:265)

您使用的是哪种版本的hbase?和“原因:javax.security.auth.login.login异常:登录失败:无法运行程序“bash”:CreateProcess error=2,系统找不到指定的文件”似乎用户没有正确的权限或bash未安装设置“-DHADOOP_user_NAME=”,将帮助您设置任何其他用户,从Java API运行时,除了底层网络pwd之外。上述用户应具有执行正在处理的操作的权限。您还可以使用“user_permission”来获取您对该hbase表的权限。实际上,我已经给了一个任务,在公司云端的hbase中创建一个表。所以他们告诉我使用java api在hbase上创建一个表,该表只具有给定的凭据主机名和端口。
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)