2016-11-02 1 views
3

Je suis en train de comprendre ce que les différentes mesures que Spark sorties en streaming signifient et je suis un peu confus, quelle est la différence entre le temps de traitement , total Délai et traitement Délai du dernier lot?Spark en streaming temps de traitement vs total Délai vs Délai de traitement

J'ai regardé le guide Streaming Spark qui mentionne le temps de traitement comme indicateur clé pour déterminer si le système est en retard, mais d'autres endroits tels que "Spark Pro Streaming: Le streaming Zen Analytics en temps réel En utilisant Apache Spark "parler de l'utilisation de Total Delay et Délai de traitement. Je n'ai trouvé aucune documentation répertoriant toutes les métriques produites par Spark Streaming avec une explication de chacune d'elles.

Je serais reconnaissant si quelqu'un peut décrire ce que chacun de ces trois indicateurs signifie ou me diriger vers des ressources qui peuvent m'aider à le comprendre.

Répondre

6

Décompressons chaque métrique. Pour cela, nous allons définir une application de diffusion en continu de base qui lit un lot à une donnée intervalles de 4 secondes d'une source quelconque, et calcule le nombre de mots classique:

inputDStream.flatMap(line => line.split(" ")) 
      .map(word => (word, 1)) 
      .reduceByKey(_ + _) 
      .saveAsTextFile("hdfs://...") 
  • temps de traitement: Le temps qu'il faut pour calculer un lot donné pour tous ses travaux, de bout en bout. Dans notre cas, cela signifie un seul travail qui commence à flatMap et se termine à saveAsTextFile, et suppose comme condition préalable que le travail a été soumis.

  • Délai de planification: temps nécessaire au planificateur Spark Streaming pour soumettre les travaux du lot. Comment est-ce calculé? Comme nous l'avons dit, notre lot lit toutes les 4 secondes depuis la source. Supposons maintenant qu'un lot donné a pris 8 secondes à calculer. Cela signifie que nous sommes maintenant à 8 - 4 = 4 secondes, ce qui rend le délai de planification de 4 secondes.

  • Retard total: Ceci est Scheduling Delay + Processing Time. En suivant le même exemple, si nous avons 4 secondes de retard, ce qui signifie que notre délai d'ordonnancement est de 4 secondes, et que le lot suivant a pris 8 secondes de plus pour calculer, cela signifie que le délai total est maintenant de 0 secondes.

Un exemple en direct à partir d'un travail de streaming d'application:

Streaming application

On voit que:

  • Le travail de fond a pris 11 secondes pour traiter. Donc, maintenant le prochain retard de planification des lots est 11 - 4 = 7 secondes.
  • Si nous regardons la deuxième ligne à partir du bas, nous voyons que le délai de planification + temps de traitement = retard total, dans ce cas (arrondi 0,9 à 1) 7 + 1 = 8.
+1

Merci pour la réponse exhaustive, exactement ce que je cherchais. – Zak

+0

@Zak Bienvenue.Content que cela ait aidé. –

+0

@Yuval Existe-t-il un moyen d'obtenir les statistiques comme, la mémoire totale utilisée par l'application jusqu'à présent, non. des conteneurs utilisés etc, pour que je puisse comparer le streaming d'étincelles avec d'autres outils de traitement en temps réel – JSR29