2016-07-13 4 views
1

J'ai un cluster Cassandra à 3 nœuds avec un facteur de réplication de 3. Cela signifie que toutes les données doivent être répliquées sur les 3 nœuds.Pourquoi la charge est-elle différente sur un cluster à 3 nœuds avec RF 3?

Ce qui suit est la sortie du statut de nodetool:

-- Address  Load  Tokens  Owns (effective) Host ID        Rack 
UN 192.168.0.1 27.66 GB 256   100.0%   2e89198f-bc7d-4efd-bf62-9759fd1d4acc RAC1 
UN 192.168.0.2 28.77 GB 256   100.0%   db5fd62d-3381-42fa-84b5-7cb12f3f946b RAC1 
UN 192.168.0.3 27.08 GB 256   100.0%   1ffb4798-44d4-458b-a4a8-a8898e0152a2 RAC1 

Ce graphique d'utilisation du disque au fil du temps sur tous les trois des noeuds:

Cassandra disk usage over time

Ma question est de savoir pourquoi ces tailles varient tellement? Est-ce que le compactage n'a pas fonctionné en même temps?

Répondre

3

Je dirais que plusieurs facteurs pourraient jouer un rôle ici.

Comme vous le constatez, le compactage ne s'exécutera pas en même temps, donc le nombre et le contenu des SSTables seront quelque peu différents sur chaque noeud.

Les memtables n'auront pas non plus été vidés dans SSTables en même temps, donc dès le début, chaque noeud aura des SSTables quelque peu différents.

Si vous utilisez la compression pour les SSTables, étant donné que leur contenu est quelque peu différent, la quantité d'espace économisée en compressant les données variera quelque peu. Et même si vous utilisez un facteur de réplication de trois, j'imagine que l'espace de stockage pour les données de plage non primaire est légèrement différent de l'espace de stockage pour les données de plage primaire et qu'il est probable que davantage de données de plage primaire mappé à un nœud ou l'autre. Donc, fondamentalement, à moins que chaque nœud ne voit exactement la même séquence de messages exactement au même moment, ils n'auront pas exactement la même taille de données.