2012-01-12 10 views
6

Estoy tratando de entender las afirmaciones de que Cassandra escala linealmente con la cantidad de nodos. En una rápida mirada alrededor de la red, no he visto mucho de un tratamiento de este tema. Seguramente hay elementos de procesamiento serial en Cassandra que deben limitar la velocidad ganada a medida que N aumenta. Cualquier pensamiento, punteros o enlaces sobre este tema sería apreciado.¿Cuándo Cassandra golpea la ley de Amdahl?

Editar para proporcionar perspectiva:
Estoy trabajando en un proyecto que tiene una solicitud actual para una infraestructura Cassandra de más de 1.000 nodos. No vine con esta especificación. Me encuentro proponiendo que N se reduzca a un rango entre 200 y 500, siendo cada nodo al menos dos veces más rápido para el cómputo en serie. Esto es fácil de lograr sin una penalización de costo por nodo al realizar cambios simples en la configuración del servidor.

+0

"Seguramente hay elementos de procesamiento en serie": ¿por qué estás tan seguro? – fennec

+0

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

+1

@fennec: Porque muy pocos problemas son 100% paralelizables –

Respuesta

7

escala de Cassandra se describe mejor en términos de Gustafson's law, en lugar de Amdahl's law. La escala de Gustafson mira cuánto más datos puede procesar a medida que aumenta el número de nodos. Es decir, si tiene N veces más nodos, puede procesar un conjunto de datos N veces más grande en la misma cantidad de tiempo.

Esto es posible porque Cassandra usa muy poca coordinación de todo el grupo, a excepción de los cambios de esquema y anillo. La mayoría de las operaciones solo involucran una cantidad de nodos igual al factor de replicación, que se mantiene constante a medida que el conjunto de datos crece, por lo tanto, se reduce casi linealmente.

Por el contrario, la escala de Amdahl se ve en cuánto más rápido puede procesar un conjunto de datos fijo a medida que aumenta el número de nodos. Es decir, si tiene N veces más nodos, ¿puede procesar el mismo conjunto de datos N veces más rápido?

Claramente, en algún momento llega a un límite donde agregar más nodos no hace que sus solicitudes sean más rápidas, porque hay una cantidad mínima de tiempo necesaria para atender una solicitud. Cassandra no es lineal aquí.

En su caso, parece que está preguntando si es mejor tener 1.000 nodos lentos o 200 rápidos. ¿Qué tan grande es tu conjunto de datos? Depende de su carga de trabajo, pero la recomendación habitual es que el tamaño óptimo de los nodos sea de alrededor de 1TB de datos cada uno, asegurándose de que tenga suficiente RAM y CPU para que coincida (consulte cassandra node limitations). 1,000 suena como demasiados, a menos que tenga petabytes de datos.

Cuestiones relacionadas