Besoin de mettre en place une liaison entre votre base de données (Oracle, Teradata, DB2, MySQL ou SQL Server) et votre cluster Hadoop ? Dans cet article, nous vous montrerons comment transférer les données de vos bases de données opérationnelles dans un cluster Hadoop à l’aide de Sqoop.

Sqoop ou Talend : quel outil pour connecter vos bases opérationnelles à Hadoop ?

Aujourd’hui, malgré la transition vers le Big Data, beaucoup d’entreprises ont encore leurs données stockées dans divers systèmes opérationnels : Data warehouse, ERP, SGBDR, Bases de données opérationnelles. Beaucoup d’autres rencontrent encore des problèmes de silos de données, dans lesquels les données de l’entreprise sont dispersées dans différentes bases Access, fichiers Excel ou fichiers plats départementaux. Cette situation ne permet pas de tirer profit de la donnée pour améliorer l’entreprise.
La meilleure approche pour vraiment valoriser les données aujourd’hui compte tenu de ces problèmes consiste à migrer vers une approche qualifiée de « Data Lake » où Hadoop est utilisé comme support de stockage central. En fait, l’idée derrière le data lake est de fournir un point d’accès unique à la données (Single Data Access Point) qui à son tour dédoublonnera les données et offrira une version unique de la vérité (Single Point of Truth), indispensable pour des résultats fiables.

Quel outil pour connecter vos bases opérationnelles à Hadoop ?

En plus d’être mature et stable, Hadoop est l’une des rares plateformes technologiques du Big Data complètement intégrée aux systèmes opérationnels de l’entreprise par le biais du SQL.
Il y’a quelques temps de cela, lors d’une mission de conseil dans laquelle il fallait établir une liaison entre le cluster Hadoop de l’entreprise et l’EDC (une base Teradata contenant les données des centre d’appels), la cliente a fait un mail dans lequel elle nous posait les questions suivantes :

  • Pourrais-t-on faire cette liaison sur Talend ?
  • Est-ce qu’un traitement spark ou java pourra appeler un service sqoop pour faire l’appel à l’EDC ?
  • Comment fait-on pour sécuriser la liaison ?

Ce mail (et plusieurs autres que nous avons vu passé), m’ont montré à quel point il y’a de la confusion sur le rôle des outils de l’écosystème Hadoop. Dans cet article, nous allons vous expliquer comment répondre aux questions du client.

Sqoop.

Sqoop, abbréviation de SQL-to-Hadoop, est un utilitaire de transfert des données d’une base de données relationnelle au HDFS et du HDFS aux bases de données relationnelles. Vous pouvez utiliser Sqoop pour importer des données des SGBDR tels que MySQL, Oracle, SQL Server ou Teradata au HDFS, transformer les données dans Hadoop via le MapReduce ou un autre modèle de calcul, et les exporter en retour dans le SGBDR. Lorsque vous exportez les données du SGBDR pour Hadoop, vous pouvez les stocker sur Hive, HBase ou directement sur le HDFS.

Sqoop est intégré à l’écosystème Hadoop et est-ce que nous appelons le planificateur d’ingestion des données dans Hadoop. Nous l’appelons ainsi parce que tout comme Oozie, il automatise ce processus d’import/export et en planifie le moment d’exécution. Tout ce que vous avez à faire en tant qu’utilisateur c’est d’écrire les requêtes SQL qui vont être utilisées pour effectuer le mouvement d’import/export. Par ailleurs, Sqoop, utilise le MapReduce pour importer et exporter les données, ce qui efficace et tolérant aux pannes.  La figure suivante illustre particulièrement bien les fonctions de Sqoop.

apache sqoop
Figure : Sqoop tourne autour de 2 activités répartis sur ses deux utilitaires, l’utilitaire d’import et l’utilitaire d’export.

Le processus d’import/export de Sqoop est relativement simple à développer. Tout ce que vous avez à faire en tant qu’utilisateur c’est d’écrire les requêtes SQL qui vont être utilisées pour effectuer le mouvement d’import/export. Par ailleurs, Sqoop utilise le MapReduce pour importer et exporter les données, ce qui est efficace et tolérant aux pannes.

Supposons que nous souhaitons exporter une table MySQL appelée ‘jvc_hadoop’ dans Hadoop. Nous souhaitons importer la table dans le répertoire HDFS ‘lab/import/data’. Le script Sqoop d’import sera le suivant :

$ sqoop import                                    \
     --connect jdbc:mysql://localhost/sqoop_test   \
     --table jvc_hadoop                             \
     --split –by id_jvc                              \
     --num-mappers 6                                  \
     --target-dir lab/import/data

Est-ce qu’un traitement spark ou java pourra appeler un service sqoop pour faire l’appel à l’EDC ?

Ainsi, par rapport au mail du client, vous comprenez qu’un traitement Spark ou Java ne peut pas appeler Sqoop pour faire appel à l’EDC. Dans ce cas de figure, si le script d’import de données a été développé sous un job Spark ou un programme Java, alors ce n’est pas Sqoop qu’il faut utiliser, mais un service de planification d’exécution de jobs sous Hadoop à l’exemple de Oozie ou Control-M.

Comment fait-on pour sécuriser la liaison ?

En ce qui concerne la sécurisation, vous devez savoir que le moyen le plus abouti de sécuriser un cluster Hadoop aujourd’hui reste l’authentification KERBEROS. Kerberos est un protocole d’authentification réseau qui repose sur le cryptage des données. Dans le cluster Hadoop, KERBEROS crypte les données lors de leur circulation entre les différents noeuds du cluster. Ainsi, leur interception frauduleuse ne servira à rien (puisqu’elles sont cryptées). Ainsi, pour sécuriser la liaison dans Sqoop, il vous suffira d’indiquer dans votre script d’import/export, le répertoire de la keytab (la clé d’authentification Kerberos).

Pourrait-on faire cette liaison sur Talend ?

Talend est par définition une plateforme d’intégration de données, en d’autres termes un ETL (Extract Transform Load). Il fournit des outils de connexion à des systèmes opérationnels variés et des outils de traitement de données. Il dispose de plusieurs plateformes telles que Talend Data Integration, Talend Data Quality et Talend Service Bus. Il y’a quelques temps, l’entreprise a rajouté à la plateforme, Talend Open Studio for Big Data, un composant qui ajoute à Talend Data Integration un plug-in qui permet de développer graphiquement des jobs Hadoop.

Pour répondre à la question de la cliente, oui la liaison peut être faite sur Talend. Grâce à Talend open Studio for Big Data, vous pouvez utiliser le plug-in sqoop pour développer un job Sqoop de transfert de données de Teradata vers Hadoop.

Voilà, nous espérons que vous voyez maintenant plus clair sur les façons de transférer les données des systèmes opérationnels vers Hadoop et vice-verça via Sqoop. Si vous avez des questions, des préoccupations, ou un scénario similaire, n’hésitez pas à l’écrire en commentaire ci-bas.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>