2012-01-12 5 views
6

J'essaie de comprendre les affirmations selon lesquelles Cassandra évolue linéairement avec le nombre de nœuds. Dans un rapide coup d'œil sur le net, je n'ai pas vu beaucoup de traitement de ce sujet. Il y a sûrement des éléments de traitement en série dans Cassandra qui doivent limiter la vitesse acquise lorsque N augmente. Toute pensée, pointeur ou lien sur ce sujet serait apprécié.Quand est-ce que Cassandra a frappé la loi d'Amdahl?

Modifier pour donner une perspective:
Je travaille sur un projet qui a actuellement une demande pour une infrastructure Cassandra de plus de 1000 nœuds. Je ne suis pas venu avec cette spécification. Je me suis proposé de réduire N à une valeur comprise entre 200 et 500, chaque nœud étant au moins deux fois plus rapide pour le calcul en série. Ceci est facile à réaliser sans pénalité de coût par nœud en apportant de simples modifications à la configuration du serveur.

+0

"Certes, il existe des éléments de traitement en série" - pourquoi êtes-vous si sûr? – fennec

+0

http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html – Schildmeijer

+1

@fennec: Parce que très peu de problèmes sont 100% parallélisables –

Répondre

7

mise à l'échelle de Cassandra est mieux décrit en termes de Gustafson's law, plutôt que Amdahl's law. Gustafson mise à l'échelle regarde combien plus de données vous pouvez traiter que le nombre de nœuds augmente. C'est-à-dire que si vous avez N fois plus de noeuds, vous pouvez traiter un ensemble de données N fois plus grand dans le même laps de temps.

Cela est possible car Cassandra utilise très peu de coordination à l'échelle du cluster, à l'exception des modifications de schéma et d'anneau. La plupart des opérations impliquent uniquement un nombre de nœuds égal au facteur de réplication, qui reste constant au fur et à mesure que l'ensemble de données augmente, d'où une réduction presque linéaire. En revanche, Amdahl mise à l'échelle regarde combien plus rapide vous pouvez traiter un ensemble de données fixe que le nombre de nœuds augmente. Autrement dit, si vous avez N fois plus de noeuds, pouvez-vous traiter le même ensemble de données N fois plus rapidement? De toute évidence, à un certain point, vous atteignez une limite où l'ajout de plusieurs noeuds ne rend pas vos demandes plus rapides, car il y a un minimum de temps nécessaire pour traiter une demande. Cassandra n'est pas linéaire ici.

Dans votre cas, il semble que vous demandiez s'il est préférable d'avoir 1 000 nœuds lents ou 200 nœuds rapides. Quelle est la taille de votre jeu de données? Cela dépend de votre charge de travail, mais la recommandation habituelle est que la taille optimale des nœuds est d'environ 1 To de données chacun, en s'assurant d'avoir suffisamment de RAM et de CPU pour correspondre (voir cassandra node limitations). 1 000 semble beaucoup trop, sauf si vous avez des pétaoctets de données.

Questions connexes