11
votes

Comment trouver l'espace total occupé par un keyspace de Cassandra?

J'essaie de trouver la taille physique totale occupée par Cassandra Keyspace.

J'ai un générateur de msg qui décharge de nombreux messages à Cassandra. Je souhaite trouver la taille physique totale des messages dans la table Cassandra.

Lorsque je fais du -h / mnt / data / keyspace Linux ne dit que 12 Ko. Je suis sûr que la taille de données est beaucoup plus grande que cela. Le reste des données doit être dans Memtables ou devrait être dans Compaction .

Comment trouver l'espace total occupé à Cassandra pour ce keyspace?

J'ai essayé le xxx

mais ça me donne seulement pour ce nœud particulier. Et aussi les octets sont présents dans les mémoires. En fait, je souhaite la taille totale des espaces clés qui sont écrits sur un disque sur tous les nœuds du cluster. Y a-t-il une commande de trouver cela?

Merci pour l'aide.


6 commentaires

Vous pouvez du -h dans votre répertoire de données de Keyspace autour de votre cluster et d'ajouter. Il peut également y avoir une taille ststable Mbean dans JMX, mais je pense que c'est par table, pas de clavier.


Du -h n'inclura pas la taille du mémoires mémorables. Comment s'assurer que le compactage en cours soit complet?


Je pensais que vous avez dit que vous vouliez avoir la taille des claviers comme ils sont écrits sur le disque.


Vos memtables seront toujours


J'ai un générateur MSG qui décharge beaucoup de message à Cassandra. Je souhaite trouver la taille physique totale des messages dans la table Cassandra. Lorsque je fais du TU -H / MNT / DATA / KEYSPACE, il ne dit que 12 Ko où je suis sûr que la taille des données est beaucoup plus que cela. Donc, les données réelles sont soit obsolètes, soit dans le compactage. Comment trouver l'espace total occupé à Cassandra pour ce keyspace? Merci pour l'aide.


D'accord, j'ai mis à jour votre question et répondit ci-dessous, j'espère que cela aide.


3 Réponses :


7
votes

Qu'est-ce que le compactage?

Les stsables sont immuables - une fois qu'un mémote est rincé sur le disque, il reste insonchéé jusqu'à ce qu'il soit supprimé (expiré) ou compacté. Le compactage est le processus de combinaison des stsables ensemble. Ceci est important lorsque votre charge de travail est une mise à jour lourde et que vous pouvez avoir plusieurs instances d'une ligne CQL stockée dans vos SSTABLES (voir SSTABLES par lecture dans NODETOOL CFHistograms ). Lorsque vous allez lire cette ligne, vous devrez peut-être numériser sur plusieurs SSTABLES pour rechercher la dernière version des données (en dernier WINS WINS). Lorsque nous compacts, nous pouvons occuper un espace supplémentaire sur le disque (notamment le compactage à plusieurs niveaux qui peut prendre jusqu'à présent, il s'agit d'un maximum théorique - 50% de votre taille de données lors du compactage) afin qu'il soit important de garder un espace disque libre. Cependant, le compactage ne prendra pas des données à l'écart de votre annuaire de Keyspace. Ce n'est pas l'endroit où vos données sont.

alors où mes données sont-elles allées?

Vous avez raison dans votre suspicion que des données qui n'ont pas encore été rinçues sur le disque doivent être assises dans des mémoires. Ces données le rendront sur le disque dès que votre comité de BiLog remplit (par défaut 1Go en 2.0 ou 8 Go en 2.1) ou dès que vos mémoires deviennent trop gros - MemTable_total_space_in_mb.

Si vous souhaitez voir vos données dans SSTABLES, vous pouvez le rincer manuellement:

NODETOOL FLUSH

et vos memtables seront déposés dans votre répertoire KS sous forme de SSTABLES. Ou simplement être patient et attendez que vous appuyez sur les seuils de comité ou de mémothèque.

Mais Cassandra n'écrit pas durable?

Oui, vos données mémoires sont également stockées dans le COMTLOG. Si votre machine perd la puissance, etc., les données qui ont été écrites sont toujours persistées au disque et les données de validation de validation seront rejouées au démarrage!


1 commentaires

Cela ne semble pas répondre à la question «Je souhaite réellement la taille totale des espaces clés qui sont réellement écrits sur un disque sur tous les nœuds du cluster. Y a-t-il une commande de trouver cela?



6
votes

J'utilise Statut de NODETOOL . La valeur de la colonne de charge est à peu près la même que la valeur que je reçois à l'aide de df -h (Mes installations Cassandra sont sur différentes partitions que le système.


1 commentaires

AFAIK, Statut de NODETOOL ne prend pas de argument mais affiche l'état de l'ensemble du cluster.



0
votes

Vous pouvez obtenir les statistiques de la famille de colonnes, filtrer pour espace utilisé et somme les numéros:

nodetool cfstats <keyspace> | grep 'Space used (total), bytes' | awk -F ": " '{s+=$2}END{print s}'


1 commentaires

Utilisez numfmt ou awk pour convertir les octets à la lecture humaine (c.-à-d. kib, mib, etc.): awk '{divisé ("B KIB MIB GIB TIB PIB" , v); s = 1; tandis que (1 $> 1024) {$ 1 / = 1024; S ++} printf "% .2f% s", 1 $, V [S]} '