Utiliser Apache Sqoop avec Hadoop dans HDInsight

Découvrez comment utiliser Apache Sqoop dans HDInsight pour importer et exporter des données entre un cluster HDInsight et Azure SQL Database.

Bien qu’Apache Hadoop soit un choix naturel pour traiter des données non structurées et semi-structurées, comme des journaux et des fichiers, il peut également être nécessaire de traiter des données structurées stockées dans des bases de données relationnelles.

Apache Sqoop est un outil conçu pour transférer des données entre des clusters Hadoop et des bases de données relationnelles. Vous pouvez l’utiliser pour importer dans un système de fichiers distribués Hadoop (HDFS) des données depuis un système de gestion de base de données relationnelle (SGBDR), tel que SQ Server, MySQL ou Oracle, transformer ces données dans Hadoop avec MapReduce ou Apache Hive, et exporter à nouveau les données dans un SGBDR. Dans cet article, vous allez utiliser Azure SQL Database comme base de données relationnelle.

Important

Cet article configure un environnement de test pour effectuer le transfert de données. Vous choisissez ensuite une méthode de transfert des données pour cet environnement parmi celles figurant dans la section Exécuter des travaux Sqoop.

Pour obtenir la liste des versions de Sqoop prises en charge par les clusters HDInsight, consultez Quels sont les composants et versions Hadoop disponibles avec HDInsight ?

Présentation du scénario

Le cluster HDInsight inclut des exemples de données. Vous utilisez les deux éléments suivants :

  • Un fichier journal Apache Log4j, qui se trouve dans /example/data/sample.log. Ce fichier inclut les journaux d’activité suivants :
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
  • Une table Hive nommée hivesampletable, qui référence le fichier de données qui se trouve dans /hive/warehouse/hivesampletable. Cette table contient des données relatives aux appareils mobiles.

    Champ Type de données
    clientid string
    querytime string
    market string
    deviceplatform string
    devicemake string
    devicemodel string
    state string
    country string
    querydwelltime double
    sessionid bigint
    sessionpagevieworder bigint

Dans cet article, vous utilisez ces deux jeux de données pour tester l’importation et l’exportation Sqoop.

Configurer un environnement de test

Le cluster, la base de données SQL et d’autres objets sont créés via le portail Azure en utilisant un modèle Azure Resource Manager. Le modèle se trouve dans les modèles de démarrage rapide Azure. Le modèle Resource Manager appelle un package bacpac pour déployer les schémas de table sur une base de données SQL. Si vous souhaitez utiliser un conteneur privé pour stocker les fichiers bacpac, appliquez les valeurs suivantes au modèle :

"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",

Notes

L’importation à l’aide d’un modèle ou du portail Azure ne prend en charge que l’importation d’un fichier BACPAC à partir du stockage Blob Azure.

  1. Sélectionnez l’image suivante pour ouvrir le modèle Resource Manager dans le portail Azure.

    Bouton de déploiement sur Azure pour le nouveau cluster

  2. Entrez les propriétés suivantes :

    Champ Valeur
    Abonnement Sélectionnez votre abonnement Azure dans la liste déroulante.
    Resource group Sélectionnez votre groupe de ressources dans la liste déroulante, ou créez-en un
    Emplacement Sélectionnez une région dans la liste déroulante.
    Nom du cluster Entrez un nom pour le cluster Hadoop. Utilisez seulement des lettres minuscules.
    Nom d’utilisateur de connexion au cluster Conservez la valeur préremplie admin.
    Mot de passe de connexion au cluster Entrez un mot de passe.
    Nom d’utilisateur SSH Conservez la valeur préremplie sshuser.
    Mot de passe SSH Entrez un mot de passe.
    Nom de connexion de l’administrateur SQL Conservez la valeur préremplie sqluser.
    Mot de passe de l’administrateur SQL Entrez un mot de passe.
    Emplacement des artefacts Utilisez la valeur par défaut, sauf si vous voulez utiliser votre propre fichier bacpac dans un emplacement différent.
    Jeton SAS de l’emplacement des artefacts Laisser vide.
    Nom du fichier Bacpac Utilisez la valeur par défaut, sauf si vous voulez utiliser votre propre fichier bacpac.
    Emplacement Utilisez la valeur par défaut.

    Le nom du serveur SQL logique est <ClusterName>dbserver. Le nom de la base de données est <ClusterName>db. Le nom du compte de stockage par défaut est e6qhezrh2pdqu.

  3. J’accepte les termes et conditions mentionnés ci-dessus.

  4. Sélectionnez Achat. Une nouvelle vignette intitulée Envoi du déploiement pour Déploiement de modèle s’affiche. La création du cluster et de la base de données SQL prend environ 20 minutes.

Exécuter des tâches Sqoop

HDInsight peut exécuter des travaux Sqoop en utilisant différentes méthodes. Utilisez la table suivante pour choisir la méthode qui vous convient, puis cliquez sur le lien pour obtenir une présentation détaillée.

Utilisez-le si vous souhaitez... ... un interpréteur de commandes interactif ... un traitement par lots ...depuis ce système d’exploitation cluster
SSH ? ? Linux, Unix, Mac OS X ou Windows
Kit de développement logiciel (SDK) .NET pour Hadoop   ? Windows (pour l’instant)
Azure PowerShell   ? Windows

Limites

  • Exportation en bloc : avec HDInsight sous Linux, le connecteur Sqoop utilisé pour exporter des données vers Microsoft SQL Server ou SQL Database ne prend pas en charge les insertions en bloc.
  • Traitement par lots : avec HDInsight sous Linux, lorsque vous utilisez le commutateur -batch pour effectuer des insertions, Sqoop effectue plusieurs insertions plutôt qu’un traitement par lots des opérations d’insertion.

Étapes suivantes

Vous maîtrisez à présent l’utilisation de Sqoop. Pour plus d'informations, consultez les rubriques suivantes :