Transfert de données à partir d’un HDFS local à l’aide d’Azure Data FactoryMove data from on-premises HDFS using Azure Data Factory

Notes

Cet article s’applique à la version 1 de Data Factory.This article applies to version 1 of Data Factory. Si vous utilisez la version actuelle du service Data Factory, consultez Connecteur HDFS dans V2.If you are using the current version of the Data Factory service, see HDFS connector in V2.

Cet article explique comment utiliser l’activité de copie dans Azure Data Factory pour déplacer des données à partir d’un HDFS local.This article explains how to use the Copy Activity in Azure Data Factory to move data from an on-premises HDFS. Il s’appuie sur l’article Activités de déplacement des données, qui présente une vue d’ensemble du déplacement de données avec l’activité de copie.It builds on the Data Movement Activities article, which presents a general overview of data movement with the copy activity.

Vous pouvez copier les données depuis HDFS vers tout magasin de données récepteur pris en charge.You can copy data from HDFS to any supported sink data store. Consultez le tableau Magasins de données pris en charge pour obtenir la liste des magasins de données pris en charge en tant que récepteurs par l’activité de copie.For a list of data stores supported as sinks by the copy activity, see the Supported data stores table. Actuellement, Data Factory prend uniquement en charge le déplacement de données de HDFS en local vers d’autres magasins de données, mais pas l’inverse.Data factory currently supports only moving data from an on-premises HDFS to other data stores, but not for moving data from other data stores to an on-premises HDFS.

Notes

L’activité de copie ne supprime pas le fichier source une fois qu’il est copié sur la destination.Copy Activity does not delete the source file after it is successfully copied to the destination. Si vous devez supprimer le fichier source une fois qu’il est copié, créez une activité personnalisée pour supprimer le fichier et utilisez l’activité dans le pipeline.If you need to delete the source file after a successful copy, create a custom activity to delete the file and use the activity in the pipeline.

Notes

Cet article a été mis à jour pour tenir compte de l’utilisation du nouveau module Az d’Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Vous pouvez toujours utiliser le module AzureRM, qui continue à recevoir des correctifs de bogues jusqu’à au moins décembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Pour en savoir plus sur le nouveau module Az et la compatibilité avec AzureRM, consultez Présentation du nouveau module Az d’Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Pour des instructions d’installation du module Az, consultez Installer Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Activation de la connectivitéEnabling connectivity

Le service Data Factory prend en charge la connexion à des sources HDFS locales à l’aide de la passerelle de gestion des données.Data Factory service supports connecting to on-premises HDFS using the Data Management Gateway. Consultez l’article Déplacement de données entre des emplacements locaux et le cloud pour en savoir plus sur la passerelle de gestion des données et obtenir des instructions détaillées sur la configuration de la passerelle.See moving data between on-premises locations and cloud article to learn about Data Management Gateway and step-by-step instructions on setting up the gateway. Utilisez la passerelle pour vous connecter à HDFS même si elle est hébergée sur des machines virtuelles IaaS Azure.Use the gateway to connect to HDFS even if it is hosted in an Azure IaaS VM.

Notes

Assurez-vous que la passerelle de gestion des données 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.Make sure the Data Management Gateway can access to ALL the [name node server]:[name node port] and [data node servers]:[data node port] of the Hadoop cluster. 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.Default [name node port] is 50070, and default [data node port] is 50075.

Bien qu’il soit possible d’installer la passerelle sur le même ordinateur local ou la même machine virtuelle Azure que le HDFS, nous vous recommandons de l’installer sur un ordinateur ou une machine virtuelle IaaS Azure distinct(e).While you can install gateway on the same on-premises machine or the Azure VM as the HDFS, we recommend that you install the gateway on a separate machine/Azure IaaS VM. Disposer d’une passerelle sur un ordinateur distinct réduit les conflits de ressources et améliore les performances.Having gateway on a separate machine reduces resource contention and improves performance. Lorsque vous installez la passerelle sur un ordinateur distinct, l’ordinateur doit être en mesure d’accéder à l’ordinateur qui exécute le système HDFS.When you install the gateway on a separate machine, the machine should be able to access the machine with the HDFS.

Prise en mainGetting started

Vous pouvez créer un pipeline avec une activité de copie qui déplace les données d’une source HDFS à l’aide de différents outils/API.You can create a pipeline with a copy activity that moves data from a HDFS source by using different tools/APIs.

Le moyen le plus simple de créer un pipeline consiste à utiliser l’Assistant Copie.The easiest way to create a pipeline is to use the Copy Wizard. Consultez le tutoriel : Créer un pipeline avec l’activité de copie à l’aide de l’Assistant Copie pour obtenir une procédure pas à pas rapide sur la création d’un pipeline à l’aide de l’Assistant Copie de données.See Tutorial: Create a pipeline using Copy Wizard for a quick walkthrough on creating a pipeline using the Copy data wizard.

Vous pouvez également utiliser les outils suivants pour créer un pipeline : portail Azure, Visual Studio, Azure PowerShell, modèle Azure Resource Manager, API .NET et API REST.You can also use the following tools to create a pipeline: Azure portal, Visual Studio, Azure PowerShell, Azure Resource Manager template, .NET API, and REST API. Pour obtenir des instructions détaillées sur la création d’un pipeline avec une activité de copie, consultez le didacticiel sur l’activité de copie.See Copy activity tutorial for step-by-step instructions to create a pipeline with a copy activity.

Que vous utilisiez des outils ou des API, la création d’un pipeline qui déplace les données d’un magasin de données source vers un magasin de données récepteur implique les étapes suivantes :Whether you use the tools or APIs, you perform the following steps to create a pipeline that moves data from a source data store to a sink data store:

  1. Création de services liés pour lier les magasins de données d’entrée et de sortie à votre fabrique de données.Create linked services to link input and output data stores to your data factory.
  2. Création de jeux de données pour représenter les données d’entrée et de sortie de l’opération de copie.Create datasets to represent input and output data for the copy operation.
  3. Création d’un pipeline avec une activité de copie qui utilise un jeu de données en tant qu’entrée et un jeu de données en tant que sortie.Create a pipeline with a copy activity that takes a dataset as an input and a dataset as an output.

Lorsque vous utilisez l’Assistant, les définitions JSON de ces entités Data Factory (services liés, jeux de données et pipeline) sont automatiquement créées pour vous.When you use the wizard, JSON definitions for these Data Factory entities (linked services, datasets, and the pipeline) are automatically created for you. Lorsque vous utilisez des outils/API (à l’exception de l’API .NET), vous devez définir ces entités Data Factory au format JSON.When you use tools/APIs (except .NET API), you define these Data Factory entities by using the JSON format. Pour un exemple contenant des définitions JSON pour les entités Data Factory servant à copier des données à partir d’un magasin de données HDFS, consultez la section Exemple JSON : Copier des données d’une source HDFS vers Stockage Blob Azure de cet article.For a sample with JSON definitions for Data Factory entities that are used to copy data from a HDFS data store, see JSON example: Copy data from on-premises HDFS to Azure Blob section of this article.

Les sections suivantes fournissent des informations sur les propriétés JSON utilisées pour définir les entités Data Factory spécifiques à HDFS :The following sections provide details about JSON properties that are used to define Data Factory entities specific to HDFS:

Propriétés du service liéLinked service properties

Un service lié lie un magasin de données à une fabrique de données.A linked service links a data store to a data factory. Vous créez un service lié de type HDFS pour lier un système HDFS local à votre fabrique de données.You create a linked service of type Hdfs to link an on-premises HDFS to your data factory. Le tableau suivant fournit la description des éléments JSON spécifiques au service lié HDFS.The following table provides description for JSON elements specific to HDFS linked service.

PropriétéProperty DescriptionDescription ObligatoireRequired
typetype La propriété type doit être définie sur : HdfsThe type property must be set to: Hdfs OUIYes
urlurl URL vers le système HDFSURL to the HDFS OUIYes
authenticationTypeauthenticationType Anonyme ou Windows.Anonymous, or Windows.

Pour utiliser l’authentification Kerberos pour le connecteur HDFS, reportez-vous à cette section pour configurer votre environnement local en conséquence.To use Kerberos authentication for HDFS connector, refer to this section to set up your on-premises environment accordingly.
OUIYes
userNameuserName Nom d’utilisateur de l’authentification WindowsUsername for Windows authentication. Pour l’authentification Kerberos, spécifiez <username>@<domain>.com.For Kerberos authentication, specify <username>@<domain>.com. Oui (pour l’authentification Windows)Yes (for Windows Authentication)
passwordpassword Mot de passe de l’authentification WindowsPassword for Windows authentication. Oui (pour l’authentification Windows)Yes (for Windows Authentication)
gatewayNamegatewayName Nom de la passerelle que le service Data Factory doit utiliser pour se connecter au système HDFS.Name of the gateway that the Data Factory service should use to connect to the HDFS. OUIYes
encryptedCredentialencryptedCredential New-AzDataFactoryEncryptValue des informations d’accès.New-AzDataFactoryEncryptValue output of the access credential. NonNo

Utilisation de l’authentification anonymeUsing Anonymous authentication

{
    "name": "hdfs",
    "properties":
    {
        "type": "Hdfs",
        "typeProperties":
        {
            "authenticationType": "Anonymous",
            "userName": "hadoop",
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "gatewayName": "mygateway"
        }
    }
}

Utilisation de l’authentification WindowsUsing Windows authentication

{
    "name": "hdfs",
    "properties":
    {
        "type": "Hdfs",
        "typeProperties":
        {
            "authenticationType": "Windows",
            "userName": "<username>@<domain>.com (for Kerberos auth)",
            "password": "password",
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "gatewayName": "mygateway"
        }
    }
}

Propriétés du jeu de donnéesDataset properties

Pour obtenir une liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Création de jeux de données.For a full list of sections & properties available for defining datasets, see the Creating datasets article. Les sections comme la structure, la disponibilité et la stratégie d'un jeu de données JSON sont similaires pour tous les types de jeux de données (SQL Azure, Azure Blob, Azure Table, etc.).Sections such as structure, availability, and policy of a dataset JSON are similar for all dataset types (Azure SQL, Azure blob, Azure table, etc.).

La section typeProperties est différente pour chaque type de jeu de données et fournit des informations sur l’emplacement des données dans le magasin de données.The typeProperties section is different for each type of dataset and provides information about the location of the data in the data store. La section typeProperties du jeu de données de type FileShare (comprenant le jeu de données HDFS) présente les propriétés suivantesThe typeProperties section for dataset of type FileShare (which includes HDFS dataset) has the following properties

PropriétéProperty DescriptionDescription ObligatoireRequired
folderPathfolderPath Chemin d'accès au dossier.Path to the folder. Exemple : myfolderExample: myfolder

Utilisez le caractère d’échappement « \ » pour les caractères spéciaux contenus dans la chaîne.Use escape character ‘ \ ’ for special characters in the string. Par exemple : pour dossier\sous-dossier, spécifiez dossier\\sous-dossier et pour d:\dossier d’exemple, spécifiez d:\\dossier d’exemple.For example: for folder\subfolder, specify folder\\subfolder and for d:\samplefolder, specify d:\\samplefolder.

Vous pouvez également effectuer une combinaison avec la propriété partitionBy pour que les chemins d’accès de dossier soient basés sur les dates et heures de démarrage et d’arrêt de la tranche.You can combine this property with partitionBy to have folder paths based on slice start/end date-times.
OUIYes
fileNamefileName Spécifiez le nom du fichier dans l’élément folderPath si vous souhaitez que la table se réfère à un fichier spécifique du dossier.Specify the name of the file in the folderPath if you want the table to refer to a specific file in the folder. Si vous ne spécifiez aucune valeur pour cette propriété, le tableau pointe vers tous les fichiers du dossier.If you do not specify any value for this property, the table points to all files in the folder.

Lorsque fileName n’est pas spécifié pour un jeu de données de sortie, le nom du fichier généré aura ce format dans l’exemple suivant :When fileName is not specified for an output dataset, the name of the generated file would be in the following this format:

Data.<Guid>.txt (par exemple : : Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txtData.<Guid>.txt (for example: : Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt
NonNo
partitionedBypartitionedBy partitionedBy peut être utilisé pour spécifier un folderPath dynamique, fileName pour les données de série chronologique.partitionedBy can be used to specify a dynamic folderPath, filename for time series data. Exemple : folderPath peut être paramétré pour toutes les heures de données.Example: folderPath parameterized for every hour of data. NonNo
formatformat Les types de formats suivants sont pris en charge : TextFormat, JsonFormat, AvroFormat, OrcFormat et ParquetFormat.The following format types are supported: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Définissez la propriété type située sous Format sur l’une de ces valeurs.Set the type property under format to one of these values. Pour en savoir plus, consultez les sections relatives à format Text, format Json, format Avro, format Orc et format Parquet.For more information, see Text Format, Json Format, Avro Format, Orc Format, and Parquet Format sections.

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.If you want to copy files as-is between file-based stores (binary copy), skip the format section in both input and output dataset definitions.
NonNo
compressioncompression Spécifiez le type et le niveau de compression pour les données.Specify the type and level of compression for the data. Types pris en charge : GZip, Deflate, BZip2 et ZipDeflate.Supported types are: GZip, Deflate, BZip2, and ZipDeflate. Niveaux pris en charge : Optimal et Fastest.Supported levels are: Optimal and Fastest. Pour plus d’informations, consultez Formats de fichiers et de compression pris en charge dans Azure Data Factory.For more information, see File and compression formats in Azure Data Factory. NonNo

Notes

fileName et fileFilter ne peuvent pas être utilisés simultanément.filename and fileFilter cannot be used simultaneously.

Utilisation de la propriété partitionedByUsing partionedBy property

Comme mentionné dans la section précédente, vous pouvez spécifier un folderPath et un fileName dynamiques pour les données de série chronologique avec la propriété partitionedBy, les fonctions Data Factory et les variables système.As mentioned in the previous section, you can specify a dynamic folderPath and filename for time series data with the partitionedBy property, Data Factory functions, and the system variables.

Consultez les articles Création de jeux de données, Planification et exécution et Création de pipelines pour en savoir plus sur les jeux de données de série chronologique, la planification et les segments.To learn more about time series datasets, scheduling, and slices, see Creating Datasets, Scheduling & Execution, and Creating Pipelines articles.

Exemple 1 :Sample 1:

"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
    { "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],

Dans cet exemple, {Slice} est remplacé par la valeur de la variable système Data Factory SliceStart au format (AAAAMMJJHH) spécifié.In this example {Slice} is replaced with the value of Data Factory system variable SliceStart in the format (YYYYMMDDHH) specified. SliceStart fait référence à l'heure de début du segment.The SliceStart refers to start time of the slice. folderPath est différent pour chaque segment.The folderPath is different for each slice. Par exemple : wikidatagateway/wikisampledataout/2014100103 ou wikidatagateway/wikisampledataout/2014100104.For example: wikidatagateway/wikisampledataout/2014100103 or wikidatagateway/wikisampledataout/2014100104.

Exemple 2 :Sample 2:

"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
 [
    { "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
    { "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
    { "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
    { "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],

Dans cet exemple, l'année, le mois, le jour et l'heure de SliceStart sont extraits dans des variables distinctes qui sont utilisées par les propriétés folderPath et fileName.In this example, year, month, day, and time of SliceStart are extracted into separate variables that are used by folderPath and fileName properties.

Propriétés de l’activité de copieCopy activity properties

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Création de pipelines.For a full list of sections & properties available for defining activities, see the Creating Pipelines article. Les propriétés comme le nom, la description, les tables d'entrée et de sortie et les différentes stratégies sont disponibles pour tous les types d'activités.Properties such as name, description, input and output tables, and policies are available for all types of activities.

En revanche, les propriétés disponibles dans la section typeProperties de l’activité varient pour chaque type d'activité.Whereas, properties available in the typeProperties section of the activity vary with each activity type. Pour l’activité de copie, elles dépendent des types de sources et récepteurs.For Copy activity, they vary depending on the types of sources and sinks.

Pour une activité de copie, quand la source est de type FileSystemSource , les propriétés suivantes sont disponibles dans la section typeProperties :For Copy Activity, when source is of type FileSystemSource the following properties are available in typeProperties section:

FileSystemSource prend en charge les propriétés suivantes :FileSystemSource supports the following properties:

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
recursiverecursive Indique si les données sont lues de manière récursive dans les sous-dossiers ou uniquement dans le dossier spécifié.Indicates whether the data is read recursively from the sub folders or only from the specified folder. True, False (par défaut)True, False (default) NonNo

Formats de fichier et de compression pris en chargeSupported file and compression formats

Pour plus d’informations, voir Formats de fichiers et de compression pris en charge dans Azure Data Factory.See File and compression formats in Azure Data Factory article on details.

Exemple JSON : Copier des données depuis HDFS local vers Stockage Blob AzureJSON example: Copy data from on-premises HDFS to Azure Blob

Cet exemple indique comment copier des données depuis un système HDFS local vers un système Blob Storage Microsoft Azure.This sample shows how to copy data from an on-premises HDFS to Azure Blob Storage. Toutefois, les données peuvent être copiées directement vers l’un des récepteurs indiqués ici , via l’activité de copie d’Azure Data Factory.However, data can be copied directly to any of the sinks stated here using the Copy Activity in Azure Data Factory.

Cet exemple fournit des définitions JSON pour les entités Data Factory suivantes.The sample provides JSON definitions for the following Data Factory entities. Vous pouvez utiliser ces définitions pour créer un pipeline afin de copier des données de HDFS vers un Stockage Blob Azure à l’aide de Visual Studio ou d’Azure PowerShell.You can use these definitions to create a pipeline to copy data from HDFS to Azure Blob Storage by using Visual Studio or Azure PowerShell.

  1. Un service lié de type OnPremisesHdfs.A linked service of type OnPremisesHdfs.
  2. Un service lié de type AzureStorage.A linked service of type AzureStorage.
  3. Un jeu de données d’entrée de type FileShare.An input dataset of type FileShare.
  4. Un jeu de données de sortie de type AzureBlob.An output dataset of type AzureBlob.
  5. Un pipeline avec activité de copie qui utilise FileSystemSource et BlobSink.A pipeline with Copy Activity that uses FileSystemSource and BlobSink.

L’exemple copie toutes les heures les données d’un système HDFS en local vers un objet Blob Azure.The sample copies data from an on-premises HDFS to an Azure blob every hour. Les propriétés JSON utilisées dans ces exemples sont décrites dans les sections suivant les exemples.The JSON properties used in these samples are described in sections following the samples.

Dans un premier temps, configurez la passerelle de gestion des données.As a first step, set up the data management gateway. Les instructions se trouvent dans l’article Déplacement de données entre des emplacements locaux et le cloud .The instructions in the moving data between on-premises locations and cloud article.

Service lié HDFS : Cet exemple utilise l’authentification Windows.HDFS linked service: This example uses the Windows authentication. Consultez la section Service lié HDFS pour connaître les différents types d’authentification que vous pouvez utiliser.See HDFS linked service section for different types of authentication you can use.

{
    "name": "HDFSLinkedService",
    "properties":
    {
        "type": "Hdfs",
        "typeProperties":
        {
            "authenticationType": "Windows",
            "userName": "Administrator",
            "password": "password",
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "gatewayName": "mygateway"
        }
    }
}

Service lié Azure Storage :Azure Storage linked service:

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Jeu de données d’entrée HDFS : Ce jeu de données fait référence au dossier HDFS DataTransfer/UnitTest/.HDFS input dataset: This dataset refers to the HDFS folder DataTransfer/UnitTest/. Le pipeline copie tous les fichiers de son dossier vers la destination.The pipeline copies all the files in this folder to the destination.

La définition de « external » : « true» informe le service Data Factory qu’il s’agit d’un jeu de données qui est externe à Data Factory et non produit par une activité dans Data Factory.Setting “external”: ”true” informs the Data Factory service that the dataset is external to the data factory and is not produced by an activity in the data factory.

{
    "name": "InputDataset",
    "properties": {
        "type": "FileShare",
        "linkedServiceName": "HDFSLinkedService",
        "typeProperties": {
            "folderPath": "DataTransfer/UnitTest/"
        },
        "external": true,
        "availability": {
            "frequency": "Hour",
            "interval":  1
        }
    }
}

Jeu de données de sortie d'objet Blob Azure :Azure Blob output dataset:

Les données sont écrites dans un nouvel objet blob toutes les heures (fréquence : heure, intervalle : 1).Data is written to a new blob every hour (frequency: hour, interval: 1). Le chemin d’accès du dossier pour l’objet blob est évalué dynamiquement en fonction de l’heure de début du segment en cours de traitement.The folder path for the blob is dynamically evaluated based on the start time of the slice that is being processed. Le chemin d'accès du dossier utilise l'année, le mois, le jour et l'heure de l'heure de début.The folder path uses year, month, day, and hours parts of the start time.

{
    "name": "OutputDataset",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/hdfs/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ]
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Activité de copie dans un pipeline avec une source Système de fichiers et un récepteur blob :A copy activity in a pipeline with File System source and Blob sink:

Le pipeline contient une activité de copie qui est configurée pour utiliser ces jeux de données d'entrée et de sortie, et qui est planifiée pour s'exécuter toutes les heures.The pipeline contains a Copy Activity that is configured to use these input and output datasets and is scheduled to run every hour. Dans la définition du pipeline JSON, le type source est défini sur FileSystemSource et le type sink est défini sur BlobSink.In the pipeline JSON definition, the source type is set to FileSystemSource and sink type is set to BlobSink. La requête SQL spécifiée pour la propriété query sélectionne les données de la dernière heure à copier.The SQL query specified for the query property selects the data in the past hour to copy.

{
    "name": "pipeline",
    "properties":
    {
        "activities":
        [
            {
                "name": "HdfsToBlobCopy",
                "inputs": [ {"name": "InputDataset"} ],
                "outputs": [ {"name": "OutputDataset"} ],
                "type": "Copy",
                "typeProperties":
                {
                    "source":
                    {
                        "type": "FileSystemSource"
                    },
                    "sink":
                    {
                        "type": "BlobSink"
                    }
                },
                "policy":
                {
                    "concurrency": 1,
                    "executionPriorityOrder": "NewestFirst",
                    "retry": 1,
                    "timeout": "00:05:00"
                }
            }
        ],
        "start": "2014-06-01T18:00:00Z",
        "end": "2014-06-01T19:00:00Z"
    }
}

Utilisation de l’authentification Kerberos pour le connecteur HDFSUse Kerberos authentication for HDFS connector

Il existe deux options de configuration de l’environnement local afin d’utiliser l’authentification Kerberos dans le connecteur HDFS.There are two options to set up the on-premises environment so as to use Kerberos Authentication in HDFS connector. Vous pouvez choisir celle qui correspond mieux à votre situation.You can choose the one better fits your case.

Option 1 : Joindre l’ordinateur de la passerelle au domaine KerberosOption 1: Join gateway machine in Kerberos realm

Condition :Requirement:

  • L’ordinateur de passerelle doit rejoindre le domaine Kerberos et ne peut rejoindre aucun domaine Windows.The gateway machine needs to join the Kerberos realm and can’t join any Windows domain.

Procédure de configuration :How to configure:

Sur l’ordinateur de la passerelle :On gateway machine:

  1. Exécutez l’utilitaire Ksetup pour configurer le serveur Kerberos KDC et le domaine.Run the Ksetup utility to configure the Kerberos KDC server and realm.

    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.The machine must be configured as a member of a workgroup since a Kerberos realm is different from a Windows domain. Pour ce faire, définissez le domaine Kerberos et ajoutez un serveur KDC comme suit.This can be achieved by setting the Kerberos realm and adding a KDC server as follows. Remplacez REALM.COM par votre propre domaine respectif en fonction des besoins.Replace REALM.COM with your own respective realm as needed.

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

    Redémarrez l’ordinateur après avoir exécuté ces 2 commandes.Restart the machine after executing these 2 commands.

  2. Vérifiez la configuration avec la commande Ksetup.Verify the configuration with Ksetup command. La sortie doit être semblable à :The output should be like:

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

Dans Azure Data Factory :In Azure Data Factory:

  • 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.Configure the HDFS connector using Windows authentication together with your Kerberos principal name and password to connect to the HDFS data source. Vérifiez les détails de configuration dans la section sur les propriétés du service lié HDFS.Check HDFS Linked Service properties section on configuration details.

Option 2 : Activer l’approbation mutuelle entre le domaine Windows et le domaine KerberosOption 2: Enable mutual trust between Windows domain and Kerberos realm

Condition :Requirement:

  • L’ordinateur de passerelle doit rejoindre un domaine Windows.The gateway machine must join a Windows domain.
  • Vous avez besoin d’autorisations pour mettre à jour les paramètres du contrôleur de domaine.You need permission to update the domain controller's settings.

Procédure de configuration :How to configure:

Notes

Remplacez REALM.COM et AD.COM dans le didacticiel suivant par votre propre domaine et contrôleur de domaine respectifs en fonction des besoins.Replace REALM.COM and AD.COM in the following tutorial with your own respective realm and domain controller as needed.

Sur le serveur KDC :On KDC server:

  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.Edit the KDC configuration in krb5.conf file to let KDC trust Windows Domain referring to the following configuration template. Par défaut, la configuration se trouve dans /etc/krb5.conf.By default, the configuration is located at /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 = .
         }
    

    Redémarrez le service KDC après la configuration.Restart the KDC service after configuration.

  2. Préparez un fichier principal nommé krbtgt/REALM.COM@AD.COM dans le serveur KDC avec la commande suivante :Prepare a principal named krbtgt/REALM.COM@AD.COM in KDC server with the following command:

        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/\@.*//.In hadoop.security.auth_to_local HDFS service configuration file, add RULE:[1:$1@$0](.*\@AD.COM)s/\@.*//.

Sur le contrôleur de domaine :On domain controller:

  1. Exécutez les commandes Ksetup suivantes pour ajouter une entrée de domaine :Run the following Ksetup commands to add a realm entry:

        C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
        C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    
  2. Établir l’approbation entre le domaine Windows et le domaine Kerberos.Establish trust from Windows Domain to Kerberos Realm. [password] correspond au mot de passe pour le principal krbtgt/REALM.COM@AD.COM.[password] is the password for the principal krbtgt/REALM.COM@AD.COM.

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

    1. Accédez à 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 Modifier.Go to Server Manager > Group Policy Management > Domain > Group Policy Objects > Default or Active Domain Policy, and Edit.

    2. Dans la fenêtre contextuelle Éditeur de gestion des stratégies de groupe, accédez à Configuration 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.In the Group Policy Management Editor popup window, go to Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options, and configure Network security: Configure Encryption types allowed for Kerberos.

    3. Sélectionnez l’algorithme de chiffrement à utiliser pour vous connecter à KDC.Select the encryption algorithm you want to use when connect to KDC. En règle générale, vous pouvez simplement sélectionner toutes les options.Commonly, you can simply select all the options.

      Configuration des types de chiffrement pour Kerberos

    4. Utilisez la commande Ksetup pour spécifier l’algorithme de chiffrement à utiliser dans le domaine spécifique.Use Ksetup command to specify the encryption algorithm to be used on the specific REALM.

           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 afin de pouvoir utiliser le principal Kerberos dans un domaine Windows.Create the mapping between the domain account and Kerberos principal, in order to use Kerberos principal in Windows Domain.

    1. Démarrez Outils d’administration > Utilisateurs et ordinateurs Active Directory.Start the Administrative tools > Active Directory Users and Computers.

    2. Pour configurer les fonctionnalités avancées, cliquez sur Affichage > Fonctionnalités avancées.Configure advanced features by clicking View > Advanced Features.

    3. Recherchez le compte pour lequel vous souhaitez créer des mappages, cliquez avec le bouton droit pour afficher Mappages des noms > cliquez sur l’onglet Noms Kerberos.Locate the account to which you want to create mappings, and right-click to view Name Mappings > click Kerberos Names tab.

    4. Ajoutez un principal provenant du domaine.Add a principal from the realm.

      Mappage des identités de sécurité

Sur l’ordinateur de la passerelle :On gateway machine:

  • Exécutez les commandes Ksetup suivantes pour ajouter une entrée de domaine.Run the following Ksetup commands to add a realm entry.

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

Dans Azure Data Factory :In Azure Data Factory:

  • 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.Configure the HDFS connector using Windows authentication together with either your Domain Account or Kerberos Principal to connect to the HDFS data source. Vérifiez les détails de configuration dans la section sur les propriétés du service lié HDFS.Check HDFS Linked Service properties section on configuration details.

Notes

Pour savoir comment mapper des colonnes d’un jeu de données source à des colonnes d’un jeu de données récepteur, consultez Mapping dataset columns in Azure Data Factory (Mappage des colonnes des jeux de données dans Azure Data Factory).To map columns from source dataset to columns from sink dataset, see Mapping dataset columns in Azure Data Factory.

Performances et réglagePerformance and Tuning

Consultez l’article Guide sur les performances et le réglage de l’activité de copie pour en savoir plus sur les facteurs clés affectant les performances de déplacement des données (activité de copie) dans Azure Data Factory et les différentes manières de les optimiser.See Copy Activity Performance & Tuning Guide to learn about key factors that impact performance of data movement (Copy Activity) in Azure Data Factory and various ways to optimize it.