2011-09-16 6 views
3

Lorsque vous utilisez OrderPreservingPartitioner avec une clé de famille de colonnes de dire un int représentant YYYYMMDD, vous obtiendrez des hotspots en écriture et la majeure partie de la charge touchera un/deux des nœuds d'un anneau de cassandra. Si vous utilisez le RandomPartitioner, Cassandra répartit-il la charge lorsque vous utilisez une touche qui ne change pas fréquemment (par exemple YYYYMMDD)?Choix du choix lors de l'utilisation de RandomPartitioner de Cassandra

En résumé, le RandomPartitioner répartit-il la charge sur un petit nombre discret de valeurs clés qui ne changent pas régulièrement?

Le choix de Partirioner est-il un paramètre d'espace de clé ou de niveau de cluster?

À noter: Donc si vous md5 20110902 vous obtenez 59b7841383176e942495550ecc801a9e. Si je charge de manière répétée les données avec la clé 20110902 (c'est-à-dire 59b7841383176e942495550ecc801a9e), cela ne va pas seulement allouer des données à un seul nœud auquel est affecté le 59b78413 .... Cassandra fait-il quelque chose d'autre pour répartir la charge?

Répondre

2

Non, le RandomPartitioner ne peut pas répartir la charge si vous continuez à réutiliser les mêmes clés. Il répartit la charge en affectant différentes clés à différents nœuds, mais les insertions sur la même clé iront toujours au (x) même (s) nœud (s).

Cassandra répartit la charge en fonction du facteur de réplication. Par exemple, si vous utilisez RF = 3, une clé peut continuer à fonctionner sur trois nœuds. Cependant, si vous continuez à utiliser la clé 20110902, ce seront les mêmes trois nœuds à chaque fois.

En bref, l'équilibrage de la charge se produit au niveau de la clé. Pour répartir la charge, vous devez choisir différentes clés.

2

Si vous utilisez RandomPartitioner, la charge sera répartie uniformément. Chaque clé sera md5ed, et la valeur du hash md5 décidera où vos données seront stockées.

La configuration est par cluster

+0

Donc, si vous md5 20110902 vous obtenez 59b7841383176e942495550ecc801a9e. Si je charge de manière répétée les données avec la clé 20110902 (c'est-à-dire 59b7841383176e942495550ecc801a9e), cela ne va pas seulement allouer des données à un seul nœud auquel est affecté le 59b78413 .... Cassandra fait-il quelque chose d'autre pour répartir la charge? –

+3

Les lignes sont partitionnées par clé, donc une grande rangée serait un anti-modèle. – jbellis