Prise en main d'un Job Streaming Spark - 6.3

Talend Real-time Big Data Platform Guide de prise en main

EnrichVersion
6.3
EnrichProdName
Talend Real-Time Big Data Platform
task
Administration et monitoring
Création et développement
Déploiement
Installation et mise à niveau
Qualité et préparation de données
EnrichPlatform
Studio Talend
Talend Administration Center
Talend CommandLine
Talend DQ Portal
Talend ESB
Talend Installer
Talend Runtime

Cette section vous explique comment créer un Job Spark Batch simple utilisant les composants fournis par la Palette spécifique à Spark Streaming.

Pour plus d'informations concernant l'architecture sur laquelle s'exécutent les Jobs Spark Streaming Talend et pour plus d'informations concernant les autres fonctionnalités avancées, consultez le Guide utilisateur du Studio Talend.

Créer un Job Spark Streaming

  1. Dans la vue Repository de la perspective Integration, cliquez-droit sur le nœud Job Designs et sélectionnez Create Big Data Streaming Job dans le menu contextuel.

    L'assistant [New Big Data Streaming Job] s'ouvre et vous permet de définir les propriétés principales du nouveau Job.

  2. Renseignez les propriétés du Job comme montré dans la capture d'écran.

    Les champs correspondent aux propriétés suivantes :

    Champ

    Description

    Name

    Saisissez un nom pour le nouveau Job.

    Un message s'affiche si vous saisissez des caractères interdits.

    Framework

    Sélectionnez le framework de calculs à utiliser pour créer le Job. Ce framework peut être, par exemple, MapReduce ou Spark.

    Purpose

    Saisissez toute information que vous jugerez utile concernant l'utilisation du Job.

    Description

    Si nécessaire, saisissez une description contenant toute information permettant de décrire ce que fait le Job et comment il le fait.

    Author

    Ce champ est en lecture seule car il reprend par défaut l'identifiant de l'utilisateur courant.

    Locker

    Ce champ est en lecture seule car il reprend par défaut l'identifiant de l'utilisateur ayant verrouillé le Job courant. Ce champ est vide lorsque vous créez un Job, et n'a des données que lorsque vous éditez les propriétés d'un Job existant.

    Version

    La version indiquée est en lecture seule. Vous pouvez cependant incrémenter manuellement la version à l'aide des boutons M et m.

    Status

    Sélectionnez dans la liste le statut du Job que vous créez.

    Path

    Sélectionnez le dossier dans lequel vous souhaitez créer le Job.

  3. Lorsque vous cliquez sur Finish, un espace de modélisation graphique vide s'ouvre et affiche le nom du Job Spark Streaming comme nom d'onglet.

Scénario : Écrire un flux de données Avro dans HDFS

Dans ce scénario, vous créez un Job Spark Streaming simple. Ce Job génère un flux de données d'exemple et écrit ce flux au format Avro dans un système HDFS donné.

Avant de reproduire ce scénario, assurez-vous d'avoir les droits d'accès et permissions appropriés afin d'accéder à la distribution Hadoop à utiliser. Procédez ensuite comme suit :

Relier les composants
  1. Dans l'espace de modélisation graphique du Job vide créé en suivant les étapes de la procédure décrite dans Créer un Job Spark Streaming, saisissez le nom des composants à utiliser et sélectionnez ces composants dans la liste qui s'affiche. Les composants à utiliser sont le tHDFSConfiguration, le tRowGenerator et le tAvroOutput.

    Le composant tHDFSConfiguration fournit les informations de connexion au système HDFS que le Job et les autres composants utilisent pour stocker les données temporaires, comme les fichiers .jar dépendants.

  2. Connectez le tRowGenerator au tAvroOutput à l'aide d'un lien Row > Main.

Configurer la connexion à Spark
  1. Cliquez sur le bouton Run pour ouvrir sa vue, puis cliquez sur l'onglet Spark Configuration pour afficher sa vue et configurer la connexion à Spark.

    Cette vue doit ressembler à l'image ci-dessous :

  2. Sélectionnez le type de cluster Spark auquel vous connecter.

    • Local : le Studio construit l'environnement Spark en lui-même au moment de l'exécution locale du Job dans le Studio. Avec ce mode, chaque processeur de la machine locale est utilisé comme Worker Spark pour effectuer les calculs. Ce mode requiert la configuration d'un minimum de paramètres dans la vue de configuration.

      Notez que cette machine locale est la machine sur laquelle s'exécute le Job. Le mode Local est le mode par défaut. Vous devez décocher cette case pour afficher la liste déroulante dans laquelle sélectionner les autres modes.

    • Standalone : le Studio se connecte à un cluster compatible Spark pour exécuter le Job depuis ce cluster.

    • Yarn client : le Studio exécute le pilote Spark pour orchestrer la manière dont sera exécuté le Job puis envoie l'orchestration au service Yarn d'un cluster Hadoop donné, afin que le Resource Manager de ce service Yarn demande des ressources pour l'exécution.

  3. Si vous utilisez le mode Yarn client, la liste Property type s'affiche et vous permet de sélectionner une connexion à Hadoop établie depuis le Repository, si vous avez créé cette connexion dans le Repository. Le Studio réutilise l'ensemble des informations de connexion pour ce Job.

    Pour plus d'informations concernant la création d'une connexion Hadoop dans le Repository, consultez le chapitre décrivant le nœud Hadoop cluster dans le Guide utilisateur du Studio Talend.

  4. Sélectionnez la version de la distribution Hadoop à utiliser avec Spark.

    • Si vous sélectionnez Microsoft HD Insight 3.4, vous devez configurer les connexions au service Livy, au service HD Insight et au service Windows Azure Storage du cluster, dans les zones qui s'affichent. Une vidéo de démonstration relative à la configuration d'une connexion à un cluster Microsoft HD Insight est disponible à l'adresse suivante : https://www.youtube.com/watch?v=A3QTT6VsNoM (en anglais).

      Le nom de l'hôte (Hostname) de Livy utilise la syntaxe suivante : nom_de_votre_cluster_spark.azurehdinsight.net. Pour plus d'informations concernant le service Livy utilisé par HD Insight, consultez Submit Spark jobs using Livy (en anglais).

    • Si vous sélectionnez Amazon EMR, consultez l'article suivant concernant la configuration de la connexion : Amazon EMR - Getting Started (en anglais) sur Talend Help Center (https://help.talend.com). Il est recommandé d'installer votre JobServer Talend dans le cluster EMR. Pour plus d'informations concernant ce JobServer, consultez le Guide d'installation Talend.

    Si vous ne trouvez pas votre distribution dans la liste déroulante, cela signifie que la distribution à laquelle vous souhaitez vous connecter n'est pas officiellement supportée par Talend. Dans ce cas, vous pouvez sélectionner Custom puis la version de Spark, dans la liste Spark version, du cluster auquel vous connecter. Cliquez sur le bouton pour afficher une boîte de dialogue dans laquelle vous pouvez :

    1. Sélectionner Import from existing version pour importer une distribution officiellement supportée comme base et ajouter d'autres fichiers .jar requis que la distribution de base ne fournit pas.

    2. Sélectionner Import from zip pour importer le .zip de configuration pour la distribution personnalisée à utiliser. Ce fichier .zip doit contenir les bibliothèques des différents éléments Hadoop/Spark et le fichier d'index de ces bibliothèques.

      Notez que les versions personnalisées ne sont pas officiellement supportées par Talend. Talend et sa communauté fournissent l'opportunité de vous connecter à des versions personnalisées depuis le Studio mais ne peuvent vous garantir la simplicité de la configuration de la version que vous choisissez. Il est recommandé de configurer ces connexions si vous avez une expérience suffisante de Hadoop et de Spark pour gérer par vous-mêmes les problèmes pouvant survenir.

  5. Configurez les informations de connexion aux principaux services du cluster à utiliser.

    Si vous utilisez le mode Yarn client, vous devez saisir les adresses des différents services dans les champs correspondants (si vous laissez décochée la case d'un service, lors de l'exécution, la configuration du paramètre en question du cluster Hadoop sera ignorée) :

    • Dans le champ Resource manager, saisissez l'adresse du service ResourceManager du cluster Hadoop à utiliser.

    • Cochez la case Set resourcemanager scheduler address et saisissez l'adresse de l'ordonnanceur (Scheduler) dans le champ qui apparaît.

    • Cochez la case Set jobhistory address et saisissez l'emplacement du serveur JobHistory du cluster Hadoop à utiliser. Cela permet de stocker les informations relatives aux métriques du Job courant sur le serveur JobHistory.

    • Cochez la case Set staging directory et saisissez le chemin d'accès au répertoire défini dans votre cluster Hadoop pour les fichiers temporaires créés par l'exécution de programmes. Ce répertoire se trouve sous la propriété yarn.app.mapreduce.am.staging-dir dans les fichiers de configuration, notamment les fichiers yarn-site.xml et mapred-site.xml de votre distribution.

    • Si vous accédez au cluster Hadoop s'exécutant avec la sécurité Kerberos, cochez cette case. Saisissez les noms des principaux Kerberos pour le service du ResourceManager et le service du JobHistory dans les champs qui s'affichent. Cela vous permet d'utiliser votre identifiant pour vous authentifier par rapport aux informations stockées dans Kerberos. Ces principaux se trouvent dans les fichiers de configuration de votre distribution. Par exemple, dans une distribution CDH4, le Principal du ResourceManager est configuré dans le fichier yarn-site.xml et celui du JobHistory dans le fichier mapred-site.xml.

      Si vous souhaitez utiliser un fichier Kerberos keytab pour vous identifier, cochez la case Use a keytab to authenticate. Un fichier keytab contient des paires de principaux et clés cryptées Kerberos. Vous devez saisir le principal à utiliser dans le champ Principal et le chemin d'accès au fichier keytab dans le champ Keytab.

      Notez que l'utilisateur qui exécute un Job utilisant un keytab n'est pas forcément celui désigné par le principal mais qu'il doit avoir le droit de lecture pour le fichier keytab utilisé. Par exemple, le nom d'utilisateur que vous utilisez pour exécuter le Job est user1 et le principal à utiliser est guest. Dans cette situation, assurez-vous que user1 a les droits de lecture pour le fichier keytab à utiliser.

    • Le champ User name est disponible lorsque vous n'utilisez pas Kerberos pour vous authentifier. Dans ce champ, saisissez votre identifiant pour cette distribution. Si vous laissez le champ vide, le nom de la machine hébergeant le Studio sera utilisé.

      Comme le Job doit charger dans HDFS des fichiers .jar du cluster à utiliser, vous devez vous assurer que le nom d'utilisateur est le même que celui défini dans le tHDFSConfiguration, le composant utilisé pour fournir à Spark les informations de connexion à HDFS.

    Si vous utilisez le mode Standalone, vous devez configurer les paramètres suivants :

    • Dans le champ Spark host, saisissez l'URI du Spark Master du cluster Hadoop utilisé.

    • Dans le champ Spark home, saisissez l'emplacement où l'exécutable Spark est installé dans le cluster Hadoop utilisé.

  6. Si vous devez exécuter le Job courant sous Windows, il est recommandé de spécifier où le programme winutils.exe à utiliser est stocké.

    • Si vous savez où se trouve le fichier winutils.exe et que vous souhaitez l'utiliser, cochez la case Define the Hadoop home directory et saisissez le répertoire dans lequel est stocké winutils.exe.

    • Sinon, laissez cette case décochée. Le Studio en génère un par lui-même et l'utilise pour le Job.

  7. Si le cluster Spark ne peut reconnaître la machine sur laquelle le Job est lancé, cochez la case Define the driver hostname or IP address et saisissez le nom de l'hôte ou l'adresse IP de cette machine. Cela permet au Master et à son Worker Spark de reconnaître la machine où se trouve le Job et donc son pilote.

    Notez que, dans cette situation, vous devez également ajouter le nom et l'adresse IP de cette machine dans son fichier host.

  8. Dans le champ Batch size, saisissez l'intervalle de temps à la fin duquel le Job revoit la source de données pour identifier les modifications et traite les nouveaux micro-batches.

  9. Si nécessaire, cochez la case Define a streaming timeout et, dans le champ qui s'affiche, saisissez la période de temps à la fin de laquelle le Job Streaming s'arrête automatiquement.

  10. Si vous souhaitez que le Job résiste aux échecs, cochez la case Activate checkpointing pour activer l'opération Spark de point de contrôle. Dans le champ qui s'affiche, saisissez le répertoire dans lequel Spark stocke, dans le système de fichiers du cluster, les données de contexte des calculs de Streaming, comme les métadonnées et les RDD générés par ce calcul.

    Pour plus d'informations concernant les points de contrôle Spark, consultez http://spark.apache.org/docs/1.3.0/streaming-programming-guide.html#checkpointing (en anglais).

  11. 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 :

    • 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 : 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 chaque 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'application 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.

    • 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, à savoir 2.

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

      • Dynamic : Yarn modifie le nombre d'exécuteurs afin de s'adapter à 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.

      Cette fonctionnalité est disponible en mode Yarn client uniquement.

    • 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.

  12. Dans le champ Spark "scratch" directory, saisissez le répertoire dans lequel le Studio stocke, dans le système local, les fichiers temporaires comme les fichiers .jar à transférer. Si vous lancez votre Job sous Windows, le disque par défaut est C:. Si vous laissez /tmp dans ce champ, le répertoire est C:/tmp.

  13. Si vous utilisez Hortonworks Data Platform V2.4.0 ou supérieure et que vous avez installé Atlas dans votre cluster, vous pouvez cocher la case Use Atlas, afin de permettre le lignage du Job au niveau des composants, notamment les modifications de schéma entre les composants.

    Lorsque cette option est activée, vous devez configurer les paramètres suivants :

    • Atlas URL : saisissez l'emplacement d'Atlas auquel se connecter. C'est généralement http://nom_de_votre_noeud_atlas:port

    • Dans les champs Username et Password, saisissez respectivement l'identifiant et le mot de passe d'authentification pour accéder à Atlas.

    • Set Atlas configuration folder : si votre cluster Atlas contient des propriétés personnalisées, comme le SSL ou le délai avant suspension de la lecture, cochez cette case et, dans le champ qui s'affiche, saisissez un chemin vers un répertoire de votre machine locale, puis placez le fichier atlas-application.properties de votre Atlas dans ce répertoire. Ainsi, votre Job peut utiliser ces propriétés personnalisées.

      Vous devez demander à l'administrateur de votre cluster ces fichiers de configuration. Pour plus d'informations concernant ce fichier, consultez la section Client Configs dans la page Atlas configuration (en anglais).

    • Die on error: cochez cette case pour arrêter l'exécution du Job lorsque des problèmes relatifs à Atlas surviennent, par exemple des problèmes de connexion à Atlas.

      Sinon, laissez cette case décochée pour que votre Job continue à s'exécuter.

    Si vous utilisez Hortonworks Data Platform V2.4, le Studio supporte uniquement Atlas 0.5. Si vous utilisez Hortonworks Data Platform.V2.5, le Studio supporte uniquement Atlas 0.7.

  14. Dans la table Advanced properties, ajoutez toute propriété Spark à utiliser pour écraser la propriété équivalente utilisée par le Studio.

    Les propriétés avancées requises par les différentes distributions Hadoop et leurs valeurs sont listées ci-dessous :

    • Hortonworks Data Platform V2.4 :

      • spark.yarn.am.extraJavaOptions : -Dhdp.version=2.4.0.0-169

      • spark.driver.extraJavaOptions : -Dhdp.version=2.4.0.0-169

      Vous devez également ajouter -Dhdp.version=2.4.0.0-169 dans la zone JVM settings, soit dans l'onglet Advanced settings de la vue Run, soit dans la vue Talend > Run/Debug de la fenêtre [Preferences]. La configuration de cet argument dans la fenêtre [Preferences] l'applique à tous les Jobs conçus dans le même Studio.

    • MapR V5.1 et V5.2 lorsque le cluster est utilisé avec la HBase ou les composants MapRDB :

      • spark.hadoop.yarn.application.classpath : saisissez la valeur de ce paramètre spécifique à votre cluster et ajoutez, s'il n'est pas renseigné, le classpath vers HBase pour vous assurer que le Job à utiliser trouve les classes et les packages dans le cluster.

        Par exemple, si la version HBase installée dans le cluster est 1.1.1, copiez-collez tous les chemins d'accès définis dans le paramètre spark.hadoop.yarn.application.classpath de votre cluster et ajoutez ensuite opt/mapr/hbase/hbase-1.1.1/lib/* et /opt/mapr/lib/* à ces chemins d'accès. Séparez les chemins d'accès par une virgule. Les chemins d'accès ajoutés indiquent les endroits où HBase est généralement installé dans le cluster MapR. Si votre HBase est installée autre part, contactez l'administrateur de votre cluster pour plus de détails et pour adapter ces chemins d'accès.

        Pour une explication détaillée relative à l'ajout de ce paramètre, consultez l'article Les Jobs HBase/MapR-DB ne peuvent pas être exécutés correctement avec MapR 5.1 ou 5.2 sur Talend Help Center.

    Pour plus d'informations concernant les propriétés Spark valides, consultez la documentation Spark à l'adresse https://spark.apache.org/docs/latest/configuration (en anglais).

Configurer le tHDFSConfiguration
  1. Double-cliquez sur le tHDFSConfiguration pour ouvrir sa vue Component.

  2. Dans la zone Version, sélectionnez la distribution Hadoop, ainsi que sa version, à laquelle vous connecter.

  3. Dans le champ NameNode URI, saisissez l'emplacement de la machine hébergeant le service du NameNode du cluster.

  4. Dans le champ Username, saisissez les informations d'authentification à utiliser pour vous connecter au système HDFS à utiliser. Notez que le nom d'utilisateur doit être le même qui celui saisi dans l'onglet Spark configuration.

Générer des données d'exemple
  1. Double-cliquez sur le tRowGenerator pour ouvrir sa vue RowGenerator Editor.

  2. Cliquez deux fois sur le bouton [+] pour ajouter deux colonnes, que vous nommez respectivement id et name, respectivement.

  3. Dans la colonne Functions, sélectionnez la fonction TalendString.getAsciiRandomString(int) pour id et TalendDataGenerator.getFirstName() pour name.

  4. Dans le champ Number of rows for RowGenerator, saisissez le nombre de lignes à créer à chaque génération. Dans cet exemple, saisissez 100.

  5. Cliquez sur OK pour valider ces modifications et acceptez la propagation proposée par la boîte de dialogue qui s'ouvre.

  6. Dans le champ Input repetition interval de la vue Basic settings, saisissez l'intervalle de temps (en millisecondes) à la fin duquel le tRowGenerator génère un ensemble de données, ici de 100 lignes. Dans cet exemple, saisissez 3000 millisecondes.

Écrire des données dans HDFS
  1. Double-cliquez sur le tAvroOutput pour ouvrir sa vue Component.

  2. Assurez-vous de cocher la case Define a storage configuration component.

  3. Dans le champ Folder, saisissez le chemin d'accès ou parcourez votre système jusqu'au dossier dans lequel vous souhaitez écrire les données.

  4. Dans la liste Action, sélectionnez l'opération à effectuer sur le dossier en question. Si le dossier existe déjà, sélectionnez Overwrite, sinon, sélectionnez Create.

Exécuter le Job

Appuyez sur la touche F6 pour exécuter le Job.

La zone des statistiques dans l'espace de modélisation graphique affiche la progression des ensembles de données générés, segmentés et comptés comme batchs.

Cela fait, vous pouvez examiner les résultats dans la console Web du système HDFS à utiliser.

Vous pouvez voir que le dossier basic_example- est continuellement créé. Cliquez pour ouvrir l'un de ces dossiers. Vous pouvez voir des fichiers Avro écrits par ce Job.

Notez que tous les dossiers basic_example- ne contiennent pas de données.