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

Talend Data Fabric Guide de prise en main

EnrichVersion
6.1
EnrichProdName
Talend Data Fabric
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

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 comment le Job doit être exécuté 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 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électionnez 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.

    • Cochez la case Set memory pour allouer des volumes de mémoire aux calculs Map et Reduce et au service ApplicationMaster de YARN.

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

    • 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 complètement qualifié du sérialiseur à utiliser.

    • Yarn resource allocation : sélectionnez comment vous souhaitez que Yarn alloue des ressources parmi les exécuteurs.

      • Auto : laissez Yarn gérer l'allocation seul.

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

  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. Ajoutez toute propriété Spark à utiliser pour écraser la propriété équivalente utilisée par le Studio.

    Si vous souhaitez que les logs de l'application Spark de ce Job soient persistants dans le système de fichiers, ajoutez les propriétés relatives dans la table Advanced properties. Par exemple, les propriétés à configurer pour le mode Yarn client sont :

    • spark.yarn.historyServer.address

    • spark.eventLog.enabled

    • spark.eventLog.dir

    La valeur de la propriété spark.eventlog.enabled property doit être true. Pour les valeurs des deux autres propriétés, contactez l'administrateur du cluster Spark à utiliser.

    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.