Share via


Copiar recursos de otimização do desempenho da atividade Copy

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

Este artigo descreve os recursos de otimização do desempenho da atividade de cópia que você pode aproveitar nos pipelines do Azure Data Factory e do Synapse.

Configurando recursos de desempenho com interface do usuário

Ao selecionar um atividade Copy na tela do editor de pipeline e escolher a guia Configurações na área de configuração de atividade abaixo da tela, você verá opções para configurar todos os recursos de desempenho detalhados abaixo.

Shows the Copy activity performance features on the Settings tab for the activity in the pipeline editor.

Unidades de Integração de Dados

Uma Unidade de Integração de Dados é uma medida que representa a potência (uma combinação de CPU, memória e alocação de recursos da rede) de uma unidade única no serviço. A Unidade de Integração de Dados se aplica somente ao runtime de integração do Azure, mas não ao runtime de integração auto-hospedado.

A quantidade de DIUs alocadas para capacitar a execução de uma atividade Copy está entre duas e 256. Se não for especificado ou você escolher "Auto" na interface do usuário, o serviço aplicará dinamicamente a configuração ideal para DIUs com base no seu par origem-coletor e no padrão de dados. A tabela a seguir lista os intervalos de DIUs compatíveis e o comportamento padrão em diferentes cenários de cópia:

Copiar cenário Intervalo de DIUs compatível DIUs padrão determinadas pelo serviço
Entre repositórios de arquivos - Copiar de ou para um único arquivo: 2-4
- Copiar de e para vários arquivos: 2-256 dependendo do número e tamanho dos arquivos

Por exemplo, se você copiar dados de uma pasta com quatro arquivos grandes e optar por preservar a hierarquia, a quantidade máxima efetiva de DIUs será 16, Quando você opta por mesclar o arquivo, a quantidade máxima efetiva de DIUs é 4.
Entre 4 e 32, dependendo do número e tamanho dos arquivos
Do repositório de arquivos para um repositório que não seja de arquivos - Cópia de um único arquivo: 2-4
- Copiar de vários arquivos: 2-256 dependendo do número e tamanho dos arquivos

Por exemplo, se você copiar dados de uma pasta com quatro arquivos grandes, a quantidade máxima efetiva de DIUs será 16.
- Copiar para o Banco de Dados SQL do Azure ou o Azure Cosmos DB: entre 4 e 16 dependendo da camada do coletor (DTUs/RUs) e do padrão do arquivo de origem
- Copiar dados para o Azure Synapse Analytics usando o PolyBase ou a instrução COPY: 2
- Outro cenário: 4
Do repositório que não é de arquivos para o repositório de arquivos - Copiar de armazenamentos de dados com a opção de partição habilitada (incluindo Banco de Dados do Azure para PostgreSQL, Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure, Azure Synapse Analytics, Oracle, Netezza, Microsoft SQL Server e Teradata): de 2 a 256 ao gravar em uma pasta e de 2 a 4 ao gravar em um único arquivo. Observe que uma partição de dados de origem pode usar até 4 DIUs.
- Outros cenários: de 2 a 4
- Copiar do REST ou HTTP: 1
- Copiar do Amazon Redshift usando UNLOAD: 2
- Outro cenário: 4
Entre repositórios que não são de arquivos - Copiar de armazenamentos de dados com a opção de partição habilitada (incluindo Banco de Dados do Azure para PostgreSQL, Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure, Azure Synapse Analytics, Oracle, Netezza, Microsoft SQL Server e Teradata): de 2 a 256 ao gravar em uma pasta e de 2 a 4 ao gravar em um único arquivo. Observe que uma partição de dados de origem pode usar até 4 DIUs.
- Outros cenários: de 2 a 4
- Copiar do REST ou HTTP: 1
- Outro cenário: 4

Você pode ver as DIUs usadas para cada execução de cópia na tela de monitoramento da atividade Copy ou na saída da atividade. Para obter mais informações, confira Monitoramento da atividade Copy. Para substituir esse padrão, especifique um valor para a propriedade dataIntegrationUnits da seguinte maneira. O número real de DIUs que a operação de cópia usa na execução é igual ou menor que o valor configurado, dependendo do seu padrão de dados.

Você será cobrado da seguinte forma: n º de DIUs usadas * duração da cópia * preço da unidade/hora por DIU. Veja os preços atuais aqui. A moeda local e descontos separados podem ser aplicáveis a depender do tipo de assinatura.

Exemplo:

"activities":[
    {
        "name": "Sample copy activity",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "BlobSource",
            },
            "sink": {
                "type": "AzureDataLakeStoreSink"
            },
            "dataIntegrationUnits": 128
        }
    }
]

Escalabilidade do Integration Runtime auto-hospedado

Se você quiser obter uma taxa de transferência mais alta, poderá escalar o IR auto-hospedado verticalmente ou horizontalmente:

  • Se a CPU e a memória disponível no nó do IR auto-hospedado não estiverem completamente utilizadas, mas a execução de tarefas simultâneas está atingindo o limite, você deve aumentar o número de tarefas simultâneas que podem ser executadas em um nó. Consulte este link para obter instruções.
  • Se, por outro lado, o uso da CPU estiver alto no nó IR auto-hospedado ou se a memória disponível estiver com baixo uso, você poderá adicionar um novo nó para ajudar a escalar horizontalmente a carga entre os vários nós. Consulte este link para obter instruções.

Observe que, nos cenários a seguir, a execução de uma única atividade Copy pode aproveitar vários nós de IR auto-hospedados:

Cópia paralela

Você pode definir a cópia paralela (parallelCopies propriedade na definição JSON da atividade Copy ou Degree of parallelism definir na guia Configurações das propriedades da atividade Copy na interface do usuário) na atividade Copy para indicar o paralelismo que você deseja que a atividade Copy use. Você pode considerar essa propriedade como o número máximo de threads na atividade Copy que leem a partir de sua origem ou gravam em seus armazenamentos do coletor de dados em paralelo.

A cópia paralela é ortogonal em relação às Unidades de Integração de Dados ou aos nós de IR auto-hospedados. Ela é contada em todos os nós de DIUs ou de IR auto-hospedados.

Para cada execução da atividade de cópia, por padrão, o serviço aplica a configuração de cópia paralela ideal dinamicamente com base no seu par origem-coletor e no padrão de dados.

Dica

O comportamento padrão da cópia paralela geralmente oferece a melhor taxa de transferência, que é determinada automaticamente pelo serviço com base em seu par origem-coletor, no padrão de dados e no número de DIUs ou na CPU/memória/contagem de nós do IR auto-hospedado. Consulte Solucionar problemas de desempenho da atividade Copy para saber quando ajustar a cópia paralela.

A tabela a seguir lista comportamentos da cópia paralela:

Copiar cenário Comportamento da cópia paralela
Entre repositórios de arquivos parallelCopies determina o paralelismo no nível de arquivo. O agrupamento em cada arquivo ocorre em segundo plano de forma automática e transparente. Ele foi projetado para usar o melhor e mais adequado tamanho de parte para um determinado tipo de armazenamento de dados para carregar dados em paralelo.

O número real de cópias paralelas que a atividade Copy usa no tempo de execução não é superior ao número de arquivos existentes. Se o comportamento da cópia for mergeFile no coletor de arquivos, a atividade Copy não poderá aproveitar o paralelismo no nível de arquivo.
Do repositório de arquivos para um repositório que não seja de arquivos - Ao copiar dados no Banco de Dados SQL do Azure ou no Azure Cosmos DB, a cópia paralela padrão também depende da camada do coletor (número de DTUs/RUs).
-Ao copiar dados na tabela do Azure, o valor padrão para cópia paralela é 4.
Do repositório que não é de arquivos para o repositório de arquivos - Ao copiar dados de um armazenamento de dados com a opção de partição habilitada (incluindo Banco de Dados SQL, Instância Gerenciada de SQL do Azure, Azure Synapse Analytics, Oracle, RDS da Amazon para Oracle, Netezza, SAP HANA, SAP Open Hub, SAP Tablee SQL Server, RDS da Amazon para SQL Server e Teradata), o valor padrão para cópia paralela é 4. O número real de cópias paralelas que a atividade Copy usa no tempo de execução não é superior ao número de partições de dados existentes. Ao usar o Runtime de Integração Auto-Hospedado e copiar para o Azure Blob/ADLS Gen2, observe que a quantidade máxima efetiva para cópia paralela é 4 ou 5 por nó de IR.
- Em outros cenários, a cópia paralela não entrará em vigor. Mesmo se o paralelismo for especificado, ele não será aplicado.
Entre repositórios que não são de arquivos - Ao copiar dados no Banco de Dados SQL do Azure ou no Azure Cosmos DB, a cópia paralela padrão também depende da camada do coletor (número de DTUs/RUs).
- Ao copiar dados de um armazenamento de dados com a opção de partição habilitada (incluindo Banco de Dados SQL, Instância Gerenciada de SQL do Azure, Azure Synapse Analytics, Oracle, RDS da Amazon para Oracle, Netezza, SAP HANA, SAP Open Hub, SAP Tablee SQL Server, RDS da Amazon para SQL Server e Teradata), o valor padrão para cópia paralela é 4.
-Ao copiar dados na tabela do Azure, o valor padrão para cópia paralela é 4.

Para controlar a carga em computadores que hospedam os armazenamentos de dados ou ajustar o desempenho da cópia, você pode substituir o valor padrão e especificar um valor para a propriedade parallelCopies. O valor deve ser um inteiro maior ou igual a 1. Na execução, para ter o melhor desempenho, a atividade Copy usa um valor menor ou igual ao valor definido.

Ao especificar um valor para a propriedade parallelCopies, leve em consideração o aumento da carga em seus armazenamentos de dados de origem e do coletor. Considere também o aumento da carga para o runtime de integração auto-hospedado se a atividade Copy estiver usando ele. O aumento da carga ocorre especialmente quando você tem várias atividades ou execuções simultâneas das mesmas atividades executadas em relação ao mesmo armazenamento de dados. Se você perceber que o armazenamento de dados ou o runtime de integração auto-hospedado está sobrecarregado com a carga, diminua o valor de parallelCopies para aliviá-los.

Exemplo:

"activities":[
    {
        "name": "Sample copy activity",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "BlobSource",
            },
            "sink": {
                "type": "AzureDataLakeStoreSink"
            },
            "parallelCopies": 32
        }
    }
]

Cópia em etapas

Ao copiar dados de um armazenamento de dados de origem para um armazenamento de dados do coletor, você pode escolher usar um Armazenamento de Blobs do Azure ou o Azure Data Lake Storage Gen2 como um armazenamento de preparação provisório. Esse preparo é especialmente útil nos seguintes casos:

  • Você deseja ingerir dados de vários armazenamentos de dados no Azure Synapse Analytics por meio do PolyBase, copiar dados de/para o Snowflake ou ingerir dados do Amazon Redshift/HDFS de forma eficaz. Saiba mais detalhes em:
  • Você não deseja abrir portas diferentes da porta 80 e da porta 443 em seu firewall devido às políticas corporativas de TI. Por exemplo, quando você copia dados de um armazenamento de dados local para um Banco de Dados SQL do Azure ou para um Azure Synapse Analytics, precisa ativar a comunicação TCP de saída na porta 1433 do Firewall do Windows e do firewall corporativo. Nesse cenário, a cópia de preparo pode tirar proveito do runtime de integração auto-hospedado para primeiro copiar dados para um armazenamento de preparo por HTTP ou HTTPS na porta 443 e, em seguida, carregar os dados do preparo para o Banco de Dados SQL ou o Azure Synapse Analytics. Nesse fluxo, você não precisa habilitar a porta 1433.
  • Às vezes, leva algum tempo para realizar a movimentação de dados híbridos (ou seja, copiar de um armazenamento de dados local para um armazenamento de dados de nuvem) em uma conexão de rede lenta. Para melhorar o desempenho, você pode usar a cópia de preparo para compactar os dados locais para que leve menos tempo para mover os dados para o armazenamento de dados de preparo na nuvem. Em seguida, você pode descompactar os dados no armazenamento de preparo antes de carregá-los no armazenamento de dados de destino.

Como funciona a cópia em etapas

Quando você ativa o recurso de preparo, primeiro os dados são copiados do armazenamento de dados de origem para o armazenamento de preparo (traga seu próprio Azure Blob ou Azure Data Lake Storage Gen2). Em seguida, os dados são copiados do preparo para o armazenamento de dados do coletor. A atividade de cópia gerencia automaticamente o fluxo de dois estágios para você e também limpa os dados temporários do armazenamento de preparo após a conclusão da movimentação de dados.

Staged copy

Você precisa conceder permissão de exclusão ao Azure Data Factory no armazenamento de preparo para que os dados temporários possam ser limpos após a execução da atividade de cópia.

Quando você ativa o movimento de dados usando um armazenamento de preparo, pode especificar se deseja que os dados sejam compactados antes de serem movidos do armazenamento de dados de origem para um armazenamento de preparo e, em seguida, descompactados antes de serem movidos de um armazenamento de preparo ou provisório para o armazenamento de dados do coletor.

No momento, não é possível copiar dados de um armazenamento de dados para outro quando eles estão conectados por meio de IRs auto-hospedados, com ou sem cópia preparada. Nesse cenário, você pode configurar duas atividades de cópia encadeadas explicitamente para copiar da origem para o preparo e, em seguida, do preparo para o coletor.

Configuração

Configure a definição enableStaging na atividade Copy para especificar se deseja que os dados sejam preparados no armazenamento antes de carregá-los em um armazenamento de dados de destino. Quando você definir enableStaging como TRUE, especifique as propriedades adicionais listadas na tabela a seguir.

Propriedade Descrição Valor padrão Obrigatório
enableStaging Especifique se você deseja copiar os dados por meio de um armazenamento de preparo provisório. Falso Não
linkedServiceName Especifique o nome de um Armazenamento de Blobs do Azure ou de um serviço vinculado do Azure Data Lake Storage Gen2, que se refere à instância do Armazenamento que você usa como um armazenamento de preparo provisório. N/D Sim, quando enableStaging está definido para TRUE
caminho Especifique o caminho que você deseja que contenha os dados preparados. Se você não fornecer um caminho, o serviço criará um contêiner para armazenar os dados temporários. N/D Não
enableCompression Especifica se os dados devem ser compactados antes de serem copiados para o destino. Essa configuração reduz o volume de dados que são transferidos. Falso Não

Observação

Se você usar a cópia preparada com a compactação ativada, a entidade de serviço ou a autenticação MSI do serviço vinculado do blob de preparo não será compatível.

Aqui está um exemplo de definição da atividade Copy com as propriedades descritas na tabela anterior:

"activities":[
    {
        "name": "CopyActivityWithStaging",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "OracleSource",
            },
            "sink": {
                "type": "SqlDWSink"
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                },
                "path": "stagingcontainer/path"
            }
        }
    }
]

Impacto de cobrança de cópia em etapas

Você é cobrado com base em duas etapas: duração da cópia e tipo de cópia.

  • Quando você usa o preparo durante uma cópia de nuvem, que é copiar dados de um armazenamento de dados de nuvem para outro armazenamento de dados de nuvem, com os dois estágios usando o runtime de integração do Azure, é cobrado de você a [soma da duração da cópia das etapas 1 e 2] x [preço unitário da cópia de nuvem].
  • Quando você usa o preparo durante uma cópia híbrida, que é copiar dados de um armazenamento de dados local para um armazenamento de dados de nuvem, um estágio capacitado pelo runtime de integração auto-hospedado, é cobrado de você a [duração da cópia híbrida] x [preço unitário da cópia híbrida] + [duração da cópia de nuvem] x [preço unitário da cópia de nuvem].

Confira os outros artigos sobre atividade de cópia: