21

Docker化されたZookeeperインスタンスでApache Curatorを使用しようとしていますが、どのように接続しようとしても、常に

org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for...

エラー。ドキュメントを理解しようとしましたが、どこにも行きません。Zookeeper CLI にログインし、ポート番号が正しいことを確認しました。

snerd@powerglove:~$ docker ps CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS   NAMES 31f1093495ba        compose_zookeeper   "/opt/zookeeper/bin/   3 weeks ago         Up About a minute   0.0.0.0:32770->2181/tcp,
0.0.0.0:32769->2888/tcp, 0.0.0.0:32768->3888/tcp   zookeeper

ここに私が使用しようとしているコードがあります:

public class App {
    public static void main( String[] args ) {
        CuratorFramework client = CuratorFrameworkFactory.newClient("0.0.0.0:32770", new RetryUntilElapsed(3000, 1000));
        client.start();

            try {
                client.create().forPath("/larry-smells/foop", "tuna?".getBytes());
            } catch (Exception e) {
                System.out.println(e.toString());
            }

    }
}

キュレーターの開始ページからわかる限り、これは機能するはずです。私は何が欠けていますか?

edit1 は、次のようにして飼育係のアンサンブルからデータを引き出すことができることを発見しました。

System.out.println(new String(curatorFramework.getData().forPath("/larry-smells"))); 

しかし、作成コマンドはまだ爆発しています。

編集2

エラーのスタックトレース:

org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /larry-smells/foop at org.apache.zookeeper.KeeperException.create(KeeperException.java:103) at org.apache.zookeeper.KeeperException.create(KeeperException. java:51) org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1297) で org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1040) で org.apache.curator. org.apache.curator.connection.StandardConnectionHandlingPolicy.callWithRetry(StandardConnectionHandlingPolicy.java:67) でframework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1023) org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:99)で) org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:1020) で org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:501) at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:491) at org.apache.curator.framework.imps.CreateBuilderImpl$4 .forPath(CreateBuilderImpl.java:367) at org.apache.curator.framework.imps.CreateBuilderImpl$4.forPath(CreateBuilderImpl.java:309) at com.mycompany.app.App.main(App.java:35)メイン (App.java:35)メイン (App.java:35)

4

5 に答える 5

45

編集: どうやらこのエラーは、Curator と Zookeeper の組み合わせを間違って使用している場合に発生する可能性があります。curator.apache.orgから:

Curator 2.xx - ZooKeeper 3.4.x および ZooKeeper 3.5.x の両方と互換性があります

Curator 3.xx - ZooKeeper 3.5.x とのみ互換性があり、動的再構成などの新機能のサポートが含まれています。


スタック トレースではなく、そのエラー コードだけで問題を特定するのは困難ですが、アプリケーションをより安定させるために提案するいくつかの改善点は次のとおりです。

public class App {
    public static void main( String[] args ) {
        CuratorFramework client = CuratorFrameworkFactory.newClient("0.0.0.0:32770", new RetryUntilElapsed(3000, 1000));
        client.start();

        try {
            //make sure you're connected to zookeeper.
            client.blockUntilConnected();

            //Make sure the parents are created.
            client.create().creatingParentsIfNeeded().forPath("/larry-smells/foop", "tuna?".getBytes());
        } catch (Exception e) {
            System.out.println(e.toString());
            }

    }
}
于 2016-03-02T17:20:59.193 に答える
3

私も同様の例外に直面しました。互換性のある以下の依存関係を使用し、例外の解決に役立ちました。

    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.6</version>
    </dependency>

    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>4.0.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-x-discovery</artifactId>
        <version>4.0.1</version>
    </dependency>
于 2018-10-09T10:27:23.583 に答える
1

この問題は、非互換性が原因で発生します。

これを修正するには、ここで説明されているようにバージョンを変更する必要があります:
https://curator.apache.org/zk-compatibility.html

これが機能しない場合は、3.4.x の Zookeeper バージョン (現在は'2.12.0') に依存する最新のキュレーター バージョンを探してください。

于 2017-11-09T05:23:15.577 に答える