HBase JAVA API无法创建表

时间:2016-05-07 10:55:05

标签: hbase create-table

我一直在尝试用Java Api创建一个简单的表,但一直无法做到。我将尝试解释整个过程,以防任何人可以帮助我。

首先,我在我的ubuntu机器上从http://apache.rediris.es/hbase/1.2.1/hbase-1.2.1-bin.tar.gz下载了1.2.1版本。

解压缩后,我使用以下路径修改了hbase-site文件:

<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/XXXXX/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/XXXX/zookeeper</value>
</property>
</configuration>

然后我使用start-hbase.sh启动了该服务,并使用jps命令验证了该进程正在运行:

7734 HMaster
8614 Jps

然后我启动了shell hbase shell并创建了一个表并验证了该表是否存在。

hbase(main):001:0> create 'table1', 'colfam1', 'colfam2'
0 row(s) in 1.6920 seconds
=> Hbase::Table - table1
hbase(main):002:0> list
TABLE                                                              
table1                                                                  
1 row(s) in 0.0410 seconds
=> ["table1"]

一旦一切似乎都在控制台模式下工作,我尝试使用Java API做同样的事情。

这是我的CreateTable.java代码

import java.io.IOException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.conf.Configuration;

public class HBaseCreateTable {

   public static void main(String[] args) throws IOException {
       // Instantiating configuration class
       Configuration conf = HBaseConfiguration.create();
        Connection conn =ConnectionFactory.createConnection(conf);
        Admin admin = conn.getAdmin();

       // Instantiating table descriptor class
      HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("emp"));

   // Adding column families to table descriptor
   tableDescriptor.addFamily(new HColumnDescriptor("personal"));
   tableDescriptor.addFamily(new HColumnDescriptor("professional"));

   // Execute the table through admin
   System.out.println(" Creating the table ");
   admin.createTable(tableDescriptor);
   System.out.println(" Table created ");
   }
  }

创建文件后,我使用以下命令创建了一个类文件:

javac -classpath /home/XXXX/example/lib/hadoop-core-1.2.1.jar:/home/XXXX/hbase/lib/* CreateTable.java

正如您所看到的,我正在使用hbase jar等,而我已经下载了另一个jar文件

wget http://central.maven.org/maven2/org/apache/hadoop/hadoop-core/1.2.1/hadoop-core-1.2.1.jar

最后我推出了java代码:

java -classpath /home/XXXX/example/lib/hadoop-core-1.2.1.jar:/home/XXXX/hbase/lib/*:. CreateTable

结果我得到以下日志

16/05/07 12:49:34 INFO zookeeper.RecoverableZooKeeper: Process identifier=hconnection-0xd9cbc24 connecting to ZooKeeper ensemble=localhost:2181
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:host.name=XXX
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:java.version=1.7.0_65
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:java.vendor=Oracle Corporation
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:java.home=/usr/lib/jvm/java-7-openjdk-amd64/jre
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:java.class.path=/home/XXX/example/lib/hadoop-core-1.2.1.jar:/home/XXX/hbase/lib/xom-1.2.5.jar:/home/XXX/hbase/lib/jcodings-1.0.8.jar:/home/XXX/hbase/lib/hadoop-auth-2.5.1.jar:/home/XXX/hbase/lib/jsch-0.1.42.jar:/home/XXX/hbase/lib/hadoop-yarn-server-common-2.5.1.jar:/home/XXX/hbase/lib/jamon-runtime-2.4.1.jar:/home/XXX/hbase/lib/hadoop-mapreduce-client-core-2.5.1.jar:/home/XXX/hbase/lib/commons-cli-1.2.jar:/home/XXX/hbase/lib/commons-configuration-1.6.jar:/home/XXX/hbase/lib/asm-3.1.jar:/home/XXX/hbase/lib/log4j-1.2.17.jar:/home/XXX/hbase/lib/commons-io-2.4.jar:/home/XXX/hbase/lib/guice-servlet-3.0.jar:/home/XXX/hbase/lib/xml-apis-1.3.03.jar:/home/XXX/hbase/lib/activation-1.1.jar:/home/XXX/hbase/lib/hadoop-hdfs-2.5.1.jar:/home/XXX/hbase/lib/commons-digester-1.8.jar:/home/XXX/hbase/lib/guava-12.0.1.jar:/home/XXX/hbase/lib/jettison-1.3.3.jar:/home/XXX/hbase/lib/jetty-util-6.1.26.jar:/home/XXX/hbase/lib/hbase-external-blockcache-1.2.1.jar:/home/XXX/hbase/lib/hbase-common-1.2.1.jar:/home/XXX/hbase/lib/jersey-client-1.9.jar:/home/XXX/hbase/lib/hbase-hadoop2-compat-1.2.1.jar:/home/XXX/hbase/lib/commons-compress-1.4.1.jar:/home/XXX/hbase/lib/hbase-it-1.2.1-tests.jar:/home/XXX/hbase/lib/hbase-protocol-1.2.1.jar:/home/XXX/hbase/lib/hadoop-mapreduce-client-jobclient-2.5.1.jar:/home/XXX/hbase/lib/hbase-annotations-1.2.1-tests.jar:/home/XXX/hbase/lib/commons-httpclient-3.1.jar:/home/XXX/hbase/lib/joni-2.1.2.jar:/home/XXX/hbase/lib/hbase-examples-1.2.1.jar:/home/XXX/hbase/lib/hbase-thrift-1.2.1.jar:/home/XXX/hbase/lib/xalan-2.7.0.jar:/home/XXX/hbase/lib/slf4j-log4j12-1.7.5.jar:/home/XXX/hbase/lib/hbase-common-1.2.1-tests.jar:/home/XXX/hbase/lib/jets3t-0.9.0.jar:/home/XXX/hbase/lib/jersey-core-1.9.jar:/home/XXX/hbase/lib/commons-math-2.2.jar:/home/XXX/hbase/lib/commons-math3-3.1.1.jar:/home/XXX/hbase/lib/jackson-jaxrs-1.9.13.jar:/home/XXX/hbase/lib/xmlenc-0.52.jar:/home/XXX/hbase/lib/netty-all-4.0.23.Final.jar:/home/XXX/hbase/lib/commons-beanutils-core-1.7.0.jar:/home/XXX/hbase/lib/jersey-guice-1.9.jar:/home/XXX/hbase/lib/hbase-hadoop-compat-1.2.1.jar:/home/XXX/hbase/lib/snappy-java-1.0.4.1.jar:/home/XXX/hbase/lib/hbase-server-1.2.1.jar:/home/XXX/hbase/lib/hadoop-yarn-api-2.5.1.jar:/home/XXX/hbase/lib/bsh-core-2.0b4.jar:/home/XXX/hbase/lib/hbase-rest-1.2.1.jar:/home/XXX/hbase/lib/hbase-server-1.2.1-tests.jar:/home/XXX/hbase/lib/antisamy-1.4.3.jar:/home/XXX/hbase/lib/commons-logging-1.2.jar:/home/XXX/hbase/lib/aopalliance-1.0.jar:/home/XXX/hbase/lib/commons-collections-3.2.2.jar:/home/XXX/hbase/lib/hbase-client-1.2.1.jar:/home/XXX/hbase/lib/jsp-2.1-6.1.14.jar:/home/XXX/hbase/lib/jruby-complete-1.6.8.jar:/home/XXX/hbase/lib/jsr305-1.3.9.jar:/home/XXX/hbase/lib/hadoop-mapreduce-client-app-2.5.1.jar:/home/XXX/hbase/lib/htrace-core-3.1.0-incubating.jar:/home/XXX/hbase/lib/findbugs-annotations-1.3.9-1.jar:/home/XXX/hbase/lib/httpcore-4.4.1.jar:/home/XXX/hbase/lib/metrics-core-2.2.0.jar:/home/XXX/hbase/lib/protobuf-java-2.5.0.jar:/home/XXX/hbase/lib/hadoop-mapreduce-client-common-2.5.1.jar:/home/XXX/hbase/lib/batik-ext-1.7.jar:/home/XXX/hbase/lib/batik-css-1.7.jar:/home/XXX/hbase/lib/zookeeper-3.4.6.jar:/home/XXX/hbase/lib/batik-util-1.7.jar:/home/XXX/hbase/lib/servlet-api-2.5.jar:/home/XXX/hbase/lib/commons-codec-1.9.jar:/home/XXX/hbase/lib/apacheds-i18n-2.0.0-M15.jar:/home/XXX/hbase/lib/esapi-2.1.0.jar:/home/XXX/hbase/lib/commons-fileupload-1.2.jar:/home/XXX/hbase/lib/jetty-6.1.26.jar:/home/XXX/hbase/lib/hadoop-yarn-client-2.5.1.jar:/home/XXX/hbase/lib/hadoop-common-2.5.1.jar:/home/XXX/hbase/lib/apacheds-kerberos-codec-2.0.0-M15.jar:/home/XXX/hbase/lib/hbase-resource-bundle-1.2.1.jar:/home/XXX/hbase/lib/avro-1.7.4.jar:/home/XXX/hbase/lib/jasper-runtime-5.5.23.jar:/home/XXX/hbase/lib/libthrift-0.9.3.jar:/home/XXX/hbase/lib/hbase-prefix-tree-1.2.1.jar:/home/XXX/hbase/lib/leveldbjni-all-1.8.jar:/home/XXX/hbase/lib/paranamer-2.3.jar:/home/XXX/hbase/lib/commons-daemon-1.0.13.jar:/home/XXX/hbase/lib/jackson-xc-1.9.13.jar:/home/XXX/hbase/lib/xml-apis-ext-1.3.04.jar:/home/XXX/hbase/lib/httpclient-4.2.5.jar:/home/XXX/hbase/lib/hadoop-client-2.5.1.jar:/home/XXX/hbase/lib/jsp-api-2.1-6.1.14.jar:/home/XXX/hbase/lib/commons-beanutils-1.7.0.jar:/home/XXX/hbase/lib/jersey-server-1.9.jar:/home/XXX/hbase/lib/spymemcached-2.11.6.jar:/home/XXX/hbase/lib/xz-1.0.jar:/home/XXX/hbase/lib/guice-3.0.jar:/home/XXX/hbase/lib/hadoop-annotations-2.5.1.jar:/home/XXX/hbase/lib/servlet-api-2.5-6.1.14.jar:/home/XXX/hbase/lib/junit-4.12.jar:/home/XXX/hbase/lib/hbase-it-1.2.1.jar:/home/XXX/hbase/lib/jasper-compiler-5.5.23.jar:/home/XXX/hbase/lib/hbase-procedure-1.2.1.jar:/home/XXX/hbase/lib/disruptor-3.3.0.jar:/home/XXX/hbase/lib/api-asn1-api-1.0.0-M20.jar:/home/XXX/hbase/lib/jaxb-api-2.2.2.jar:/home/XXX/hbase/lib/javax.inject-1.jar:/home/XXX/hbase/lib/hbase-shell-1.2.1.jar:/home/XXX/hbase/lib/jaxb-impl-2.2.3-1.jar:/home/XXX/hbase/lib/commons-lang-2.6.jar:/home/XXX/hbase/lib/jackson-mapper-asl-1.9.13.jar:/home/XXX/hbase/lib/nekohtml-1.9.12.jar:/home/XXX/hbase/lib/java-xmlbuilder-0.4.jar:/home/XXX/hbase/lib/hbase-annotations-1.2.1.jar:/home/XXX/hbase/lib/hadoop-mapreduce-client-shuffle-2.5.1.jar:/home/XXX/hbase/lib/commons-el-1.0.jar:/home/XXX/hbase/lib/commons-net-3.1.jar:/home/XXX/hbase/lib/slf4j-api-1.7.7.jar:/home/XXX/hbase/lib/jackson-core-asl-1.9.13.jar:/home/XXX/hbase/lib/jetty-sslengine-6.1.26.jar:/home/XXX/hbase/lib/api-util-1.0.0-M20.jar:/home/XXX/hbase/lib/jersey-json-1.9.jar:/home/XXX/hbase/lib/hadoop-yarn-common-2.5.1.jar:.
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=/tmp
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:java.compiler=<NA>
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:os.name=Linux
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:os.arch=amd64
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:os.version=3.13.0-32-generic
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:user.name=XXX
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:user.home=/home/XXX
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Client environment:user.dir=/home/XXX/example
16/05/07 12:49:34 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=90000 watcher=hconnection-0xd9cbc240x0, quorum=localhost:2181, baseZNode=/hbase
16/05/07 12:49:34 INFO zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
16/05/07 12:49:34 INFO zookeeper.ClientCnxn: Socket connection established to localhost/127.0.0.1:2181, initiating session
16/05/07 12:49:34 INFO zookeeper.ClientCnxn: Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x1548aa96e9b0012, negotiated timeout = 40000
Creating the table
16/05/07 12:50:23 INFO client.RpcRetryingCaller: Call exception, tries=10, retries=35, started=48777 ms ago, cancelled=false, msg=
16/05/07 12:50:43 INFO client.RpcRetryingCaller: Call exception, tries=11, retries=35, started=68849 ms ago, cancelled=false, msg=
16/05/07 12:51:03 INFO client.RpcRetryingCaller: Call exception, tries=12, retries=35, started=88997 ms ago, cancelled=false, msg=
16/05/07 12:51:23 INFO client.RpcRetryingCaller: Call exception, tries=13, retries=35, started=109114 ms ago, cancelled=false, msg=
16/05/07 12:51:44 INFO client.RpcRetryingCaller: Call exception, tries=14, retries=35, started=129260 ms ago, cancelled=false, msg=

正如您在最后看到的那样,代码在创建表时结束,并显示一条信息消息

   System.out.println(" Creating the table ");
   admin.createTable(tableDescriptor);
   System.out.println(" Table created ");

Creating the table
16/05/07 12:50:23 INFO client.RpcRetryingCaller: Call exception, tries=10, retries=35, started=48777 ms ago, cancelled=false, msg=

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我正在给出一些指示,因为我无法给出明确的答案。

  • 由于您可以使用shell创建表,而无法通过Java客户端创建表,您也可以执行以下操作:

    export HBASE_CLASSPATH= `hbase classpath`
    

    我建议使用java -classpath $ HBASE_CLASSPATH。

  • 通常这些都是来自zookeeper的错误。请检查zookeeper仲裁/连接到zkcli命令