Personnaliser Spark pour les Jobs Apache Spark Batch - 7.1

Spark Batch

author
Talend Documentation Team
EnrichVersion
7.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Real-Time Big Data Platform
task
Création et développement > Création de Jobs > Frameworks de Jobs > Spark Batch
EnrichPlatform
Studio Talend

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 contenues dans cette section concernent uniquement les utilisateurs ayant souscrit à Talend Data Fabric ou à un produit Talend avec Big Data et ne sont pas applicables aux utilisateurs de Talend Open Studio for Big Data.

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.
    Le tableau suivant fournit la liste exhaustive des propriétés pour ajustement. Les propriétés sont disponibles dans l'onglet Spark configuration varient selon la distribution que vous utilisez.

    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.

    • Job progress polling rate (in ms) : si vous utilisez Spark en version 2.3 ou supérieure, saisissez l'intervalle de temps (en millisecondes) après lequel vous souhaitez que le Studio demande à Spark la progression de l'exécution de votre Job. Dans les versions antérieures à 2.3, Spark envoie automatiquement ces informations au Studio lorsqu'une mise à jour survient. La valeur par défaut de ce paramètre, 50 millisecondes, permet au Studio de reproduire plus ou moins le même scénario avec Spark à partir de la version 2.3.

      Si l'intervalle que vous paramétrez est trop long, il est possible que vous perdiez des informations concernant la progression. S'il est trop court, trop de requêtes peuvent être envoyées à Spark pour des informations de progression insignifiantes.

    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.

    • Job progress polling rate (in ms) : si vous utilisez Spark en version 2.3 ou supérieure, saisissez l'intervalle de temps (en millisecondes) après lequel vous souhaitez que le Studio demande à Spark la progression de l'exécution de votre Job. Dans les versions antérieures à 2.3, Spark envoie automatiquement ces informations au Studio lorsqu'une mise à jour survient. La valeur par défaut de ce paramètre, 50 millisecondes, permet au Studio de reproduire plus ou moins le même scénario avec Spark à partir de la version 2.3.

      Si l'intervalle que vous paramétrez est trop long, il est possible que vous perdiez des informations concernant la progression. S'il est trop court, trop de requêtes peuvent être envoyées à Spark pour des informations de progression insignifiantes.

    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.

    • Job progress polling rate (in ms) : si vous utilisez Spark en version 2.3 ou supérieure, saisissez l'intervalle de temps (en millisecondes) après lequel vous souhaitez que le Studio demande à Spark la progression de l'exécution de votre Job. Dans les versions antérieures à 2.3, Spark envoie automatiquement ces informations au Studio lorsqu'une mise à jour survient. La valeur par défaut de ce paramètre, 50 millisecondes, permet au Studio de reproduire plus ou moins le même scénario avec Spark à partir de la version 2.3.

      Si l'intervalle que vous paramétrez est trop long, il est possible que vous perdiez des informations concernant la progression. S'il est trop court, trop de requêtes peuvent être envoyées à Spark pour des informations de progression insignifiantes.