Utiliser Azure Data Factory pour migrer des données d’un serveur Netezza local vers AzureUse Azure Data Factory to migrate data from an on-premises Netezza server to Azure

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Azure Data Factory fournit un mécanisme performant, robuste et économique pour migrer des données à grande échelle d’un serveur Netezza local vers votre compte de stockage Azure ou base de données Azure Synapse Analytics.Azure Data Factory provides a performant, robust, and cost-effective mechanism to migrate data at scale from an on-premises Netezza server to your Azure storage account or Azure Synapse Analytics database.

Cet article fournit les informations suivantes à l’attention des ingénieurs et des développeurs de données :This article provides the following information for data engineers and developers:

  • PerformancesPerformance
  • Résilience de copieCopy resilience
  • Sécurité du réseauNetwork security
  • Architecture de solution de haut niveauHigh-level solution architecture
  • Meilleures pratiques en matière d’implémentationImplementation best practices

PerformancesPerformance

Azure Data Factory offre une architecture serverless qui autorise le parallélisme à différents niveaux.Azure Data Factory offers a serverless architecture that allows parallelism at various levels. Si vous êtes développeur, cela signifie que vous pouvez créer des pipelines pour utiliser pleinement la bande passante du réseau et de la base de données afin d’optimiser le débit du déplacement des données pour votre environnement.If you're a developer, this means you can build pipelines to fully use both network and database bandwidth to maximize data movement throughput for your environment.

Diagramme des performances

Le diagramme précédent peut être interprété comme suit :The preceding diagram can be interpreted as follows:

  • Une seule activité de copie peut tirer parti de plusieurs ressources de calcul évolutives.A single copy activity can take advantage of scalable compute resources. Quand vous utilisez Azure Integration Runtime, vous pouvez spécifier jusqu’à 256 DIU pour chaque activité de copie de manière serverless.When you use Azure Integration Runtime, you can specify up to 256 DIUs for each copy activity in a serverless manner. Avec un runtime d’intégration auto-hébergé (IR auto-hébergé), vous pouvez effectuer un scale-up manuel de votre machine ou un scale-out vers plusieurs machines (jusqu’à quatre nœuds), de sorte qu’une activité de copie unique distribue sa partition sur tous les nœuds.With a self-hosted integration runtime (self-hosted IR), you can manually scale up the machine or scale out to multiple machines (up to four nodes), and a single copy activity distributes its partition across all nodes.

  • Une activité de copie unique lit et écrit dans le magasin de données à l'aide de plusieurs conversations.A single copy activity reads from and writes to the data store by using multiple threads.

  • Le flux de contrôle Azure Data Factory peut démarrer plusieurs activités de copie en parallèle.Azure Data Factory control flow can start multiple copy activities in parallel. Par exemple, il peut les démarrer à l’aide d’une boucle For Each.For example, it can start them by using a For Each loop.

Pour plus d’informations, consultez Guide sur les performances et la scalabilité de l’activité de copie.For more information, see Copy activity performance and scalability guide.

RésilienceResilience

Dans une exécution d’activité de copie unique, Azure Data Factory intègre un mécanisme de nouvelle tentative qui lui permet de gérer un certain niveau d’échecs temporaires dans les magasins de données ou dans le réseau sous-jacent.Within a single copy activity run, Azure Data Factory has a built-in retry mechanism, which enables it to handle a certain level of transient failures in the data stores or in the underlying network.

Avec l’activité de copie dans Azure Data Factory, quand vous copiez des données entre les magasins de données source et récepteur, vous avez deux moyens de traiter les lignes incompatibles.With Azure Data Factory copy activity, when you copy data between source and sink data stores, you have two ways to handle incompatible rows. Vous pouvez abandonner et laisser en échec l’activité de copie ou continuer à copier le reste des données en ignorant les lignes de données incompatibles.You can either abort and fail the copy activity or continue to copy the rest of the data by skipping the incompatible data rows. En outre, pour déterminer la cause de l’échec, vous pouvez consigner les lignes incompatibles dans le stockage d’objets blob Azure ou Azure Data Lake Store, corriger les données sur la source de données et retenter l’activité de copie.In addition, to learn the cause of the failure, you can log the incompatible rows in Azure Blob storage or Azure Data Lake Store, fix the data on the data source, and retry the copy activity.

Sécurité du réseauNetwork security

Par défaut, Azure Data Factory transfère les données du serveur Netezza local vers un compte de stockage Azure ou une base de données Azure Synapse Analytics en utilisant une connexion chiffrée via HTTPS (Hypertext Transfer Protocol Secure).By default, Azure Data Factory transfers data from the on-premises Netezza server to an Azure storage account or Azure Synapse Analytics database by using an encrypted connection over Hypertext Transfer Protocol Secure (HTTPS). Le protocole HTTPS assure le chiffrement des données en transit et empêche les écoutes clandestines et les attaques de l’intercepteur.HTTPS provides data encryption in transit and prevents eavesdropping and man-in-the-middle attacks.

Sinon, si vous ne souhaitez pas que les données soient transférées via l’Internet public, vous pouvez contribuer à obtenir une sécurité accrue en transférant les données via un lien d’appairage privé et via Azure Express Route.Alternatively, if you don't want data to be transferred over the public internet, you can help achieve higher security by transferring data over a private peering link via Azure Express Route.

La section suivante explique comment obtenir une sécurité plus élevée.The next section discusses how to achieve higher security.

Architecture de solutionSolution architecture

Cette section présente deux façons de migrer vos données.This section discusses two ways to migrate your data.

Migrer des données sur l’Internet publicMigrate data over the public internet

Migrer des données sur l’Internet public

Le diagramme précédent peut être interprété comme suit :The preceding diagram can be interpreted as follows:

  • Dans cette architecture, vous transférez les données de manière sécurisée en utilisant HTTPS via l’Internet public.In this architecture, you transfer data securely by using HTTPS over the public internet.

  • Pour obtenir cette architecture, vous devez installer le runtime d’intégration Azure Data Factory (auto-hébergé) sur une machine Windows derrière un pare-feu d’entreprise.To achieve this architecture, you need to install the Azure Data Factory integration runtime (self-hosted) on a Windows machine behind a corporate firewall. Assurez-vous que ce runtime d’intégration peut accéder directement au serveur Netezza.Make sure that this integration runtime can directly access the Netezza server. Pour utiliser pleinement votre bande passante réseau et la bande passante des magasins de données afin de copier les données, vous pouvez effectuer un scale-up manuel de votre machine ou un scale-out vers plusieurs machines.To fully use your network and data stores bandwidth to copy data, you can manually scale up your machine or scale out to multiple machines.

  • À l’aide de cette architecture, vous pouvez migrer des données d’instantanés initiales et des données delta.By using this architecture, you can migrate both initial snapshot data and delta data.

Migrer des données sur un réseau privéMigrate data over a private network

Migrer des données sur un réseau privé

Le diagramme précédent peut être interprété comme suit :The preceding diagram can be interpreted as follows:

  • Dans cette architecture, vous migrez les données via un lien d’appairage privé et via Azure Express Route ; les données ne transitent jamais par l’Internet public.In this architecture, you migrate data over a private peering link via Azure Express Route, and data never traverses over the public internet.

  • Pour réaliser cette architecture, vous devez installer le runtime d’intégration Azure Data Factory (auto-hébergé) sur une machine virtuelle Windows au sein de votre réseau virtuel Azure.To achieve this architecture, you need to install the Azure Data Factory integration runtime (self-hosted) on a Windows virtual machine (VM) within your Azure virtual network. Pour utiliser pleinement votre bande passante réseau et la bande passante des magasins de données afin de copier les données, vous pouvez effectuer un scale-up manuel de votre machine virtuelle ou un scale-out vers plusieurs machines virtuelles.To fully use your network and data stores bandwidth to copy data, you can manually scale up your VM or scale out to multiple VMs.

  • À l’aide de cette architecture, vous pouvez migrer des données d’instantanés initiales et des données delta.By using this architecture, you can migrate both initial snapshot data and delta data.

Mettre en œuvre les bonnes pratiquesImplement best practices

Gérer l’authentification et les informations d’identificationManage authentication and credentials

Migrer les données d’instantané initialesMigrate initial snapshot data

Pour les petites tables (c’est-à-dire, celle dont le volume est inférieur à 100 Go ou peut peuvent être migrées vers Azure en deux heures), vous pouvez faire en sorte que chaque tâche de copie charge les données par table.For small tables (that is, tables with a volume of less than 100 GB or that can be migrated to Azure within two hours), you can make each copy job load data per table. Afin d’obtenir un meilleur débit, vous pouvez exécuter plusieurs tâches de copie Azure Data Factory pour charger des tables distinctes simultanément.For greater throughput, you can run multiple Azure Data Factory copy jobs to load separate tables concurrently.

Pour chaque tâche de copie, afin d’exécuter des requêtes parallèles et de copier les données par partition, vous pouvez également atteindre un certain niveau de parallélisme en utilisant le paramètre de propriété parallelCopies avec l’une des options de partition de données suivantes :Within each copy job, to run parallel queries and copy data by partitions, you can also reach some level of parallelism by using the parallelCopies property setting with either of the following data partition options:

  • Pour une meilleure efficacité, nous vous encourageons à démarrer à partir d’une tranche de données.For help achieve greater efficiency, we encourage you to start from a data slice. Assurez-vous que la valeur du paramètre parallelCopies est inférieure au nombre total de partitions de la tranche de données dans votre table sur le serveur Netezza.Make sure that the value in the parallelCopies setting is less than the total number of data-slice partitions in your table on the Netezza server.

  • Si le volume de chaque partition de la tranche de données est toujours volumineux (par exemple, 10 Go ou plus), nous vous encourageons à basculer vers une partition par spécification de plages de valeurs dynamique.If the volume of each data-slice partition is still large (for example, 10 GB or greater), we encourage you to switch to a dynamic range partition. Cette option offre une plus grande souplesse pour définir le nombre de partitions et le volume de chaque partition par colonne de partition, la limite supérieure et la limite inférieure.This option gives you greater flexibility to define the number of partitions and the volume of each partition by partition column, upper bound and lower bound.

Pour les tables plus grandes (c’est-à-dire, les tables dont le volume est de 100 Go ou plus, ou qui ne peuvent pas être migrées vers Azure dans un délai de deux heures), nous vous recommandons de partitionner les données par requête personnalisée, puis de faire en sorte que chaque tâche de copie copie une partition à la fois.For larger tables (that is, tables with a volume of 100 GB or greater or that can't be migrated to Azure within two hours), we recommend that you partition the data by custom query and then make each copy-job copy one partition at a time. Pour un meilleur débit, vous pouvez exécuter plusieurs tâches de copie Azure Data Factory simultanément.For better throughput, you can run multiple Azure Data Factory copy jobs concurrently. Pour que chaque cible de tâche de copie charge une partition par requête personnalisée, vous pouvez augmenter le débit en activant le parallélisme via une tranche de données ou une plage dynamique.For each copy-job target of loading one partition by custom query, you can increase throughput by enabling parallelism via either data slice or dynamic range.

Si une tâche de copie échoue en raison d’un problème temporaire de réseau ou de magasin de données, vous pouvez réexécuter la tâche de copie ayant échoué pour recharger cette partition spécifique à partir de la table.If any copy job fails because of a network or data store transient issue, you can rerun the failed copy job to reload that specific partition from the table. Les autres tâches de copie qui chargent d’autres partitions ne sont pas affectées.Other copy jobs that load other partitions aren't affected.

Quand vous chargez des données dans une base de données Azure Synapse Analytics, nous vous suggérons d’activer PolyBase dans la tâche de copie avec le stockage d’objets blob Azure en guise de préproduction.When you load data into an Azure Synapse Analytics database, we suggest that you enable PolyBase within the copy job with Azure Blob storage as staging.

Migrer des données deltaMigrate delta data

Pour identifier les lignes nouvelles ou mises à jour de votre table, utilisez une colonne timestamp ou une clé d’incrémentation dans le schéma.To identify the new or updated rows from your table, use a timestamp column or an incrementing key within the schema. Vous pouvez ensuite stocker la valeur la plus récente en tant que limite supérieure dans une table externe, puis l’utiliser pour filtrer les données delta la prochaine fois que vous chargez des données.You can then store the latest value as a high watermark in an external table and then use it to filter the delta data the next time you load data.

Chaque table peut utiliser une colonne de limite différente pour identifier ses lignes nouvelles ou mises à jour.Each table can use a different watermark column to identify its new or updated rows. Nous vous suggérons de créer une table de contrôle externe.We suggest that you create an external control table. Dans la table, chaque ligne représente une table sur le serveur Netezza avec son nom de colonne de limite spécifique et sa valeur de limite supérieure.In the table, each row represents one table on the Netezza server with its specific watermark column name and high watermark value.

Configurer un runtime d’intégration auto-hébergéConfigure a self-hosted integration runtime

Si vous migrez des données à partir du serveur Netezza vers Azure, que le serveur soit local derrière votre pare-feu d’entreprise ou dans un environnement de réseau virtuel, vous devez installer un runtime d’intégration auto-hébergé sur une machine Windows ou une machine virtuelle, qui est le moteur utilisé pour le déplacement des données.If you're migrating data from the Netezza server to Azure, whether the server is on-premises behind your corporation firewall or within a virtual network environment, you need to install a self-hosted IR on a Windows machine or VM, which is the engine that's used to move data. Quand vous installez le runtime d’intégration auto-hébergé, nous vous recommandons l’approche suivante :As you're installing the self-hosted IR, we recommend the following approach:

  • Pour chaque machine Windows ou machine virtuelle, commencez avec une configuration de 32 processeurs virtuels et de 128 Go de mémoire.For each Windows machine or VM, start with a configuration of 32 vCPU and 128-GB memory. Vous pouvez continuer à superviser l’utilisation du processeur et de la mémoire de la machine de runtime d’intégration pendant la migration des données afin de déterminer si vous devez continuer le scale-up de la machine pour améliorer les performances ou effectuer un scale-down de la machine pour réduire les coûts.You can keep monitoring the CPU and memory usage of the IR machine during the data migration to see whether you need to further scale up the machine for better performance or scale down the machine to save cost.

  • Vous pouvez également effectuer un scale-out en associant jusqu’à quatre nœuds à un seul runtime d’intégration auto-hébergé.You can also scale out by associating up to four nodes with a single self-hosted IR. Une seule tâche de copie exécutée sur un runtime d’intégration auto-hébergé applique automatiquement tous les nœuds de machine virtuelle pour copier les données en parallèle.A single copy job that's running against a self-hosted IR automatically applies all VM nodes to copy the data in parallel. Pour une haute disponibilité, commencez par quatre nœuds de machine virtuelle afin d’éviter un point de défaillance unique pendant la migration des données.For high availability, start with four VM nodes to avoid a single point of failure during the data migration.

Limiter vos partitionsLimit your partitions

La bonne pratique est de mener une preuve de concept (POC) par rapport aux performances avec un exemple de jeu de données représentatif, afin de déterminer une taille de partition appropriée pour chaque activité de copie.As a best practice, conduct a performance proof of concept (POC) with a representative sample dataset, so that you can determine an appropriate partition size for each copy activity. Nous vous suggérons de charger chaque partition sur Azure dans un délai de deux heures.We suggest that you load each partition to Azure within two hours.

Pour copier une table, commencez par une seule activité de copie avec une seule machine de runtime d’intégration auto-hébergé.To copy a table, start with a single copy activity with a single, self-hosted IR machine. Augmentez progressivement le paramètre parallelCopies en fonction du nombre de partitions de tranche de données dans votre table.Gradually increase the parallelCopies setting based on the number of data-slice partitions in your table. Déterminez si la totalité de la table peut être chargée sur Azure dans un délai de deux heures, en fonction du débit qui résulte de la tâche de copie.See whether the entire table can be loaded to Azure within two hours, according to the throughput that results from the copy job.

Si elle ne peut pas être chargée sur Azure dans un délai de deux heures et que la capacité du nœud de runtime d’intégration auto-hébergé et du magasin de données n’est pas entièrement utilisée, augmentez progressivement le nombre d’activités de copie simultanées jusqu’à atteindre la limite de votre réseau ou la bande passante limite des magasins de données.If it can't be loaded to Azure within two hours, and the capacity of the self-hosted IR node and the data store are not fully used, gradually increase the number of concurrent copy activities until you reach the limit of your network or the bandwidth limit of the data stores.

Poursuivez la supervision de l’utilisation du processeur et de la mémoire sur la machine de runtime d’intégration auto-hébergé et préparez-vous à effectuer un scale-up de la machine ou un scale-out vers plusieurs machines quand vous voyez que le processeur et la mémoire sont entièrement utilisées.Keep monitoring the CPU and memory usage on the self-hosted IR machine, and be ready to scale up the machine or scale out to multiple machines when you see that the CPU and memory are fully used.

Quand vous rencontrez des erreurs de limitation, telles que signalées par l’activité de copie d’Azure Data Factory, réduisez le paramètre d’accès simultané ou parallelCopies dans Azure Data Factory, ou envisagez d’augmenter les limites de bande passante ou IOPS (opérations d’E/S par seconde) des magasins de données et du réseau.When you encounter throttling errors, as reported by Azure Data Factory copy activity, either reduce the concurrency or parallelCopies setting in Azure Data Factory, or consider increasing the bandwidth or I/O operations per second (IOPS) limits of the network and data stores.

Estimer vos tarifsEstimate your pricing

Considérez le pipeline suivant, construit pour migrer des données à partir du serveur Netezza local vers une base de données Azure Synapse Analytics :Consider the following pipeline, which is constructed to migrate data from the on-premises Netezza server to an Azure Synapse Analytics database:

Pipeline des tarifs

Supposons que les affirmations suivantes sont vraies :Let's assume that the following statements are true:

  • Le volume total de données est de 50 téraoctets (to).The total data volume is 50 terabytes (TB).

  • Nous migrons des données à l’aide de la première architecture de solution (le serveur Netezza local derrière le pare-feu).We're migrating data by using first-solution architecture (the Netezza server is on-premises, behind the firewall).

  • Le volume de 50 To est divisé en 500 partitions et chaque activité de copie déplace une partition.The 50-TB volume is divided into 500 partitions, and each copy activity moves one partition.

  • Chaque activité de copie est configurée avec un runtime d’intégration auto-hébergé sur quatre machines et atteint un débit de 20 mégaoctets par seconde (Mo/s).Each copy activity is configured with one self-hosted IR against four machines and achieves a throughput of 20 megabytes per second (MBps). (Dans l’activité de copie, parallelCopies a pour valeur 4 et chaque thread de chargement de données à partir de la table atteint un débit de 5 Mbits/s.)(Within copy activity, parallelCopies is set to 4, and each thread to load data from the table achieves a 5-MBps throughput.)

  • L’accès concurrentiel ForEach est défini sur 3 et le débit agrégé est de 60 Mbits/s.The ForEach concurrency is set to 3, and the aggregate throughput is 60 MBps.

  • Au total, il faut 243 heures pour réaliser la migration.In total, it takes 243 hours to complete the migration.

En fonction des hypothèses précédentes, voici les tarifs estimés :Based on the preceding assumptions, here's the estimated price:

Tableau des tarifs

Notes

Les tarifs indiqués dans le tableau précédent sont hypothétiques.The pricing shown in the preceding table is hypothetical. Vos tarifs réels dépendent du débit réel dans votre environnement.Your actual pricing depends on the actual throughput in your environment. Le prix de la machine Windows (avec le runtime d’intégration auto-hébergé installé) n’est pas inclus.The price for the Windows machine (with the self-hosted IR installed) is not included.

Références supplémentairesAdditional references

Pour plus d’informations, consultez les articles et guides suivants :For more information, see the following articles and guides:

Étapes suivantesNext steps