HBase JAVA API не удается создать таблицу

Я пытался создать простую таблицу с помощью Java Api, но не смог этого сделать. Я постараюсь объяснить весь процесс, если кто-то может мне помочь.

Прежде всего я скачал версию 1.2.1 с http://apache.rediris.es/hbase/1.2.1/hbase-1.2.1-bin.tar.gz на моем компьютере с Ubuntu.

После распаковки я изменил файл 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

Затем я запустил оболочку hbase, создал таблицу и проверил, существует ли она.

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=

Есть идеи?


person David    schedule 07.05.2016    source источник


Ответы (1)


Я даю некоторые указания, так как я не смог дать четкого ответа на этот вопрос.

  • Поскольку вы можете создать таблицу с помощью оболочки, а через java-клиент вы не можете, вы также можете сделать что-то вроде этого:

    export HBASE_CLASSPATH= `hbase classpath`
    

    Я бы предложил использовать java -classpath $HBASE_CLASSPATH .

  • В основном это ошибки от zookeeper. пожалуйста, проверьте кворум zookeeper/подключение к команде zkcli

person Ram Ghadiyaram    schedule 07.05.2016
comment
Я перезапустил машину, и теперь она работает правильно. Я не понимаю, где была проблема. В любом случае, спасибо за помощь RamPrasad. - person David; 07.05.2016
comment
В общем, не рекомендуется перезапускать Hbase (за исключением последнего шага, если он слишком неясен для поиска) для устранения проблем. особенно если это производственная система, в которой выполняется несколько заданий. нам нужно найти первопричину и устранить ее. есть некоторые команды администрирования hbase, такие как hbck (hbase.apache.org/0.94 /book/hbck.in.depth.html), а также руководство по устранению неполадок (hbase.apache.org/0.94/book/trouble.html) - person Ram Ghadiyaram; 07.05.2016