2016-03-10 1 views
2

Je viens de commencer à apprendre cassandra et je rencontre des problèmes avec cqlsh. Je cours Cassandra 2.2.2 et cqlsh 4.1.1. J'ai mon fichier Cassandra.yaml, j'ai mis le start_rpc: false car je ne veux pas utiliser le protocole Thrift.erreurs cqlsh lors de la connexion à Cassandra sur le mode de protocole binaire du port 90h localhost

Cassandra commence bien mais quand je lance la commande cqlsh je reçois:

Connection error: Could not connect to localhost:9160 

je réalise que je devrais probablement se connecter au port 9042 comme je ne suis pas en utilisant Thrift. Alors j'ai changé commande:

cqlsh localhost 9042 

Je reçois l'erreur suivante:

Traceback (most recent call last): 
    File "/usr/local/bin/cqlsh", line 2044, in <module> 
    main(*read_options(sys.argv[1:], os.environ)) 
    File "/usr/local/bin/cqlsh", line 2030, in main 
    display_float_precision=options.float_precision) 
    File "/usr/local/bin/cqlsh", line 480, in __init__ 
    cql_version=cqlver, transport=transport) 
    File "/usr/local/lib/python2.7/site-packages/cql/connection.py", line 143, in connect 
    consistency_level=consistency_level, transport=transport) 
    File "/usr/local/lib/python2.7/site-packages/cql/connection.py", line 59, in __init__ 
    self.establish_connection() 
    File "/usr/local/lib/python2.7/site-packages/cql/thrifteries.py", line 159, in establish_connection 
    self.remote_thrift_version = tuple(map(int, self.client.describe_version().split('.'))) 
    File "/usr/local/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1255, in describe_version 
    return self.recv_describe_version() 
    File "/usr/local/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1265, in recv_describe_version 
    (fname, mtype, rseqid) = self._iprot.readMessageBegin() 
    File "/usr/local/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 126, in readMessageBegin 
    sz = self.readI32() 
    File "/usr/local/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 206, in readI32 
    buff = self.trans.readAll(4) 
    File "/usr/local/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 63, in readAll 
    raise EOFError() 
EOFError 

Est-ce que je fais quelque chose de mal? S'il vous plaît donnez votre avis.

Ajout de plus de détails cassandra.yaml:

rpc_address: localhost 
listen_address: localhost 

broadcast_rpc_address n'est pas réglé. il est commenté. Il suppose que c'est la valeur par défaut/

Répondre

2

Dans votre cassandra.yaml, quelles sont les valeurs de listen_address, rpc_address, et broadcast_rpc_address? Vous devez connecter cqlsh à l'adresse IP spécifiée dans l'un de ceux-ci.

Avez-vous installé plusieurs versions de Cassandra? Je demande seulement parce que cqlsh se connecte automatiquement via 9042 à partir de Cassandra 2.1, donc vous ne devriez pas avoir à le spécifier. Si vous avez une version plus ancienne qui a été installée via un programme d'installation de paquet (apt-get, yum) alors simplement exécuter cqlsh appellera l'ancien, et vous devrez spécifier votre chemin complet pour appeler le bon pour votre nouvelle version Je le mentionne, car cqlsh 4.1.1 a été livré avec Cassandra 2.0.11 et DSE 4.6.0. Si vous avez vraiment Cassandra 2.2, alors votre version de cqlsh devrait être au moins 5.0.

La ligne inférieure, est à assurez-vous que vous utilisez le cqlsh qui a été livré avec votre version de Cassandra.

+0

J'ai mis à jour les questions avec les détails que vous aviez demandés. – motiver

+1

Aussi, vous avez raison, j'ai Cassandra 2.1.2 et 2.2.2. – motiver