2012-01-12 11 views
6

Sto cercando di capire le affermazioni che Cassandra scala linearmente con il numero di nodi. In una rapida occhiata in giro per la rete non ho visto molto di un trattamento di questo argomento. Sicuramente ci sono elementi di elaborazione seriale in Cassandra che devono limitare la velocità acquisita con l'aumentare di N. Qualsiasi pensiero, puntatore o link su questo argomento sarebbe apprezzato.Quando Cassandra colpisce la legge di Amdahl?

Modifica per fornire prospettiva:
Sto lavorando a un progetto che ha una richiesta corrente per un'infrastruttura Cassandra con oltre 1.000 nodi. Non sono venuto con questa specifica. Mi ritrovo a proporre che N sia ridotto a un intervallo tra 200 e 500, con ogni nodo che è almeno due volte più veloce per il calcolo seriale. Questo è facile da ottenere senza una penalità di costo per nodo apportando semplici modifiche alla configurazione del server.

+0

"Sicuramente ci sono elementi di elaborazione seriale" - perché sei così sicuro? – fennec

+0

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

+1

@fennec: Perché pochissimi problemi sono parallelizzabili al 100% –

risposta

7

scalatura di Cassandra è meglio descritta in termini di Gustafson's law, anziché Amdahl's law. Il ridimensionamento di Gustafson guarda a quanti più dati è possibile elaborare man mano che il numero di nodi aumenta. Cioè, se hai N volte più nodi, puoi elaborare un set di dati N volte più grande nella stessa quantità di tempo.

Ciò è possibile perché Cassandra utilizza pochissima coordinazione a livello di cluster, ad eccezione delle modifiche allo schema e agli squilli. La maggior parte delle operazioni coinvolge solo un numero di nodi uguale al fattore di replicazione, che rimane costante all'aumentare del set di dati, quindi quasi lineare.

Al contrario, il ridimensionamento di Amdahl guarda a quanto più veloce è che è possibile elaborare un set di dati fisso con l'aumentare del numero di nodi. Cioè, se hai N volte più nodi, puoi elaborare lo stesso set di dati N volte più velocemente?

Chiaramente, ad un certo punto si raggiunge un limite in cui l'aggiunta di più nodi non rende le richieste più veloci, perché c'è una quantità minima di tempo necessaria per soddisfare una richiesta. Cassandra non è lineare qui.

Nel tuo caso, sembra che tu stia chiedendo se è meglio avere 1.000 nodi lenti o 200 veloci. Quanto è grande il tuo set di dati? Dipende dal carico di lavoro, ma la solita raccomandazione è che la dimensione ottimale dei nodi è di circa 1 TB di dati ciascuno, assicurandosi di avere abbastanza RAM e CPU per soddisfare (vedi cassandra node limitations). 1000 suona come troppi, a meno che non si abbiano petabyte di dati.

Problemi correlati