Personnaliser Spark pour les Jobs Apache Spark Streaming - 7.3

Spark Streaming

EnrichVersion
Cloud
7.3
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Open Studio for Big Data
Talend Real-Time Big Data Platform
EnrichPlatform
Studio Talend
task
Création et développement > Création de Jobs > Frameworks de Jobs > Spark Streaming

Vous pouvez définir les paramètres de personnalisation dans l'onglet Spark configuration de la vue Run de votre Job Spark pour que le Job soit plus performant, si les valeurs par défaut de ces paramètres ne produisent pas de performances suffisantes.

De manière générale, Spark réalise de meilleures performances avec une petite quantité de grandes tâches qu'avec une grande quantité de petites tâches.

Les informations présentes dans cette section s'appliquent uniquement à Talend Real-Time Big Data Platform et à Talend Data Fabric.

Procédure

  1. Cochez la case Set Tuning properties pour optimiser l'allocation des ressources à utiliser pour exécuter le Job. Ces propriétés ne sont pas obligatoires pour que le Job s'exécute correctement, mais elles sont utiles lorsque Spark est congestionné par des problèmes de ressources dans le cluster, comme le processeur, la bande passante ou la mémoire.
  2. Calculez l'allocation initiale des ressources avant de débuter la personnalisation.
    Voici une formule générique pour ce calcul :
    • Nombre d'exécuteurs = (Total de cœurs du cluster) / 2

    • Nombre de cœurs par exécuteur = 2

    • Mémoire par exécuteur = (Jusqu'à la mémoire complète du cluster) / (Nombre d'exécuteurs)

  3. Définissez chaque paramètre et si nécessaire, modifiez-les jusqu'à ce que vous obteniez des performances satisfaisantes.

    mode Spark Standalone

    • Driver memory et Driver core : saisissez la taille de la mémoire et le nombre de cœurs à allouer au pilote du Job courant.

    • Executor memory : saisissez la taille de la mémoire à allouer à chaque exécuteur Spark.

    • Core per executor : cochez cette case et, dans le champ affiché, saisissez le nombre de cœurs à utiliser par exécuteur. Si vous laissez cette case décochée, l'allocation définie par défaut par Spark est utilisée. Par exemple, tous les cœurs disponibles sont utilisés par un exécuteur en mode Standalone.

    • Set Web UI port : si vous devez modifier le port par défaut de l'UI Web de Spark, cochez cette case et saisissez le numéro du port à utiliser.

    • Broadcast factory : sélectionnez l'implémentation du broadcast à utiliser pour mettre les variables en cache sur chaque machine de Worker.

    • Customize Spark serializer : si vous devez importer un sérialiseur Spark externe, cochez cette case et, dans le champ qui s'affiche, saisissez le nom de la classe entièrement qualifié du sérialiseur à utiliser.

    • Activate backpressure : cochez cette case pour activer la fonctionnalité Backpressure de Spark. Cette fonctionnalité est disponible à partir de la version 1.5 de Spark. Une fois activée, Spark trouve automatiquement le taux de réception optimal et adapte dynamiquement ce taux en fonction des retards d'ordonnancement et des temps de traitement batch, afin de recevoir les données au rythme auquel il peut les traiter.

    mode Spark Yarn client

    • Set application master tuning properties : cochez cette case et, dans les champs qui s'affichent, saisissez le montant de mémoire et le nombre de processeurs à allouer au service ApplicationMaster de votre cluster.

      Si vous souhaitez utiliser l'allocation par défaut de votre cluster, laissez cette case décochée.

    • Executor memory : saisissez la taille de la mémoire à allouer à chaque exécuteur Spark.

    • Set executor memory overhead : cochez cette case et, dans le champ qui s'affiche, saisissez le montant de mémoire hors tas (off-heap) en Mo à allouer pour chaque exécuteur. Il s'agit de la propriété spark.yarn.executor.memoryOverhead.

    • Core per executor : cochez cette case et, dans le champ affiché, saisissez le nombre de cœurs à utiliser par exécuteur. Si vous laissez cette case décochée, l'allocation définie par défaut par Spark est utilisée. Par exemple, tous les cœurs disponibles sont utilisés par un exécuteur en mode Standalone.

    • Yarn resource allocation : sélectionnez la manière dont vous souhaitez que Yarn alloue des ressources parmi les exécuteurs.
      • Auto : vous laissez Yarn utiliser son nombre d'exécuteurs par défaut. Le nombre d’exécuteurs par défaut est 2.

      • Fixed : vous devez saisir le nombre d'exécuteurs à utiliser dans le champ Num executors qui s'affiche.

      • Dynamic : Yarn adapte le nombre d'exécuteurs à la charge de travail. Vous devez définir l'échelle de cette allocation dynamique en définissant le nombre initial d'exécuteurs à exécuter dans le champ Initial executors, le nombre le plus faible d'exécuteurs dans le champ Min executors et le plus grand nombre d'exécuteurs dans le champ Max executors.

    • Set Web UI port : si vous devez modifier le port par défaut de l'UI Web de Spark, cochez cette case et saisissez le numéro du port à utiliser.

    • Broadcast factory : sélectionnez l'implémentation du broadcast à utiliser pour mettre les variables en cache sur chaque machine de Worker.

    • Customize Spark serializer : si vous devez importer un sérialiseur Spark externe, cochez cette case et, dans le champ qui s'affiche, saisissez le nom de la classe entièrement qualifié du sérialiseur à utiliser.

    • Activate backpressure : cochez cette case pour activer la fonctionnalité Backpressure de Spark. Cette fonctionnalité est disponible à partir de la version 1.5 de Spark. Une fois activée, Spark trouve automatiquement le taux de réception optimal et adapte dynamiquement ce taux en fonction des retards d'ordonnancement et des temps de traitement batch, afin de recevoir les données au rythme auquel il peut les traiter.

    mode Spark Yarn cluster

    • Driver memory et Driver core : saisissez la taille de la mémoire et le nombre de cœurs à allouer au pilote du Job courant.

    • Executor memory : saisissez la taille de la mémoire à allouer à chaque exécuteur Spark.

    • Set executor memory overhead : cochez cette case et, dans le champ qui s'affiche, saisissez le montant de mémoire hors tas (off-heap) en Mo à allouer pour chaque exécuteur. Il s'agit de la propriété spark.yarn.executor.memoryOverhead.

    • Core per executor : cochez cette case et, dans le champ affiché, saisissez le nombre de cœurs à utiliser par exécuteur. Si vous laissez cette case décochée, l'allocation définie par défaut par Spark est utilisée. Par exemple, tous les cœurs disponibles sont utilisés par un exécuteur en mode Standalone.

    • Yarn resource allocation : sélectionnez la manière dont vous souhaitez que Yarn alloue des ressources parmi les exécuteurs.
      • Auto : vous laissez Yarn utiliser son nombre d'exécuteurs par défaut. Le nombre d’exécuteurs par défaut est 2.

      • Fixed : vous devez saisir le nombre d'exécuteurs à utiliser dans le champ Num executors qui s'affiche.

      • Dynamic : Yarn adapte le nombre d'exécuteurs à la charge de travail. Vous devez définir l'échelle de cette allocation dynamique en définissant le nombre initial d'exécuteurs à exécuter dans le champ Initial executors, le nombre le plus faible d'exécuteurs dans le champ Min executors et le plus grand nombre d'exécuteurs dans le champ Max executors.

    • Set Web UI port : si vous devez modifier le port par défaut de l'UI Web de Spark, cochez cette case et saisissez le numéro du port à utiliser.

    • Broadcast factory : sélectionnez l'implémentation du broadcast à utiliser pour mettre les variables en cache sur chaque machine de Worker.

    • Customize Spark serializer : si vous devez importer un sérialiseur Spark externe, cochez cette case et, dans le champ qui s'affiche, saisissez le nom de la classe entièrement qualifié du sérialiseur à utiliser.

    • Activate backpressure : cochez cette case pour activer la fonctionnalité Backpressure de Spark. Cette fonctionnalité est disponible à partir de la version 1.5 de Spark. Une fois activée, Spark trouve automatiquement le taux de réception optimal et adapte dynamiquement ce taux en fonction des retards d'ordonnancement et des temps de traitement batch, afin de recevoir les données au rythme auquel il peut les traiter.