2013-07-12 3 views
3

Est-ce que le nodetool repair courant sur mes nœuds de Cassandra les paralysera?Combien coûte une opération de "réparation de nodetool"?

Les Planet Cassandra FAQ notes (nous soulignons) que

Anti-Entropy réparation Node - Pour les données qui est lu pas fréquemment, ou de mettre à jour les données sur un nœud qui a été en panne pendant une période prolongée, le noeud Le processus de réparation (également appelé réparation anti-entropie) garantit la cohérence de toutes les données d'une réplique. La réparation des nœuds (à l'aide de l'utilitaire nodetool) doit être exécutée régulièrement dans le cadre des opérations régulières de maintenance des grappes.

C'est la seule référence que j'ai vu courir nodetool repair régulièrement. Le faire fonctionner régulièrement ne sera pas un problème si c'est bon marché, mais à quel point c'est cher? Fait-il l'équivalent de la cohérence-vérifié la lecture de chaque enregistrement sur le nœud? Ou est-ce plus intelligent que ça? La documentation mentionne l'utilisation des arbres Merkle, mais cela ne me donne aucune idée du coût de l'opération. Si vous avez 500 Go de données sur un nœud, et que ce nœud est effectivement cohérent avec les autres nœuds (la réparation est une opération non-op), sur la quantité de données lues par le disque (lecture de tous les 500 Go) prendrait quelques heures)? Et à propos de la quantité de données envoyées sur le réseau local (envoyer tous les 500 Go sur le réseau local pourrait prendre une autre heure ou plus).

Répondre

15

Certains cas d'utilisation dépendent plus des réparations régulières que d'autres. Si vous effectuez des suppressions inférieures à ConsistencyLevel.ALL, vous devez exécuter la réparation pour vous assurer que les colonnes supprimées ne reviennent pas à la vie. Si vous n'effectuez pas de suppressions, vous pouvez compter sur un transfert de message et lire la réparation pour maintenir la cohérence dans de nombreux cas. Si vous lisez et écrivez à des niveaux de cohérence faibles, ou avez régulièrement des temps d'arrêt ou de surcharge du serveur, vous voudrez probablement exécuter une réparation.

Qu'est-ce que la réparation n'est lu par toutes les données sur le nœud que vous exécutez sur (le cas échéant, avec l'option -PR (plage primaire), seules les plages pour lesquelles le noeud possède la plage primaire) et construire un arbre Merkle. Il envoie également un message à tous les noeuds qui stockent des réplicas de l'une de ces plages pour faire la même chose: ils ne liront que les données répliquées sur le noeud de réparation initial.

Pour construire un arbre de Merkle sur un nœud de 500 Go, il parcourra les 500 Go (en utilisant -pr, il sera plus ou moins un facteur de réplication inférieur). Cependant, les arbres Merkle sont de taille constante (quelques Mo), donc très peu est envoyé sur le réseau si les nœuds sont synchronisés. La meilleure façon d'exécuter les réparations planifiées est de lancer avec -pr sur chaque nœud à tour de rôle. Cela évite de réparer les mêmes données plusieurs fois. En outre, exécutez uniquement sur un nœud à la fois pour éviter de placer une charge supplémentaire sur votre cluster.

+1

Pouvez-vous élaborer sur la partie "colonnes supprimées qui reviennent à la vie"? Parlez-vous des colonnes supprimées qui continuent à apparaître pendant un petit laps de temps après la suppression, ou en disant que la "cohérence éventuelle" de Cassandra ne fonctionnera pas réellement si vous n'utilisez pas "ConsistencyLevel.ALL"? Ma compréhension est que la suppression devrait finalement se propager dans tout le cluster, même si vous utilisez 'ConsistencyLevel.ANY', car les changements finiront toujours par se propager. Est-ce incorrect? – aroth

+0

@aroth Avez-vous obtenu la réponse à la question ci-dessus? – Naresh

+0

@Naresh - Non, mais j'utilise depuis un certain temps des niveaux de consistance inférieurs dans la production et je n'ai pas observé de tels problèmes en pratique. Bien sûr, c'est anecdotique, avec une taille d'échantillon d'un, et ne veut pas dire que les mauvaises choses ne peuvent/ne vont pas arriver. Alors prenez-le avec un grain de sel. – aroth

Questions connexes