0

Spring Boot を使用して Web サービスを作成しており、データ モデルを HBase に保持したいと考えています。このタスクにはクンデラを使用したいと考えています。しかし、私はそれを機能させることができません。アプリケーションをスピンアップすると、アプリケーションが起動し、約 1 分間フリーズしてタイムアウトになります。ここに私の設定のいくつかのスニペットがあります:

私のpersistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">
    <persistence-unit name="hbase_pu">
        <provider>com.impetus.kundera.KunderaPersistence</provider>     
        <properties>            
            <property name="kundera.nodes" value="my-hbase-server.example.com"/>
            <property name="kundera.port" value="2181"/>
            <property name="kundera.keyspace" value="mykeyspace"/>
            <property name="kundera.dialect" value="hbase"/>
            <property name="kundera.client.lookup.class" value="com.impetus.client.hbase.HBaseClientFactory" />
            <property name="kundera.ddl.auto.prepare" value="update"/>             
        </properties>       
    </persistence-unit>
</persistence>

エンティティ マネージャーの構成:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    final LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean();
    return bean;
}

これを実行しようとすると、正常にスピンアップするようです:

... many info outputs ...
2014-12-10 09:07:05.682  INFO 5194 --- [ost-startStop-1] org.apache.zookeeper.ZooKeeper           : Initiating client connection, connectString=my-hbase-server.example.com:2181 sessionTimeout=90000 watcher=hconnection-0x556effa0, quorum=my-hbase-server.example.com:2181, baseZNode=/hbase
2014-12-10 09:07:05.694  INFO 5194 --- [ne002.int:2181)] org.apache.zookeeper.ClientCnxn          : Opening socket connection to server my-hbase-server.example.com/x.x.x.x:2181. Will not attempt to authenticate using SASL (unknown error)
2014-12-10 09:07:05.698  INFO 5194 --- [ne002.int:2181)] org.apache.zookeeper.ClientCnxn          : Socket connection established to my-hbase-server.example.com/x.x.x.x:2181, initiating session
2014-12-10 09:07:05.780  INFO 5194 --- [ne002.int:2181)] org.apache.zookeeper.ClientCnxn          : Session establishment complete on server my-hbase-server.example.com/x.x.x.x:2181, sessionid = 0x14a2e04a4ca001f, negotiated timeout = 40000
2014-12-10 09:07:05.820  INFO 5194 --- [ost-startStop-1] o.a.h.hbase.client.ZooKeeperRegistry     : ClusterId read in ZooKeeper is null

その後、約 1 分間フリーズし、その後クラッシュします。

2014-12-10 09:08:05.703 ERROR 5194 --- [ost-startStop-1] c.i.c.h.s.HBaseSchemaManager             : Either check for network connection or table isn't in enabled state, Caused by:
... large stack trace, interesting section: ...
Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:301)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:131)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:56)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:179)
    at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:287)
    at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:267)
    at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:139)
    at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:134)
    at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:763)
    at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:185)
    at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:86)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.isTableAvailable(ConnectionManager.java:919)
    at org.apache.hadoop.hbase.client.HBaseAdmin.isTableAvailable(HBaseAdmin.java:1127)
    at org.apache.hadoop.hbase.client.HBaseAdmin.isTableAvailable(HBaseAdmin.java:1135)
    at com.impetus.client.hbase.schemamanager.HBaseSchemaManager.update(HBaseSchemaManager.java:100)
    ... 165 more

ここで何がうまくいかないのですか?何か見逃していましたか? もしそうなら、何がありますか?

4

1 に答える 1

0

Zookeeper と関係があることが判明しました。hbase のエントリ ポイントは にハードコードされて/hbaseおり、サーバーのエントリ ポイントは異なっていました。しかし残念なことに、Kundera は不完全なようで、KunderaCriteriaQueryたくさん// TODO Auto-generated method stubありreturn null、残念ながら私の仕事には使用できません。

于 2014-12-10T09:34:37.400 に答える