4

ラップトップで Cassandra 1.2.11 を実行しています。nodetoolandを使用して接続できcqlshますが、DataStax 1.0.4 Java API を使用して CQL 3.0 を使用して接続しようとすると、次のエラーが発生します。

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1 ([localhost/127.0.0.1] Unexpected error during transport initialization (com.datastax.driver.core.TransportException: [localhost/127.0.0.1] Channel has been closed)))
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:186)

DataStaxのドキュメントから取得した、次のコードを使用して接続しています。withPort()コールアウトのままにするなど、いくつかのポート番号を試しましたが、何も機能していないようです。

Cluster cluster = new Cluster.Builder()
        .addContactPoints("localhost")
        .withPort(9160)
        .build();

を使用telnetすると、指定した各ポートで Cassandra サーバーが確実にリッスンしていることを確認できます。ドキュメントに記載されているように、必要なすべてのライブラリ jar ファイルがクラスパス上にあることも確認しました。

4

3 に答える 3

11

ドキュメントのセクションを見逃していたことがわかりました。

以前のバージョンの Cassandraの古い構成ファイルを使用していましたが、 Native Transportバイナリ プロトコルcassandra.yamlが有効になりませんでした。次のスニペットは、変更が必要な設定を示しています。

# Whether to start the native transport server.
start_native_transport: true
# port for the CQL native transport to listen for clients on
native_transport_port: 9042 

Cassandra を再起動した後、クライアントは正常に接続し、CQL 3.0 コマンドを実行できました。接続を作成するコードは、次のように、ファイルで指定されたポートを使用するように変更する必要があることに注意してください。

Cluster cluster = new Cluster.Builder()
        .addContactPoints("localhost")
        .withPort(9042)
        .build();

また、 Cassandra 1.2.5以降では、ネイティブ トランスポートがデフォルトで有効になっていることに注意してください。

于 2013-12-05T20:00:25.993 に答える
0

Ubuntuでも同じ問題があります。最近、datastaxガイドラインである以下のコマンドでインストールしました

apt-get install cassandra=2.0.11 dsc20=2.0.11-1

その前に私はちょうど使用しました

apt-get インストール カサンドラ

それは私にとって同じ問題になります。最初のコマンド(datastaxガイドライン)で削除してからインストールしました。

PS cassandraを削除するには、以下のコマンドを使用します

apt-get パージ カサンドラ

于 2015-12-11T14:40:25.257 に答える