Copier des données depuis le serveur HDFS à l’aide d’Azure Data Factory ou Synapse Analytics

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Cet article décrit comment copier des données à partir du serveur Hadoop Distributed File System (HDFS). Pour plus d’informations, consultez les articles de présentation pour Azure Data Factory et Synapse Analytics.

Fonctionnalités prises en charge

Ce connecteur HDFS est pris en charge pour les fonctionnalités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/-) ① ②
Activité de recherche ① ②
Supprimer l’activité ① ②

① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé

Plus précisément, le connecteur HDFS prend en charge ce qui suit :

  • Copie de fichiers en utilisant une authentification Windows (Kerberos) ou Anonyme.
  • Copie de fichiers en utilisant le protocole webhdfs ou la prise en charge de DistCp intégré.
  • Copie de fichiers en l’état, ou analyse ou génération de fichiers avec les formats de fichier et codecs de compression pris en charge.

Prérequis

Si votre magasin de données se trouve dans un réseau local, un réseau virtuel Azure ou un cloud privé virtuel Amazon, vous devez configurer un runtime d’intégration auto-hébergé pour vous y connecter.

Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser Azure Integration Runtime. Si l’accès est limité aux adresses IP qui sont approuvées dans les règles de pare-feu, vous pouvez ajouter les adresses IP Azure Integration Runtime dans la liste d’autorisation.

Vous pouvez également utiliser la fonctionnalité de runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.

Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.

Notes

Assurez-vous que le runtime d'intégration peut accéder à tous les éléments [serveur du nœud de nom]:[port du nœud de nom] et [serveurs du nœud de données]:[port du nœud de données] du cluster Hadoop. Le [port du nœud de nom] par défaut est 50070 et le [port du nœud de données] par défaut est 50075.

Bien démarrer

Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :

Créer un service lié à HDFS à l’aide de l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié à HDFS dans l’interface utilisateur du portail Azure.

  1. Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :

  2. Recherchez HDFS et sélectionnez le connecteur HDFS.

    Sélectionnez le connecteur HDFS.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Configurez un service lié à HDFS.

Détails de configuration des connecteurs

Les sections suivantes fournissent des informations sur les propriétés utilisées pour définir les entités Data Factory spécifiques de HDFS :

Propriétés du service lié

Les propriétés prises en charge pour le service lié HDFS sont les suivantes :

Propriété Description Obligatoire
type La propriété type doit être définie sur Hdfs. Oui
url URL vers le système HDFS Oui
authenticationType Valeurs autorisées : Anonyme ou Windows.

Pour configurer votre environnement local, consultez la section Utiliser l’authentification Kerberos pour le connecteur HDFS.
Oui
userName Nom d’utilisateur de l’authentification Windows. Pour l’authentification Kerberos, spécifiez <username>@<domain>.com. Oui (pour l’authentification Windows)
mot de passe Mot de passe de l’authentification Windows. Marquez ce champ en tant que SecureString afin de le stocker en toute sécurité, ou référencez un secret stocké dans Azure Key Vault. Oui (pour l’authentification Windows)
connectVia Le runtime d’intégration à utiliser pour se connecter à la banque de données. Pour en savoir plus, consultez la section Conditions préalables. Si le runtime d’intégration n’est pas spécifié, le service utilise le runtime d’intégration Azure par défaut. Non

Exemple : utilisation d’une authentification anonyme

{
    "name": "HDFSLinkedService",
    "properties": {
        "type": "Hdfs",
        "typeProperties": {
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "authenticationType": "Anonymous",
            "userName": "hadoop"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemple : utilisation d’une authentification Windows

{
    "name": "HDFSLinkedService",
    "properties": {
        "type": "Hdfs",
        "typeProperties": {
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "authenticationType": "Windows",
            "userName": "<username>@<domain>.com (for Kerberos auth)",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriétés du jeu de données

Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez Jeux de données.

Azure Data Factory prend en charge les formats de fichier suivants. Reportez-vous à chaque article pour les paramètres basés sur le format.

Les propriétés suivantes sont prises en charge pour HDFS sous les paramètres location dans le jeu de données basé sur le format :

Propriété Description Obligatoire
type La propriété de type sous location dans le jeu de données doit être définie sur HdfsLocation. Oui
folderPath Chemin du dossier. Si vous souhaitez utiliser un caractère générique pour filtrer le dossier, ignorez ce paramètre et spécifiez le chemin dans les paramètres de la source de l’activité. Non
fileName Nom de fichier sous le chemin folderPath spécifié. Si vous souhaitez utiliser un caractère générique pour filtrer les fichiers, ignorez ce paramètre et spécifiez le nom de fichier dans les paramètres de la source de l’activité. Non

Exemple :

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<HDFS linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "HdfsLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

Propriétés de l’activité de copie

Pour obtenir la liste complète des sections et des propriétés permettant de définir des activités, consultez Pipelines et activités. Cette section fournit la liste des propriétés prises en charge par la source HDFS.

HDFS en tant que source

Azure Data Factory prend en charge les formats de fichier suivants. Reportez-vous à chaque article pour les paramètres basés sur le format.

Les propriétés suivantes sont prises en charge pour HDFS sous les paramètres storeSettings dans la source de la copie basée sur le format :

Propriété Description Obligatoire
type La propriété type sous storeSettings doit être définie sur HdfsReadSettings. Oui
Rechercher les fichiers à copier
OPTION 1 : chemin d’accès statique
Copiez à partir du chemin d’accès au dossier ou au fichier spécifié dans le jeu de données. Si vous souhaitez copier tous les fichiers d’un dossier, spécifiez en plus wildcardFileName comme *.
OPTION 2 : caractère générique
- wildcardFolderPath
Chemin d’accès du dossier avec des caractères génériques pour filtrer les dossiers sources.
Les caractères génériques autorisés sont les suivants : * (correspond à zéro caractère ou plusieurs) et ? (correspond à zéro ou un caractère). Utilisez ^ comme caractère d’échappement si le nom réel de votre dossier contient un caractère générique ou ce caractère d’échappement.
Pour d’autres exemples, consultez dans Exemples de filtre de dossier et de fichier.
Non
OPTION 2 : caractère générique
- wildcardFileName
Nom du fichier avec des caractères génériques situé dans le chemin d’accès folderPath/wildcardFolderPath spécifié pour filtrer les fichiers sources.
Les caractères génériques autorisés sont * (correspond à zéro ou plusieurs caractères) et ? (correspond à zéro ou un caractère) ; utilisez ^ en guise d’échappement si votre nom de fichier contient effectivement ce caractère d’échappement ou générique. Pour d’autres exemples, consultez dans Exemples de filtre de dossier et de fichier.
Oui
OPTION 3 : liste de fichiers
- fileListPath
Indique de copier un ensemble de fichiers spécifié. Pointez vers un fichier texte qui contient une liste de fichiers que vous voulez copier (un fichier par ligne étant le chemin d’accès relatif au chemin d’accès configuré dans le jeu de données).
Lorsque vous utilisez cette option, ne spécifiez pas de nom de fichier dans le jeu de données. Pour plus d’exemples, consultez Exemples de listes de fichiers.
Non
Paramètres supplémentaires
recursive Indique si les données sont lues de manière récursive à partir des sous-dossiers ou uniquement du dossier spécifié. Lorsque l’option recursive est définie sur true et que le récepteur est un magasin basé sur un fichier, aucun dossier ou sous-dossier vide n’est copié ou créé au niveau du récepteur.
Les valeurs autorisées sont true (par défaut) et false.
Cette propriété ne s’applique pas lorsque vous configurez fileListPath.
Non
deleteFilesAfterCompletion Indique si les fichiers binaires seront supprimés du magasin source après leur déplacement vers le magasin de destination. La suppression se faisant par fichier, lorsque l’activité de copie échoue, vous pouvez constater que certains fichiers ont déjà été copiés vers la destination et supprimés de la source, tandis que d’autres restent dans le magasin source.
Cette propriété est valide uniquement dans un scénario de copie de fichiers binaires. La valeur par défaut est false.
Non
modifiedDatetimeStart Les fichiers sont filtrés en fonction de l’attribut Dernière modification.
Les fichiers sont sélectionnés si leur dernière heure de modification est supérieure ou égale à modifiedDatetimeStart et inférieure à modifiedDatetimeEnd. L’heure est appliquée au fuseau horaire UTC au format 2018-12-01T05:00:00Z.
Les propriétés peuvent être NULL, ce qui signifie qu’aucun filtre d’attribut de fichier n’est appliqué au jeu de données. Lorsque modifiedDatetimeStart a une valeur DateHeure, mais que modifiedDatetimeEnd est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est supérieur ou égal à la valeur DateHeure sont sélectionnés. Lorsque modifiedDatetimeEnd a une valeur DateHeure, mais que modifiedDatetimeStart est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est inférieur à la valeur DateHeure sont sélectionnés.
Cette propriété ne s’applique pas lorsque vous configurez fileListPath.
Non
modifiedDatetimeEnd Identique à ce qui précède.
enablePartitionDiscovery Pour les fichiers partitionnés, spécifiez s’il faut analyser les partitions à partir du chemin d’accès au fichier et les ajouter en tant que colonnes sources supplémentaires.
Les valeurs autorisées sont false (par défaut) et true.
Non
partitionRootPath Lorsque la découverte de partition est activée, spécifiez le chemin d’accès racine absolu pour pouvoir lire les dossiers partitionnés en tant que colonnes de données.

S’il n’est pas spécifié, par défaut :
– Quand vous utilisez le chemin d’accès du fichier dans le jeu de données ou la liste des fichiers sur la source, le chemin racine de la partition est le chemin d’accès configuré dans le jeu de données.
– Quand vous utilisez le filtre de dossiers de caractères génériques, le chemin d’accès racine de la partition est le sous-chemin d’accès avant le premier caractère générique.

Par exemple, en supposant que vous configurez le chemin d’accès dans le jeu de données en tant que « root/folder/year=2020/month=08/day=27 » :
– Si vous spécifiez le chemin d’accès racine de la partition en tant que « root/folder/year=2020 », l’activité de copie génère deux colonnes supplémentaires, month et day, ayant respectivement la valeur « 08 » et « 27 », en plus des colonnes contenues dans les fichiers.
– Si le chemin d’accès racine de la partition n’est pas spécifié, aucune colonne supplémentaire n’est générée.
Non
maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. Non
Paramètres DistCp
distcpSettings Groupe de propriétés à utiliser lorsque vous utilisez DistCp HDFS. Non
resourceManagerEndpoint Point de terminaison YARN (Yet Another Resource Negotiator) Oui, en cas d’utilisation de DistCp
tempScriptPath Chemin d’accès du dossier utilisé pour stocker le script de commande DistCp temporaire. Le fichier de script est généré et supprimé une fois le travail de copie terminé. Oui, en cas d’utilisation de DistCp
distcpOptions Options supplémentaires fournies à la commande DistCp. Non

Exemple :

"activities":[
    {
        "name": "CopyFromHDFS",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "HdfsReadSettings",
                    "recursive": true,
                    "distcpSettings": {
                        "resourceManagerEndpoint": "resourcemanagerendpoint:8088",
                        "tempScriptPath": "/usr/hadoop/tempscript",
                        "distcpOptions": "-m 100"
                    }
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Exemples de filtres de dossier et de fichier

Cette section décrit le comportement résultant de l’utilisation de filtres de caractères génériques dans les noms de fichier et les chemins de dossier.

folderPath fileName recursive Structure du dossier source et résultat du filtrage (les fichiers en gras sont récupérés)
Folder* (vide, utiliser la valeur par défaut) false DossierA
    Fichier1.csv
    File2.json
    Sousdossier1
        Fichier3.csv
        Fichier4.json
        Fichier5.csv
AutreDossierB
    Fichier6.csv
Folder* (vide, utiliser la valeur par défaut) true DossierA
    Fichier1.csv
    File2.json
    Sousdossier1
        File3.csv
        File4.json
        File5.csv
AutreDossierB
    Fichier6.csv
Folder* *.csv false DossierA
    Fichier1.csv
    Fichier2.json
    Sousdossier1
        Fichier3.csv
        Fichier4.json
        Fichier5.csv
AutreDossierB
    Fichier6.csv
Folder* *.csv true DossierA
    Fichier1.csv
    Fichier2.json
    Sousdossier1
        File3.csv
        Fichier4.json
        File5.csv
AutreDossierB
    Fichier6.csv

Exemples de liste de fichiers

Cette section décrit le comportement résultant de l’utilisation d’un chemin d’accès de liste de fichiers dans la source de l’activité Copy. Supposons que vous disposez de la structure de dossiers sources suivante et que vous souhaitez copier les fichiers en gras :

Exemple de structure source Contenu de FileListToCopy.txt Configuration
root
    DossierA
        Fichier1.csv
        Fichier2.json
        Sousdossier1
            File3.csv
            Fichier4.json
            File5.csv
    Métadonnées
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
Dans le jeu de données :
- chemin d’accès du dossier : root/FolderA

Dans la source de l’activité de copie :
- chemin d’accès à la liste de fichiers : root/Metadata/FileListToCopy.txt

Le chemin d’accès à la liste de fichiers pointe vers un fichier texte dans le même magasin de données qui contient la liste de fichiers que vous voulez copier (un fichier par ligne étant le chemin d’accès relatif au chemin d’accès configuré dans le jeu de données).

Utiliser DistCp pour copier des données de HDFS

DistCp est un outil en ligne de commande Hadoop natif permettant d’effectuer une copie distribuée dans un cluster Hadoop. Quand vous exécutez une commande dans l’outil DistCp, il répertorie tout d’abord tous les fichiers à copier, puis crée plusieurs tâches de mappage dans le cluster Hadoop. Chaque tâche de mappage effectue une copie binaire de la source vers le récepteur.

L’activité de copie prend en charge l’utilisation de DistCp pour copier des fichiers en l’état dans le stockage d’objets Azure Blob (y compris copie intermédiaire) ou le stockage de lac de données Azure. Dans ce cas, DistCp peut tirer parti de la puissance de votre cluster au lieu de s’exécuter sur le runtime d’intégration auto-hébergé. Utiliser DistCp permet que le débit de la copie soit ainsi amélioré, en particulier si votre cluster est très puissant. Selon la configuration, l’activité Copy construit automatiquement une commande DistCp, l’envoie à votre cluster Hadoop et surveille l’état de la copie.

Prérequis

Pour utiliser DistCp pour copier des fichiers en l’état de HDFS vers le stockage de blob Azure (y compris une copie intermédiaire) ou du lac de données Azure, assurez-vous que votre cluster Hadoop présente la configuration requise suivante :

  • Les services MapReduce et YARN sont activés.

  • YARN version 2.5 ou ultérieure.

  • Le serveur HDFS est intégré à votre banque de données cible : Stockage Blob Azure ou Azure Data Lake Store (ADLS Gen1) :

    • Le système de fichiers d’objet blob Azure est pris en charge en mode natif depuis Hadoop 2.7. Vous devez uniquement spécifier le chemin d’accès JAR dans la configuration de l’environnement Hadoop.
    • Le système de fichiers d’Azure Data Lake Store est empaqueté depuis Hadoop 3.0.0-alpha1. Si la version de votre cluster Hadoop est antérieure à cette version, vous devez importer manuellement les packages JAR associés à Azure Data Lake Store (azure-datalake-store.jar) dans le cluster à partir d’ici et spécifier le chemin d’accès du fichier JAR dans la configuration de l’environnement Hadoop.
  • Préparez un dossier temporaire dans HDFS. Ce dossier temporaire est utilisé pour stocker le script d'interpréteur de commandes DistCp afin qu’il occupe un espace exprimable en Ko.

  • Assurez-vous que le compte d’utilisateur fourni dans le service lié HDFS a l’autorisation d’effectuer les opérations suivantes :

    • Soumettez une application dans YARN.
    • Créez un sous-dossier et écrivez/lisez les fichiers du dossier Temp.

Configurations

Pour voir les exemples et les configurations liés à DistCp, consultez la section HDFS en tant que source.

Utilisation de l’authentification Kerberos pour le connecteur HDFS

Il existe deux options pour configurer l’environnement local afin d’utiliser l’authentification Kerberos avec le connecteur HDFS. Vous pouvez choisir celle qui correspond mieux à votre situation.

Quelle que soit l’option, veillez à activer webhdfs pour le cluster Hadoop :

  1. Créez le principal HTTP et le keytab pour webhdfs.

    Important

    Le principal HTTP Kerberos doit commencer par « HTTP/ » conformément à la spécification HTTP SPNEGO de Kerberos. Pour plus d’informations, cliquez ici.

    Kadmin> addprinc -randkey HTTP/<namenode hostname>@<REALM.COM>
    Kadmin> ktadd -k /etc/security/keytab/spnego.service.keytab HTTP/<namenode hostname>@<REALM.COM>
    
  2. Options de configuration HDFS : ajoutez les trois propriétés suivantes dans hdfs-site.xml.

    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.web.authentication.kerberos.principal</name>
        <value>HTTP/_HOST@<REALM.COM></value>
    </property>
    <property>
        <name>dfs.web.authentication.kerberos.keytab</name>
        <value>/etc/security/keytab/spnego.service.keytab</value>
    </property>
    

Option 1 : Joindre un ordinateur exécutant le runtime d’intégration auto-hébergé dans le domaine Kerberos

Spécifications

  • L’ordinateur exécutant le runtime d’intégration auto-hébergé doit joindre le domaine Kerberos et ne peut pas joindre un domaine Windows.

Comment configurer

Sur le serveur du centre de distribution de clés Kerberos :

Créez un principal et spécifiez le mot de passe.

Important

Le nom d’utilisateur ne doit pas contenir le nom d’hôte.

Kadmin> addprinc <username>@<REALM.COM>

Sur un ordinateur exécutant le runtime d’intégration auto-hébergé :

  1. Exécutez l’utilitaire Ksetup pour configurer le serveur et le domaine du centre de distribution de clés Kerberos.

    L’ordinateur doit être configuré en tant que membre d’un groupe de travail, car un domaine Kerberos est différent d’un domaine Windows. Vous pouvez obtenir cette configuration en définissant le domaine Kerberos et en ajoutant un serveur KDC en exécutant les commandes suivantes. Remplacez REALM.COM par votre propre nom de domaine.

    C:> Ksetup /setdomain REALM.COM
    C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    

    Après avoir exécuté ces commandes, redémarrez l’ordinateur.

  2. Vérifiez la configuration avec la commande Ksetup. La sortie doit être semblable à :

    C:> Ksetup
    default realm = REALM.COM (external)
    REALM.com:
        kdc = <your_kdc_server_address>
    

Dans votre espace de travail Data Factory ou Synapse :

  • Configurez le connecteur HDFS à l’aide de l’authentification Windows avec votre nom principal Kerberos et le mot de passe pour vous connecter à la source de données HDFS. Vérifiez les détails de configuration dans la section Propriétés du service lié HDFS.

Option 2 : Activer l’approbation mutuelle entre le domaine Windows et le domaine Kerberos

Spécifications

  • L’ordinateur exécutant le runtime d’intégration auto-hébergé doit joindre un domaine Windows.
  • Vous avez besoin d’autorisations pour mettre à jour les paramètres du contrôleur de domaine.

Comment configurer

Notes

Remplacez REALM.COM et AD.COM dans le didacticiel suivant par votre propre nom de domaine et de contrôleur de domaine.

Sur le serveur du centre de distribution de clés Kerberos :

  1. Modifiez la configuration KDC dans le fichier krb5.conf afin de permettre au KDC d’approuver le domaine Windows faisant référence au modèle de configuration suivant. Par défaut, la configuration se trouve dans /etc/krb5.conf.

    [logging]
     default = FILE:/var/log/krb5libs.log
     kdc = FILE:/var/log/krb5kdc.log
     admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
     default_realm = REALM.COM
     dns_lookup_realm = false
     dns_lookup_kdc = false
     ticket_lifetime = 24h
     renew_lifetime = 7d
     forwardable = true
    
    [realms]
     REALM.COM = {
      kdc = node.REALM.COM
      admin_server = node.REALM.COM
     }
    AD.COM = {
     kdc = windc.ad.com
     admin_server = windc.ad.com
    }
    
    [domain_realm]
     .REALM.COM = REALM.COM
     REALM.COM = REALM.COM
     .ad.com = AD.COM
     ad.com = AD.COM
    
    [capaths]
     AD.COM = {
      REALM.COM = .
     }
    

    Après avoir configuré le fichier, redémarrez le service KDC.

  2. Préparez un principal nommé krbtgt/REALM.COM@AD.COM dans le serveur KDC à l’aide de la commande suivante :

    Kadmin> addprinc krbtgt/REALM.COM@AD.COM
    
  3. Dans le fichier de configuration du service HDFS hadoop.security.auth_to_local, ajoutez RULE:[1:$1@$0](.*\@AD.COM)s/\@.*//.

Sur le contrôleur de domaine :

  1. Exécutez les commandes Ksetup suivantes pour ajouter une entrée de domaine :

    C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    
  2. Établissez l’approbation du domaine Windows pour le domaine Kerberos. [password] correspond au mot de passe pour le principal krbtgt/REALM.COM@AD.COM.

    C:> netdom trust REALM.COM /Domain: AD.COM /add /realm /password:[password]
    
  3. Sélectionnez l’algorithme de chiffrement utilisé dans Kerberos.

    a. Sélectionnez Gestionnaire de serveur>Gestion des stratégies de groupe>Domaine>Objets de stratégie de groupe>Stratégie de domaine par défaut ou actif, puis sélectionnez Modifier.

    b. Dans le volet Éditeur de gestion des stratégies de groupe, accédez à Configuration de l’ordinateur>Stratégies>Paramètres Windows>Paramètres de sécurité>Stratégies locales>Options de sécurité, puis configurez Sécurité réseau : Configurer les types de chiffrement autorisés pour Kerberos.

    c. Sélectionnez l’algorithme de chiffrement à utiliser lorsque vous vous connectez au serveur KDC. Vous pouvez sélectionner toutes les options.

    Capture d’écran du volet &quot;Sécurité réseau : Configurer les types de chiffrement autorisés pour Kerberos&quot;

    d. Utilisez la commande Ksetup pour spécifier l’algorithme de chiffrement à utiliser dans le domaine spécifié.

    C:> ksetup /SetEncTypeAttr REALM.COM DES-CBC-CRC DES-CBC-MD5 RC4-HMAC-MD5 AES128-CTS-HMAC-SHA1-96 AES256-CTS-HMAC-SHA1-96
    
  4. Créez le mappage entre le compte de domaine et le principal Kerberos pour utiliser le principal Kerberos dans le domaine Windows.

    a. Sélectionnez Outils d’administration>Utilisateurs et ordinateurs Active Directory.

    b. Configurez les fonctionnalités avancées en sélectionnant Afficher>Fonctionnalités avancées.

    c. Dans le volet Fonctionnalités avancées, faites un clic droit sur le compte sur lequel vous souhaitez créer des mappages et, dans le volet Mappages des noms, sélectionnez l’onglet Noms Kerberos.

    d. Ajoutez un principal provenant du domaine.

    Capture d’écran du volet &quot;Mappage des identités de securité&quot;

Sur un ordinateur exécutant le runtime d’intégration auto-hébergé :

  • Exécutez les commandes Ksetup suivantes pour ajouter une entrée de domaine.

    C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    

Dans votre espace de travail Data Factory ou Synapse :

  • Configurez le connecteur HDFS à l’aide de l’authentification Windows avec votre compte de domaine ou le principal Kerberos pour vous connecter à la source de données HDFS. Pour les détails de configuration, consultez la section Propriétés du service lié HDFS.

Propriétés de l’activité Lookup

Pour obtenir des informations sur les propriétés de l’activité de recherche, consultez Activité de recherche.

Propriétés de l’activité Delete

Pour obtenir des informations sur les propriétés de l’activité Delete, consultez Activité Delete.

Modèles hérités

Notes

Les modèles suivants sont toujours pris en charge tels quels à des fins de compatibilité descendante. Nous vous recommandons d’utiliser le nouveau modèle abordé précédemment, car l’interface utilisateur de création a basculé vers la génération du nouveau modèle.

Modèle de jeu de données hérité

Propriété Description Obligatoire
type La propriété type du jeu de données doit être définie sur FileShare Oui
folderPath Chemin du dossier. Un filtre de caractères génériques est pris en charge. Les caractères génériques autorisés sont * (correspond à zéro ou plusieurs caractères) et ? (correspond à zéro ou un caractère) ; utilisez ^ en guise d’échappement si votre nom de fichier contient effectivement ce caractère d’échappement ou générique.

Exemples : dossier_racine/sous-dossier/ ; consultez d’autres exemples dans Exemples de filtres de dossier et de fichier.
Oui
fileName Filtre de noms ou de caractères génériques pour les fichiers sous le « folderPath » spécifié. Si vous ne spécifiez pas de valeur pour cette propriété, le jeu de données pointe vers tous les fichiers du dossier.

Dans le filtre, les caractères génériques autorisés sont * (correspond à zéro caractère ou plus) et ? (correspond à zéro ou un caractère).
- Exemple 1 : "fileName": "*.csv"
- Exemple 2 : "fileName": "???20180427.txt"
Utilisez ^ comme caractère d’échappement si le nom réel de votre dossier contient un caractère générique ou ce caractère d’échappement.
Non
modifiedDatetimeStart Les fichiers sont filtrés en fonction de l’attribut Dernière modification. Les fichiers sont sélectionnés si leur dernière heure de modification est supérieure ou égale à modifiedDatetimeStart et inférieure à modifiedDatetimeEnd. L’heure est appliquée au fuseau horaire UTC au format 2018-12-01T05:00:00Z.

Sachez que les performances globales du déplacement des données sont affectées par l’activation de ce paramètre lorsque vous souhaitez filtrer des fichiers parmi de grandes quantités de fichiers.

Les propriétés peuvent être NULL, ce qui signifie qu’aucun filtre d’attribut de fichier n’est appliqué au jeu de données. Lorsque modifiedDatetimeStart a une valeur DateHeure, mais que modifiedDatetimeEnd est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est supérieur ou égal à la valeur DateHeure sont sélectionnés. Lorsque modifiedDatetimeEnd a une valeur DateHeure, mais que modifiedDatetimeStart est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est inférieur à la valeur DateHeure sont sélectionnés.
Non
modifiedDatetimeEnd Les fichiers sont filtrés en fonction de l’attribut Dernière modification. Les fichiers sont sélectionnés si leur dernière heure de modification est supérieure ou égale à modifiedDatetimeStart et inférieure à modifiedDatetimeEnd. L’heure est appliquée au fuseau horaire UTC au format 2018-12-01T05:00:00Z.

Sachez que les performances globales du déplacement des données sont affectées par l’activation de ce paramètre lorsque vous souhaitez filtrer des fichiers parmi de grandes quantités de fichiers.

Les propriétés peuvent être NULL, ce qui signifie qu’aucun filtre d’attribut de fichier n’est appliqué au jeu de données. Lorsque modifiedDatetimeStart a une valeur DateHeure, mais que modifiedDatetimeEnd est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est supérieur ou égal à la valeur DateHeure sont sélectionnés. Lorsque modifiedDatetimeEnd a une valeur DateHeure, mais que modifiedDatetimeStart est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est inférieur à la valeur DateHeure sont sélectionnés.
Non
format Si vous souhaitez copier des fichiers en l’état entre des magasins de fichiers (copie binaire), ignorez la section Format dans les deux définitions de jeu de données d’entrée et de sortie.

Si vous voulez analyser des fichiers dans un format spécifique, les types de format de fichier suivants sont pris en charge : TextFormat, JsonFormat, AvroFormat, OrcFormat et ParquetFormat. Définissez la propriété type située sous Format sur l’une de ces valeurs. Pour en savoir plus, voir les sections Format Text, Format JSON, Format Avro, Format ORC et Format Parquet.
Non (uniquement pour un scénario de copie binaire)
compression Spécifiez le type et le niveau de compression pour les données. Pour plus d’informations, voir Formats de fichier et de codecs de compression pris en charge.
Types pris en charge : GZip, Deflate, BZip2 et ZipDeflate.
Niveaux pris en charge : Optimal et Fastest.
Non

Conseil

Pour copier tous les fichiers d’un dossier, spécifiez folderPath uniquement.
Pour copier un seul fichier avec un nom donné, spécifiez folderPath avec la partie dossier et fileName avec le nom du fichier.
Pour copier un sous-ensemble de fichiers d’un dossier, spécifiez folderPath avec la partie dossier et fileName avec le filtre de caractères génériques.

Exemple :

{
    "name": "HDFSDataset",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<HDFS linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

Modèle hérité de la source d’activité de copie

Propriété Description Obligatoire
type La propriété type de la source de l’activité de copie doit être définie sur HdfsSource. Oui
recursive Indique si les données sont lues de manière récursive à partir des sous-dossiers ou uniquement du dossier spécifié. Lorsque l’option « recursive » est définie sur true et que le récepteur est un magasin basé sur un fichier, un dossier vide ou un sous-dossier n’est pas copié ou créé sur le récepteur.
Les valeurs autorisées sont true (par défaut) et false.
Non
distcpSettings Groupe de propriétés lorsque vous utilisez HDFS DistCp. Non
resourceManagerEndpoint Point de terminaison de YARN Resource Manager Oui, en cas d’utilisation de DistCp
tempScriptPath Chemin d’accès du dossier utilisé pour stocker le script de commande DistCp temporaire. Le fichier de script est généré et supprimé une fois le travail de copie terminé. Oui, en cas d’utilisation de DistCp
distcpOptions Options supplémentaires fournies à la commande DistCp. Non
maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. Non

Exemple : Source HDFS dans une activité de copie avec DistCp

"source": {
    "type": "HdfsSource",
    "distcpSettings": {
        "resourceManagerEndpoint": "resourcemanagerendpoint:8088",
        "tempScriptPath": "/usr/hadoop/tempscript",
        "distcpOptions": "-m 100"
    }
}

Étapes suivantes

Pour obtenir la liste des magasins de données pris en charge en tant que sources ou récepteurs par l'activité de copie, consultez les magasins de données pris en charge.