分享

HBase Api客户端访问卡住

一颗银杏树 发表于 2017-4-18 21:42:52 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 12 23005
       删除表        
        @Test
        public void dropTable() throws IOException{
                Configuration conf = HBaseConfiguration.create();
                Connection conn = ConnectionFactory.createConnection(conf);
                Admin admin = conn.getAdmin();
                //禁用表
                admin.disableTable(TableName.valueOf("t1"));
                admin.deleteTable(TableName.valueOf("t1"));
                System.out.println("ok");
                admin.close();
        }
运行时一直停在log4j那,console没有错误报警,也没进展,不知道哪里出问题了。。。请哪位大神指点指点迷津,谢谢!!!
log4j:WARN No appenders could be found for logger (org.apache.hadoop.security.Groups).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.




已有(12)人评论

跳转到指定楼层
2017 发表于 2017-4-19 09:23:47
本帖最后由 2017 于 2017-4-19 09:53 编辑

楼主哪个版本的。是否自定义了什么内容。可以尝试调用下面函数
/**
     * 删除一张表
     * @param tableName
     */  
    public static void dropTable(String tableName) {  
        try {  
            HBaseAdmin admin = new HBaseAdmin(configuration);  
            admin.disableTable(tableName);  
            admin.deleteTable(tableName);  
        } catch (MasterNotRunningException e) {  
            e.printStackTrace();  
        } catch (ZooKeeperConnectionException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  

    }  

回复

使用道具 举报

2253176457 发表于 2017-4-19 10:33:07
HBase各个进程都正常?
回复

使用道具 举报

一颗银杏树 发表于 2017-4-19 10:34:39
2017 发表于 2017-4-19 09:23
楼主哪个版本的。可以尝试调用下面函数
/**
     * 删除一张表

hbase 版本是1.2.5
调用了你的函数还是不行。同样的情况。网上查了下是少包的问题,但是不知道少哪些包。
回复

使用道具 举报

一颗银杏树 发表于 2017-4-19 10:37:44
本帖最后由 一颗银杏树 于 2017-4-19 10:39 编辑
2253176457 发表于 2017-4-19 10:33
HBase各个进程都正常?

是正常的,我使用的是hbase自带的zookeeper,可以在hbase shell中操作表,各进程如下:hadoop@ubuntu1:/soft/hbase/logs$ xcall.sh jps
-------------------------jps on localhost-------------------------
1601 NameNode
2531 HQuorumPeer
1876 ResourceManager
2629 HMaster
3191 Jps
-------------------------jps on ubuntu2--------------------------
1808 HQuorumPeer
2149 Jps
1477 SecondaryNameNode
the command is executed on ubuntu2 ok
-------------------------jps on ubuntu3--------------------------
2616 Jps
1996 HQuorumPeer
2158 HRegionServer
1502 DataNode
1630 NodeManager
the command is executed on ubuntu3 ok
-------------------------jps on ubuntu4--------------------------
1619 NodeManager
1491 DataNode
2440 Jps
1982 HRegionServer
the command is executed on ubuntu4 ok
-------------------------jps on ubuntu5--------------------------
2469 Jps
1990 HRegionServer
1623 NodeManager
1498 DataNode
the command is executed on ubuntu5 ok


回复

使用道具 举报

qcbb001 发表于 2017-4-19 11:14:02
一颗银杏树 发表于 2017-4-19 10:37
是正常的,我使用的是hbase自带的zookeeper,可以在hbase shell中操作表,各进程如下:hadoop@ubuntu1:/s ...

刚开始不熟悉,就要定位那个包了。除非自己阅读过源码。你把能加进去的都加进去。
回复

使用道具 举报

tanxl 发表于 2017-4-19 13:18:39
/**
         * 创建表
         *
         * @param tableName
         */
        public static void createTable(String tableName) {
                System.out.println("start create table ......");
                try {
                         Configuration  configuration = HBaseConfiguration.create();
                        HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration);
                        if (hBaseAdmin.tableExists(tableName)) {// 如果存在要创建的表,那么先删除,再创建
                                hBaseAdmin.disableTable(tableName);
                                hBaseAdmin.deleteTable(tableName);
                                System.out.println(tableName + " is exist,detele....");
                        }
                        HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);
                        tableDescriptor.addFamily(new HColumnDescriptor("column1"));
                        tableDescriptor.addFamily(new HColumnDescriptor("column2"));
                        tableDescriptor.addFamily(new HColumnDescriptor("column3"));
                        hBaseAdmin.createTable(tableDescriptor);
                } catch (MasterNotRunningException e) {
                        e.printStackTrace();
                } catch (ZooKeeperConnectionException e) {
                        e.printStackTrace();
                } catch (IOException e) {
                        e.printStackTrace();
                }
                System.out.println("end create table ......");
        }


注意:
1:eclipse上需要有配置文件hbase-site.xml
2:hosts 文件需要配置

回复

使用道具 举报

nextuser 发表于 2017-4-19 13:29:45
一颗银杏树 发表于 2017-4-19 10:37
是正常的,我使用的是hbase自带的zookeeper,可以在hbase shell中操作表,各进程如下:hadoop@ubuntu1:/s ...

zookeeper最好都安装了
回复

使用道具 举报

一颗银杏树 发表于 2017-4-19 14:30:52
qcbb001 发表于 2017-4-19 11:14
刚开始不熟悉,就要定位那个包了。除非自己阅读过源码。你把能加进去的都加进去。

hbase进程没有起来同样是这样的情况,说明还没到连接hbase的哪一步
回复

使用道具 举报

一颗银杏树 发表于 2017-4-19 14:35:51
tanxl 发表于 2017-4-19 13:18
/**
         * 创建表
         *

集群中所有hosts文件配置如下:
root@ubuntu2:~# cat /etc/hosts
#127.0.0.1        localhost
#127.0.1.1        ubuntu1
192.168.0.111        ubuntu1
192.168.0.121        ubuntu2
192.168.0.131        ubuntu3
192.168.0.141        ubuntu4
192.168.0.151        ubuntu5

包括window客户端hosts文件也是这样的。

hbase-site.xml放在类路径下了,内容如下:
<configuration>
        <property>
                <name>hbase.zookeeper.property.clientPort</name>
                <value>2181</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>ubuntu1,ubuntu2,ubuntu3</value>
        </property>        
</configuration>


回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条