2013-08-10 4 views
1

Je suis nouveau à Cassandra et je viens d'exécuter un cluster Cassandra (version 1.2.8) avec 5 nœuds, et j'ai créé plusieurs espaces de touches et tables là-bas. Cependant, je trouve toutes les données sont stockées dans un nœud (dans la sortie ci-dessous, je l'ai remplacé les adresses IP par des numéros de nœuds manuellement):Un seul nœud possède des données dans un cluster Cassandra

Datacenter: 105 
========== 
Address   Rack  Status State Load   Owns    Token 
                       4 
node-1   155   Up  Normal 249.89 KB  100.00%    0 
node-2   155   Up  Normal 265.39 KB  0.00%    1 
node-3   155   Up  Normal 262.31 KB  0.00%    2 
node-4   155   Up  Normal 98.35 KB  0.00%    3 
node-5   155   Up  Normal 113.58 KB  0.00%    4 

et dans leurs fichiers cassandra.yaml, je l'utilise tous les paramètres par défaut, sauf cluster_name, initial_tokenendpoint_snitch, listen_address, rpc_address, seeds et internode_compression. Ci-dessous je liste les champs d'adresse IP non-je modifié:

endpoint_snitch: RackInferringSnitch 
rpc_address: 0.0.0.0 
seed_provider: 
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider 
     parameters: 
      - seeds: "node-1, node-2" 
internode_compression: none 

et tous les noeuds en utilisant les mêmes graines. Puis-je savoir où je pourrais mal faire dans la configuration? Et n'hésitez pas à me faire savoir si des informations supplémentaires sont nécessaires pour comprendre le problème.

Merci!

Répondre

2

Si vous démarrez avec Cassandra 1.2.8 vous devriez essayer d'utiliser la fonctionnalité vnodes. Au lieu de définir le initial_token, décommentez # num_tokens: 256 dans le cassandra.yaml et laissez initial_token en blanc, ou commentez-le. Ensuite, vous n'avez pas besoin de calculer les positions de jetons. Chaque nœud s'attribue aléatoirement 256 jetons, et votre cluster sera principalement équilibré (dans quelques%). L'utilisation de vnodes signifie également que vous n'avez pas à «rééquilibrer» votre cluster chaque fois que vous ajoutez ou supprimez des nœuds.

Voir ce billet de blog pour une description complète de vnodes et comment ils fonctionnent:
http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2

-1

Vous devez fournir un replication_factor lors de la création d'un keyspace:

CREATE KEYSPACE demodb WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 3};

Si vous utilisez DESCRIBE KEYSPACE x dans cqlsh vous verrez ce que replication_factor est actuellement fixé pour votre keyspace (je suppose que la réponse est 1).

Plus de détails here

+1

Mais même lorsque le facteur de réplication est 1, si les données dans un keyspace être répartis en plusieurs nœuds? – keelar

+0

no..pour le facteur de réplication 1 aucune réplication de données n'a lieu dans un centre de données – Nipun

2

Votre mission jeton est le problème ici. Un jeton assigné est utilisé pour déterminer la position du nœud dans l'anneau et la plage de données qu'il stocke. Lorsque vous générez des jetons, l'objectif est d'utiliser toute la plage de 0 à (2^127 - 1). Les jetons ne sont pas id comme avec le cluster mysql où vous devez les incrémenter séquentiellement.

Il existe un tool on git qui peut vous aider à calculer les jetons en fonction de la taille de votre cluster.

Lisez this article pour mieux comprendre les jetons. Et si vous voulez comprendre la signification des nombres qui sont générés check this article out.

+0

Merci beaucoup, j'espère que je peux marquer plusieurs réponses comme acceptées! – keelar

Questions connexes