2016-03-11 6 views
0

J'essaie de comprendre comment je détermine les IOPS que mon application pilote afin que je puisse dimensionner nos composants d'infrastructure de cloud. Je comprends ce que sont les IOPS entre une base de données et la couche de stockage, mais je voudrais comprendre comment je calcule ce que mon application pilote. Voici quelques-unes de mes caractéristiques d'applications: 1) 90% d'écriture et 10% de lecture 2) Nous avons une application basée sur Java qui insère finalement dans une base de données HBase 3) Traiter environ 50 msg/sec où chaque message donne probablement 2 Inscriptions HBaseComment calculer mes applications iops utilisation

Voici ce dont je ne suis pas sûr: 1) La seule façon de calculer l'IOPS est-elle d'exécuter iostat ou quelque chose sur le serveur en cours de chargement? 2) Existe-t-il un moyen général de calculer ce qui est nécessaire à partir du volume de données/taille entrant et non sur l'unité de stockage réelle? 3) Y a-t-il une relation avec le nombre de transactions et le nombre d'octets dans chaque transaction (j'ai lu quelque part qu'un IO est habituellement 3K, la plupart des inserts ne contiennent pas autant d'informations, donc peu importe).

Toute aide serait grandement appréciée.

Répondre

0

Pas très familier avec l'Hbase. Mais à partir de la documentation, il utilise une structure de journal, ce qui signifie que les écritures seront des écritures séquentielles. Il a aussi des compactions, ce qui provoquera à la fois des lectures séquentielles et des écritures de multi-MB. Les requêtes de lecture provoqueront des lectures aléatoires sur la couche de stockage. Voici donc la réponse à vos questions:

  1. Pour autant que je sache, oui. La seule façon d'obtenir IOPS est d'utiliser iostat. Vous pouvez probablement obtenir des statistiques de compactage à partir du niveau de l'application. Mais il est difficile d'extraire les détails de niveau IOPS.

  2. La compression provoquera plus de stockage que la taille de données entière. Et si votre application est lourde en écriture (le compactage risque de ne pas rattraper la vitesse des insertions), la taille du volume de données réel sera beaucoup plus grande. Compte tenu des 50 msg/sec dans votre question, cela ne devrait pas être le cas. Je provisionnerai des disques doublant la taille du volume de données attendu par instance.

  3. Comme mentionné ci-dessus, Hbase est structuré en journal. Les écritures sont accumulées dans la mémoire et copiées sur le disque ensemble. Donc, peu importe la taille de chaque transaction.