Talend et Apache Spark : introduction technique

Talend et Apache Spark : introduction technique

  • Petros Nomikos
    I have 3 years of experience with installation, configuration, and troubleshooting of Big Data platforms such as Cloudera, MapR, and HortonWorks. I joined Talend in 2014, and prior to Talend I held positions as manager of technical support, and project manager for data warehouse implementations. In my current role, I assist companies in understanding how to implement Talend in their Big Data Ecosystem.

Lorsque j'étais ingénieur du support technique chez Talend, avant de passer dans l'équipe Customer Success Architect, les clients m'interrogeaient souvent sur les fonctionnalités de Talend par rapport à Apache Spark. La première chose qui vient à l'esprit en parlant de Spark est la fameuse commande « submit », utilisée pour soumettre les jobs Spark. La question qui vient alors naturellement est celle de l'équivalence entre un job Spark Talend et une commande Spark submit. Dans cet article, nous allons aborder les différents modes Apache Spark existants et ceux utilisés par Talend, ainsi que le fonctionnement de Talend avec Apache Spark.

Introduction aux jobs Apache Spark

Apache Spark permet de soumettre deux types de jobs différents : Spark Batch et Spark Streaming. Spark Batch utilise un modèle de traitement par lots : un dataset est collecté sur une période donnée, puis envoyé à un moteur Spark pour être traité.

Spark Streaming, au contraire, travaille en mode streaming : les données sont envoyées à un moteur Spark élément par élément et sont traitées en temps réel. Talend est compatible avec ces deux types de jobs et vous permet de créer des jobs Spark pour chacun d'entre eux. Selon votre licence, Talend Studio vous proposera une option « Big Data Batch » pour créer des jobs Spark Batch et une option « Big Data Streaming » pour créer des jobs Spark Streaming.

Mieux connaître Talend et Apache Spark

Avant de poursuivre, je souhaite clarifier quelques concepts fondamentaux qui seront utilisés tout au long de cet article :

  • Pilote Spark : responsable de l'envoi de votre application au maître Spark, ainsi que de la création et de l'exécution de votre contexte Spark
  • Maître Spark : responsable de la demande de ressources à YARN, comme défini par le pilote Spark, et de la recherche des hôtes qui exécuteront le job
  • Exécuteur Spark : processus démarré sur les nœuds workers qui exécute votre soumission de job en mémoire ou sur disque

Pour commencer, voyons le fonctionnement des jobs Spark avec une commande Spark submit ou Talend. Tous les jobs Spark ont un pilote chargé de les définir et de les coordonner. Le pilote Spark, dans ce cas, définit la configuration qui sera utilisée par votre job, par exemple le maître Spark auquel se connecter ou la mémoire allouée aux exécuteurs Spark. Le fonctionnement de Talend est donc équivalent à une commande Spark submit, partant du postulat qu'un pilote Spark est toujours chargé de définir et de coordonner votre job Spark.

Lorsque vous effectuez une commande Spark submit depuis le cluster Hadoop, certaines des informations de configuration sont récupérées depuis les fichiers de configuration du cluster. Puisque Talend Studio ne réside pas toujours sur un cluster Hadoop, nous devons indiquer ces informations dans notre job Studio, afin qu'il sache quels paramètres il peut utiliser.

La définition des transformations de données ayant lieu dans le job Spark s'effectue dans Talend au moment de la compilation du job, comme dans une procédure Spark submit. Tout comme pour une commande Spark submit, Talend démarre le job comme défini par le pilote, bien que le job ne soit pas exécuté dans le pilote, mais sur des exécuteurs Spark au niveau du cluster. Une fois le job démarré, Talend le surveille en écoutant les événements survenant au niveau du cluster Hadoop. Il suit ainsi le déroulement du job comme le fait une commande Spark submit.

Si une commande Spark submit ou un job Talend est utilisé pour soumettre votre job à Spark, trois modes sont proposés selon la configuration de votre cluster Hadoop. Voici les trois différents modes tels que définis dans la documentation Spark (http://spark.apache.org/docs/latest/cluster-overview.html) :

1. Standalone : dans ce mode, le pilote Spark soumet le job à un maître Spark et des exécuteurs Spark sur le cluster traitent les jobs.

2. Mode client YARN : ici, les daemons workers Spark attribués à chaque job sont démarrés et arrêtés dans le framework YARN. Le pilote Spark tel que décrit ci-dessus est exécuté sur le même système que le job Talend.

3. Mode cluster YARN : le maître Spark et les exécuteurs Spark sont ici exécutés à l'intérieur du framework Spark. Ils démarrent et s'arrêtent avec le job. Dans ce cas, le pilote Spark s'exécute également au sein de YARN au niveau du cluster Hadoop.

Maintenant que nous avons défini les modes proposés par Spark, voyons ce que Talend offre. Voici les différents modes disponibles dans Talend :

1. Local : lorsque ce mode est sélectionné, le job est exécuté sur un framework Spark localement. Votre machine locale est utilisée comme maître Spark, ainsi que comme exécuteur Spark pour effectuer les transformations de données.

2. Standalone : dans ce mode, comme défini ci-dessus, Talend se connecte au maître Spark défini dans votre cluster Hadoop puis exécute le job.

3. Mode client YARN : comme défini ci-dessus, Talend Studio exécute le pilote Spark pour orchestrer votre job depuis son emplacement de démarrage, puis envoie l'orchestration au framework YARN pour l'exécution et l'allocation des ressources. C'est le mode disponible pour les distributions Hadoop telles que Hortonworks, Cloudera, MapR, Amazon EMR, etc.

4. Mode cluster YARN : ce mode est actuellement compatible uniquement avec HDInsight et Cloudera Altus dans Talend. Dans ce mode, comme expliqué ci-dessus, Talend exécute le pilote Spark dans YARN au niveau du cluster Hadoop.

Réponses aux trois principales questions relatives à Talend et Apache Spark :

  • Talend soumet-il toutes les bibliothèques et tous les fichiers nécessaires pour le job au maître Spark au même moment, ou certaines informations sont-elles toujours exécutées dans Studio ?

Réponse : Toutes les bibliothèques ne sont pas forcément envoyées au maître Spark en même temps. Il est toujours possible que les exécuteurs rappellent le pilote Spark pour qu'il envoie les bibliothèques nécessaires à un moment donné. Dans ce cas, l'exécution du pilote se poursuit pendant le traitement du job, afin d'attendre que le job se termine et transmette son état. Cependant, comme dans tout job Spark, il est possible qu'une partie du traitement soit effectuée du côté du pilote. C'est le cas par exemple si vous avez un composant tLogRow dans votre job, qui devra collecter toutes les informations depuis le cluster puis les imprimer dans la console, ou si vous utilisez les composants tCacheIn et tCacheOut, pour lesquels le pilote enregistre les métadonnées indiquant l'emplacement des fichiers dans la mémoire. Pour ces configurations, Talend Studio se comporte comme une commande Spark submit.

  • Si je souhaite créer un fichier non pas dans HDFS, mais localement dans Studio ou le serveur de jobs, sans indiquer de configuration de stockage, le fichier sera-t-il bien écrit ?

Réponse : Vous devez indiquer une configuration de stockage au job, pour assurer sa stabilité. Il est d'ailleurs préférable d'utiliser une seule configuration de stockage pour l'ensemble du job. Vous ne pouvez pas utiliser deux emplacements de stockage HDFS correspondant à deux clusters différents ou deux méthodes d'authentification différentes. Il est possible par contre d'utiliser HDFS et S3. Le job ne peut pas écrire dans le système de fichiers local car les nœuds workers Spark n'ont pas de visibilité sur le système de fichiers local du pilote. C'est également pour cette raison que le pilote Spark ouvre un serveur pour envoyer les bibliothèques au cluster. Pour contourner cette restriction, il faut écrire un fichier temporaire sur HDFS, puis lancer un job d'intégration de données utilisant tHDFSGet pour rapatrier ce fichier sur la machine locale. Ce comportement est similaire à celui d'une commande Spark submit.

  • Pourquoi l'onglet Environment (Environnement) de l'interface Web du maître Spark me dirige-t-il vers l'adresse IP de Studio ?

Réponse : Cet onglet doit toujours vous diriger vers l'adresse IP du pilote Spark. Si vous exécutez la commande Spark submit sur le cluster, vous ne remarquerez pas de redirection. Dans le cas contraire, vous serez redirigé. Talend Studio se comporte alors comme une commande Spark submit.

J'espère que cet article aura clarifié le fait que l'exécution de jobs sur Talend n'est pas différente d'une commande Spark submit. Talend vous permet de coder facilement avec Spark, d'écrire des jobs pour Spark Batch et Spark Streaming, ainsi que d'utiliser les jobs Spark que vous concevez pour Batch et Streaming. Essayez d'écrire vos propres jobs Spark avec Talend, et vous verrez à quel point il est facile d'exécuter des jobs avec votre cluster Hadoop ou Apache Spark en mode Standalone.

Participer aux discussions

0 Comments

Laisser un commentaire

Your email address will not be published. Required fields are marked *