2016-08-30 1 views
1

J'ai un cluster avec 11 nœuds, 9 étant des esclaves et 2 maîtres, le même que dans my previous question. J'exécute le benchmark TestDFSIO sur ce cluster, qui utilise CDH 5.8.0.Comment calculer le débit du banc d'essai TestDFSIO sur le cluster hadoop

Je reçois la sortie ci-dessous du résultat TestDFSIO. Est-ce le débit? ou ai-je besoin de calculer le débit à partir de cela, comme le nombre de fichiers multiplié par le résultat testDFSIO througput ou autre chose?

S'il vous plaît laissez-moi savoir comment obtenir le débit de l'ensemble du cluster.

----- TestDFSIO ----- : write 
      Date & time: Mon Aug 29 07:28:01 MDT 2016 
     Number of files: 10000 
Total MBytes processed: 8000000.0 
    Throughput mb/sec: 50.75090177850001 
Average IO rate mb/sec: 85.83160400390625 
IO rate std deviation: 82.41435666074283 
    Test exec time sec: 3149.755 

Répondre

5

En bref (estimation approximative):

Total throughput [mb/sec] = total MBytes processed/test exec time 

donc ~ 2.5GB dans votre cas.

Ou, pour obtenir des résultats plus précis, savoir quel est le nombre de créneaux cartographiques disponibles sur votre cluster (VCores au total de la console de fil fera) et essayer celui-ci:

Total throughput mb/sec = min(nrFiles, VCores total - 1) * Throughput mb/sec 

Mais je recommander de répéter ce test avec des paramètres légèrement différents en raison de très haut IO taux std écart résultat (82.41435666074283).

Vous définissez le nombre de fichiers à 10k. Je suppose que le cluster décrit n'a pas de fentes de carte 10k disponibles. Maintenant, parce que TestDFSIO s'exécute avec une carte par fichier, il faudra plus d'une onde MapReduce pour terminer le test. Ceci est inutile. De plus, la dernière vague fonctionne généralement avec moins de cartes que les vagues précédentes. Moins de cartes fonctionnant en même temps génèrera un meilleur débit individuel et affectera la précision. Exemple: TestDFSIO single task throughput

Il est donc préférable de définir le nombre de tâches sur un niveau inférieur. Le nombre total de pilotes dans les datanodes est un bon point de départ. Regardez le graphique suivant: TestDFSIO total throughput

J'ai exécuté TestDFSIO plusieurs fois avec différentes valeurs de paramètre nrFiles. Vous pouvez voir qu'après avoir traversé un certain point (saturation des disques dans ce cas) il n'y a pas grand-chose. Le débit total de ce cluster a été atteint à 2,3 Go/s. Donc, pour répondre à votre question, vous pouvez obtenir le débit total du fonctionnement du cluster:

hdfs yarn jar hadoop-mapreduce-client-jobclient.jar TestDFSIO -write -nrFiles N -size 10GB 

Où:

  • N = 3/replication_factor * total_datanodes_drives
  • -size doit être réglé à quelque chose cela laissera le test tourner pendant au moins 10min

Le débit total pourrait être calculé en utilisant les valeurs des résultats, comme ceci:

Total throughput [mb/sec] = nrFiles * Throughput mb/sec 

choses à surveiller:

  • HDFS espace libre;) test va générer: réplication * Taille * nrFiles quantité de données.Ne dépassez pas 60% de votre capacité de cluster.
  • nrFiles doivent être inférieurs à fentes de carte disponible (nrFiles < = VCores au total - 1, sur fil)
+0

est pas "débit total mb/sec" fait Mo/sec et non mb/seconde? – Testing123