Connexion

Connexion à votre compte

Identifiant
Mot de passe
Maintenir la connexion active sur ce site

Blog

Talend Big Data, Hadoop et Elasticsearch

Nombreux d'entre vous recheche une architecture Big Data tant le nombre d'acteurs et d'offres continue à s'ettoffer. Ainsi l'objectif de l'exercice décrit dans cet article est de tester le bon fonctionnement d'un ensemble d'outils appartenant au domaine Big Data.

Pour cela, nous avons choisi de nous intéresser à l'intégration du moteur de recherche Elasticsearch à Hadoop et d'utiliser Talend Big Data pour orchestrer le tout. Avec un tel ensemble il s'agit d'exploiter la puissance d'un moteur de recherche tel qu'Elasticsearch au sein d'une grille Hadoop qui conserve encore l'image d'un système peu interactif. Ce qui au passage est de moins en moins vrai avec le nouveau gestionnaire de ressource YARN.

Pour être en mesure de réaliser ces tests, nous avons donc utilisé le Studio Talend Big Data, la Sandbox d'Hortonworks et la librairie elasticsearch-hadoop (réalisée par les équipes d'ElasticSearch).

On verra à la fin de cet article que ces tests ont permis de faire ressortir un exemple d'architecture Big Data dans laquelle on réussit à trouver une interface de requêtage classique de type batch (avec Pig, Hive...) mais également une autre interface plus rapide et plus transverse à travers l'utilisation Elasticsearch.

 

Scenario

 

Nous avons fait un test très simple et très basique pour valider notre approche : 

  • Chargement d'un jeu de données sur Hadoop 
  • Indexation des données sur Elasticsearch
  • Requêtage des données (Pig/Elasticsearch)

 

Les Outils

 

Etant partenaire certifié, nous connaissons très bien les outils Talend et les utilisons dans beaucoup de nos projets. Notre choix s'est donc porté sur la version Big Data. Elle offre la possibilité de mettre rapidemment en place des traitements sur des environnements Big Data en s'affranchissant notamment de coder dans les nombreux langages et autres framework qui permet l'accès à ces plateformes. Par exemple, la version commerciale de Talend Big Data génère à partir du design de vos jobs du code Map Reduce.

Nous avons utilisé la version plateforme Big Data que nous avons à notre disposition. Cependant, l'exercice décrit dans cet article peut également être reproduit avec la version Communautaire de Talend Big Data.

Notre choix s'est porté sur la Sandbox d'Hortonworks car elle permet de disposer rapidemment d'un environnement Big Data Hadoop facilement utilisable pour des développements. Pour l'exercice, nous n'avons utilisé que quelques éléments présents dans la Sandbox à savoir HDFS pour le stockage des données, Pig pour le requêtage et enfin Hue qui nous a servi d'interface graphique

elasticsearch-hadoop est une librairie open source developpée et maintenue par Costin Leau (ingénieur à Elasticsearch) qui permet des interactions bidirectionnelles entre Elasticsearch et Hadoop. 

 

Déroulement

  

  • Récupération du jeu de données

Nous avons utilisé le jeu de données MillionSongDataset dont nous avons extrait 1000 chansons.

 

  • Création d'une Métadonnée dans Talend

Cette étape n'est pas obligatoire. Il s'agit de définir une métadonnée Hadoop Cluster contenant les informations de connexion à la sandbox Hortonworks. Cette métadonnée sera utilisée dans les différents jobs Talend et évitera d'avoir à remplir les informations de connexion à chaque fois.

Attention, la définition d'une métadonnée de type Hadoop Cluster n'est disponible que dans la version professionnelle.

 

 talend studio metadata

 

  • Alimentation du cluster Hadoop (sandbox)

 

talend studio feed hadoop

Le job récupère les fichiers sources du dataset et les stocke dans Hadoop. Le format de ces fichiers est HDF5. Pour pouvoir lire ces fichiers, une routine Talend a été créée. Les fichiers stockés dans Hadoop sont des fichiers plats (extension .csv).

 

  • Traitement au sein d'Hadoop

 

talend studio hadoop process

 

La capture précédente montre de quelle manière nous procédons pour fusionner des différents fichiers sources en un seul fichier de données.

Il s'agit ici d'un exemple de transformation avec des données stockées dans Hadoop. Bien entendu, notre exemple reste très simple mais la logique serait la même pour un traitement plus complexe.

 

  • Installation d'Elasticsearch

Elasticsearch n'est pas présent dans la sandbox Hortonworks. Il faut donc l'installer pour pouvoir l'utiliser.

L'installation d'Elasticsearch est très simple car il suffit de télécharger l'archive sur le site officiel, puis de se connecter en SSH à la sanbox (root/hadoop) afin d'y déposer l'archive pour pouvoir la dézipper. Enfin, il reste à l'exécuter pour démarrer.  

sanbox install elasticsearch

sandbox start elasticsearch 

 

  • Indexation des données sur Elasticsearch avec Pig

 

talend studio pig index elasticsearch

 

Afin de pouvoir interroger les données grâce au moteur de recherche Elasticsearch, il faut les indexer. Pour cela, toujours en utilisant le studio Talend Big Data, nous avons réalisé un job générant un script Pig qui va charger les données du fichier source et les indexer.

Comme dans les test précédents, l'exemple présent reste basique. L'intérêt ici est de montrer la possibilté d'utiliser un langage tel que Pig qui peut fournir ses résultats en tant que dataset pour Elasticsearch.

A noter l'utilisation d'un jar supplémentaire au début du job suite à une erreur rencontrée lors des premiers tests de la librairie elasticsearch-hadoop. 

 

Les deux screenshots suivants montrent en détails les paramètres du composant tPigStoreResult qui va alimenter Elasticsearch. 

La première image montre l'ajout de la librairie elasticsearch-hadoop au composant par l'intermédiaire de ses paramètres avancés. La librairie est obligatoire pour pouvoir communiquer avec Elasticsearch.

talend studio pig details 2 

La deuxième image montre les paramètres de base du composant tPigStoreResult. Afin de pouvoir indexer les données au sein d'Elasticsearch, il suffit de préciser qu'il s'agit d'une méthode de stockage spécifique dont le nom est org.elasticsearch.hadoop.pig.ESStorage() (provenant de la librairie précédemment chargée).

Il faut également préciser dans quel index les données seront stockées (song) et quel est leur type (song).

talend studio pig details 1

 

 

  • Recherche de données avec Elasticsearch

Après avoir indexé les données, nous avons fait une requête sur Elasticsearch pour voir si cela fonctionnait correctement.

Pour cela, nous avons d'abord rajouté le plugin Head à Elasticsearch. Ce plugin offre une interface graphique qui permet de visualiser les données indexées dans Elasticsearch comme le montre le screenshot suivant : 

elasticsearch head

Test en recherchant le terme "Love" dans toutes les données indexées :

elasticsearch search

 

 

  • Recherche de données avec Pig en utilisant Elasticsearch

Nous venons de voir qu'il est donc possible d'interroger directement Elasticsearch pour obtenir nos données mais ce n'est pas la seule interface possible. Nous pouvons également avoir accès aux données indexées dans Elasticsearch avec d'autres langages tel que Pig grâce à la librairie elastisearch-hadoop.

Par exemple, la recherche faite précédemment dans Elasticsearch pourrait s'écrire de cette façon avec Pig :

pig elasticsearch

Le résultat du traitement Pig est stocké dans le répertoire /msd/pig/elasticsearch

Comme on peut le voir ci-dessous, on retrouve bien les mêmes résultats (sous un format différent)

pig result

 

  • Conclusion

Voici le schéma présentant l'architecture réalisée

 schema talend big data hadoop pig elasticsearch2

Cette architecture n'est pas figée et peut tout à fait évoluer en incluant d'autres briques (telles que Kibana avec Elasticsearch pour créer des dashboards). Elle est assez proche de l'architecture Big Data appelée LAMBDA où l'on trouve un batch layer (stockage immuable de toutes les données), un serving layer (traitement des données du batch layer pour permettre le requêtage) et un speed layer (contient les données récentes et permettant un requêtage rapide des données).

La combinaison batch/serving layer pourrait correspondre à Hadoop et Pig, le speed layer serait Elasticsearch.

Par ailleurs, le pont elasticsearch-hadoop sait étendre d'autres outils de l'écosystème d'Hadoop tels que Hive, Cascading. Ainsi, il sera possible d'exploiter la recherche multi critères et l'interactivité (faible latence) d'Elasticsarch depuis Tableau Software  dans une architecture qui mèle Hadoop, Hive, Elasticsearch.

Crédits/Licence

  • MillionSongDataset 

Thierry Bertin-Mahieux, Daniel P.W. Ellis, Brian Whitman, and Paul Lamere. 

The Million Song Dataset. In Proceedings of the 12th International Society

for Music Information Retrieval Conference (ISMIR 2011), 2011.

 

  • Librairie Elasticsearch-hadoop du projet Elasticsearch for Apache Hadoop : 

Costin Leau de la société ElasticSearch

 

  • Talend Big Data 

Société Talend, France.

 

  • Sandbox 

Hortonworks Inc.

 

Rechercher sur le blog