Copiar dados do servidor HDFS usando Azure Data FactoryCopy data from the HDFS server by using Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo descreve como copiar dados do servidor de Sistema de Arquivos Distribuído do Hadoop (HDFS).This article outlines how to copy data from the Hadoop Distributed File System (HDFS) server. Para saber mais sobre o Azure Data Factory, leia as artigo introdutório.To learn about Azure Data Factory, read the introductory article.

Funcionalidades com suporteSupported capabilities

O conector HDFS tem suporte para as seguintes atividades:The HDFS connector is supported for the following activities:

Especificamente, o conector HDFS dá suporte a:Specifically, the HDFS connector supports:

  • Copiar arquivos usando o Windows (Kerberos) ou autenticação anônima .Copying files by using Windows (Kerberos) or Anonymous authentication.
  • Copiar arquivos usando o protocolo webhdfs ou o suporte interno a DistCp .Copying files by using the webhdfs protocol or built-in DistCp support.
  • Copiar arquivos como está ou analisando ou gerando arquivos com os formatos de arquivo e codecs de compactação com suporte.Copying files as is or by parsing or generating files with the supported file formats and compression codecs.

Pré-requisitosPrerequisites

Se o armazenamento de dados estiver localizado dentro de uma rede local, em uma rede virtual do Azure ou na Amazon Virtual Private Cloud, você precisará configurar um runtime de integração auto-hospedada para se conectar a ele.If your data store is located inside an on-premises network, an Azure virtual network, or Amazon Virtual Private Cloud, you need to configure a self-hosted integration runtime to connect to it.

Por outro lado, se o armazenamento de dados for um serviço de dados de nuvem gerenciado, você poderá usar o Azure Integration Runtime.Alternatively, if your data store is a managed cloud data service, you can use Azure integration runtime. Se o acesso for restrito aos IPs que estão aprovados nas regras de firewall, você poderá adicionar IPs do Azure Integration Runtime à lista de permissões.If the access is restricted to IPs that are approved in the firewall rules, you can add Azure Integration Runtime IPs into the allow list.

Para obter mais informações sobre os mecanismos de segurança de rede e as opções compatíveis com o Data Factory, consulte Estratégias de acesso a dados.For more information about the network security mechanisms and options supported by Data Factory, see Data access strategies.

Observação

Verifique se o tempo de execução de integração pode acessar todos os [servidor de nó de nome]: [porta do nó de nome] e [servidores de nó de dados]: [porta do nó de dados] do cluster Hadoop.Make sure that the integration runtime can access all the [name node server]:[name node port] and [data node servers]:[data node port] of the Hadoop cluster. A [porta do nó de nome] padrão é 50070 e a [porta do nó de dados] padrão é 50075.The default [name node port] is 50070, and the default [data node port] is 50075.

IntroduçãoGet started

Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:To perform the Copy activity with a pipeline, you can use one of the following tools or SDKs:

As seções que se seguem fornecem detalhes sobre as propriedades que são usadas para definir entidades do Data Factory específicas ao HDFS.The following sections provide details about properties that are used to define Data Factory entities specific to HDFS.

Propriedades do serviço vinculadoLinked service properties

As propriedades a seguir têm suporte para o serviço vinculado do HDFS:The following properties are supported for the HDFS linked service:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type deve ser definida como HDFS.The type property must be set to Hdfs. SimYes
urlurl A URL para o HDFSThe URL to the HDFS SimYes
authenticationTypeauthenticationType Os valores permitidos são Anonymous ou Windows.The allowed values are Anonymous or Windows.

Para configurar seu ambiente local, consulte a seção usar autenticação Kerberos para o conector HDFS .To set up your on-premises environment, see the Use Kerberos authentication for the HDFS connector section.
SimYes
userNameuserName O nome de usuário para a autenticação do Windows.The username for Windows authentication. Para a autenticação Kerberos, especifique <username> @ <domain> . com.For Kerberos authentication, specify <username>@<domain>.com. Sim (para autenticação do Windows)Yes (for Windows authentication)
passwordpassword A senha da autenticação do Windows.The password for Windows authentication. Marque este campo como uma SecureString para armazená-lo com segurança em seu data factory ou faça referência a um segredo armazenado em um cofre de chaves do Azure.Mark this field as a SecureString to store it securely in your data factory, or reference a secret stored in an Azure key vault. Sim (para a Autenticação do Windows)Yes (for Windows Authentication)
connectViaconnectVia O runtime de integração a ser usado para se conectar ao armazenamento de dados.The integration runtime to be used to connect to the data store. Para saber mais, consulte a seção pré-requisitos .To learn more, see the Prerequisites section. Se o Integration Runtime não for especificado, o serviço usará o Azure Integration Runtime padrão.If the integration runtime isn't specified, the service uses the default Azure Integration Runtime. NãoNo

Exemplo: usando a autenticação anônimaExample: using Anonymous authentication

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

Exemplo: usando a autenticação do WindowsExample: using Windows authentication

{
    "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"
        }
    }
}

Propriedades do conjunto de dadosDataset properties

Para obter uma lista completa das seções e propriedades que estão disponíveis para definir conjuntos de os, consulte DataSets in Azure data Factory.For a full list of sections and properties that are available for defining datasets, see Datasets in Azure Data Factory.

O Azure Data Factory é compatível com os formatos de arquivo a seguir.Azure Data Factory supports the following file formats. Confira cada artigo para obter configurações baseadas em formato.Refer to each article for format-based settings.

As propriedades a seguir têm suporte para HDFS em location configurações no conjunto de entrada baseado em formato:The following properties are supported for HDFS under location settings in the format-based dataset:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type em location no DataSet deve ser definida como HdfsLocation.The type property under location in the dataset must be set to HdfsLocation. SimYes
folderPathfolderPath O caminho para a pasta.The path to the folder. Se você quiser usar um curinga para filtrar a pasta, ignore essa configuração e especifique o caminho nas configurações de origem da atividade.If you want to use a wildcard to filter the folder, skip this setting and specify the path in activity source settings. NãoNo
fileNamefileName O nome do arquivo sob o folderPath especificado.The file name under the specified folderPath. Se você quiser usar um curinga para filtrar arquivos, ignore essa configuração e especifique o nome do arquivo nas configurações de origem da atividade.If you want to use a wildcard to filter files, skip this setting and specify the file name in activity source settings. NãoNo

Exemplo:Example:

{
    "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"
        }
    }
}

Propriedades da atividade de cópiaCopy activity properties

Para obter uma lista completa de seções e propriedades que estão disponíveis para definir atividades, consulte pipelines e atividades no Azure data Factory.For a full list of sections and properties that are available for defining activities, see Pipelines and activities in Azure Data Factory. Esta seção fornece uma lista das propriedades com suporte pela origem do HDFS.This section provides a list of properties that are supported by the HDFS source.

HDFS como fonteHDFS as source

O Azure Data Factory é compatível com os formatos de arquivo a seguir.Azure Data Factory supports the following file formats. Confira cada artigo para obter configurações baseadas em formato.Refer to each article for format-based settings.

As propriedades a seguir têm suporte para HDFS em storeSettings configurações na fonte de cópia baseada em formato:The following properties are supported for HDFS under storeSettings settings in the format-based Copy source:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type em storeSettings deve ser definida como HdfsReadSettings.The type property under storeSettings must be set to HdfsReadSettings. SimYes
*Localize os arquivos a serem copiados _*Locate the files to copy _
OPÇÃO 1: caminho estáticoOPTION 1: static path
Copie da pasta ou do caminho do arquivo especificado no conjunto de um.Copy from the folder or file path that's specified in the dataset. Se quiser copiar todos os arquivos de uma pasta, especifique também wildcardFileName como _.If you want to copy all files from a folder, additionally specify wildcardFileName as _.
OPÇÃO 2: curingaOPTION 2: wildcard
- wildcardFolderPath- wildcardFolderPath
O caminho da pasta com caracteres curinga para filtrar as pastas de origem.The folder path with wildcard characters to filter source folders.
Os curingas permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caractere único).Allowed wildcards are: * (matches zero or more characters) and ? (matches zero or single character). Use ^ para escapar se o nome real da pasta tiver um curinga ou esse caractere de escape dentro de.Use ^ to escape if your actual folder name has a wildcard or this escape character inside.
Para obter mais exemplos, consulte exemplos de filtro de pasta e arquivo.For more examples, see Folder and file filter examples.
NãoNo
OPÇÃO 2: curingaOPTION 2: wildcard
- wildcardFileName- wildcardFileName
O nome do arquivo com caracteres curinga no folderPath/wildcardFolderPath especificado para filtrar os arquivos de origem.The file name with wildcard characters under the specified folderPath/wildcardFolderPath to filter source files.
Os curingas permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou a um único caractere); use ^ para escapar se o nome real do arquivo tiver um caractere curinga ou este caracter de escape dentro.Allowed wildcards are: * (matches zero or more characters) and ? (matches zero or single character); use ^ to escape if your actual file name has a wildcard or this escape character inside. Para obter mais exemplos, consulte exemplos de filtro de pasta e arquivo.For more examples, see Folder and file filter examples.
SimYes
OPÇÃO 3: uma lista de arquivosOPTION 3: a list of files
- fileListPath- fileListPath
Indica a cópia de um conjunto de arquivos especificado.Indicates to copy a specified file set. Aponte para um arquivo de texto que inclui uma lista de arquivos que você deseja copiar (um arquivo por linha, com o caminho relativo para o caminho configurado no conjunto de um).Point to a text file that includes a list of files you want to copy (one file per line, with the relative path to the path configured in the dataset).
Ao usar essa opção, não especifique o nome do arquivo no conjunto de um.When you use this option, do not specify file name in the dataset. Para obter mais exemplos, consulte exemplos de lista de arquivos.For more examples, see File list examples.
NãoNo
*Configurações adicionais _*Additional settings _
recursivarecursive Indica se os dados são lidos recursivamente das subpastas ou somente da pasta especificada.Indicates whether the data is read recursively from the subfolders or only from the specified folder. Quando recursive é definido como _true * e o coletor é um armazenamento baseado em arquivo, uma pasta ou subpasta vazia não é copiada ou criada no coletor.When recursive is set to _true* and the sink is a file-based store, an empty folder or subfolder isn't copied or created at the sink.
Os valores permitidos são true (padrão) e false.Allowed values are true (default) and false.
Essa propriedade não se aplica quando você configura fileListPath.This property doesn't apply when you configure fileListPath.
NãoNo
deleteFilesAfterCompletiondeleteFilesAfterCompletion Indica se os arquivos binários serão excluídos do repositório de origem após a movimentação com êxito para o repositório de destino.Indicates whether the binary files will be deleted from source store after successfully moving to the destination store. A exclusão do arquivo é por arquivo, portanto, quando a atividade de cópia falhar, você verá que alguns arquivos já foram copiados para o destino e excluídos da origem, enquanto outros ainda permanecem no repositório de origem.The file deletion is per file, so when copy activity fails, you will see some files have already been copied to the destination and deleted from source, while others are still remaining on source store.
Esta propriedade só é válida no cenário de cópia de arquivos binários.This property is only valid in binary files copy scenario. O valor padrão: false.The default value: false.
NãoNo
modifiedDatetimeStartmodifiedDatetimeStart Os arquivos são filtrados com base no atributo modificado pela última vez.Files are filtered based on the attribute Last Modified.
Os arquivos serão selecionados se a hora da última modificação estiver dentro do intervalo de modifiedDatetimeStart a modifiedDatetimeEnd .The files are selected if their last modified time is within the range of modifiedDatetimeStart to modifiedDatetimeEnd. A hora é aplicada ao fuso horário UTC no formato 2018-12-01T05:00:00Z.The time is applied to the UTC time zone in the format of 2018-12-01T05:00:00Z.
As propriedades podem ser nulas, o que significa que nenhum filtro de atributo de arquivo é aplicado ao conjunto de valores.The properties can be NULL, which means that no file attribute filter is applied to the dataset. Quando modifiedDatetimeStart tem um valor de DateTime, mas modifiedDatetimeEnd é nulo, significa que os arquivos cujo último atributo modificado é maior ou igual ao valor de DateTime são selecionados.When modifiedDatetimeStart has a datetime value but modifiedDatetimeEnd is NULL, it means that the files whose last modified attribute is greater than or equal to the datetime value are selected. Quando modifiedDatetimeEnd tem um valor de DateTime, mas modifiedDatetimeStart é nulo, significa que os arquivos cujo último atributo modificado é menor que o valor de data e hora são selecionados.When modifiedDatetimeEnd has a datetime value but modifiedDatetimeStart is NULL, it means that the files whose last modified attribute is less than the datetime value are selected.
Essa propriedade não se aplica quando você configura fileListPath.This property doesn't apply when you configure fileListPath.
NãoNo
modifiedDatetimeEndmodifiedDatetimeEnd Mesmo que acima.Same as above.
enablePartitionDiscoveryenablePartitionDiscovery Para arquivos que são particionados, especifique se deseja analisar as partições do caminho do arquivo e adicioná-las como colunas de origem adicionais.For files that are partitioned, specify whether to parse the partitions from the file path and add them as additional source columns.
Os valores permitidos são false (padrão) e true.Allowed values are false (default) and true.
NãoNo
partitionRootPathpartitionRootPath Quando a descoberta de partição estiver habilitada, especifique o caminho raiz absoluto para ler as pastas particionadas como colunas de dados.When partition discovery is enabled, specify the absolute root path in order to read partitioned folders as data columns.

Se não for especificado, por padrão,If it is not specified, by default,
-Quando você usa o caminho do arquivo no conjunto de programas ou na lista de arquivos na origem, o caminho raiz da partição é o caminho configurado no conjunto de um.- When you use file path in dataset or list of files on source, partition root path is the path configured in dataset.
-Quando você usa o filtro de pasta curinga, o caminho raiz da partição é o subcaminho antes do primeiro caractere curinga.- When you use wildcard folder filter, partition root path is the sub-path before the first wildcard.

Por exemplo, supondo que você configure o caminho no conjunto de um como "raiz/pasta/ano = 2020/mês = 08/dia = 27":For example, assuming you configure the path in dataset as "root/folder/year=2020/month=08/day=27":
-Se você especificar o caminho raiz da partição como "raiz/pasta/ano = 2020", a atividade de cópia irá gerar mais duas colunas month e day com o valor "08" e "27", respectivamente, além das colunas dentro dos arquivos.- If you specify partition root path as "root/folder/year=2020", copy activity will generate two more columns month and day with value "08" and "27" respectively, in addition to the columns inside the files.
-Se o caminho raiz da partição não for especificado, nenhuma coluna extra será gerada.- If partition root path is not specified, no extra column will be generated.
NãoNo
maxConcurrentConnectionsmaxConcurrentConnections O número de conexões que podem se conectar ao armazenamento de armazenamento simultaneamente.The number of connections that can connect to the storage store concurrently. Especifique um valor somente quando desejar limitar a conexão simultânea com o armazenamento de dados.Specify a value only when you want to limit the concurrent connection to the data store. NãoNo
*Configurações de DistCp _*DistCp settings _
distcpSettingsdistcpSettings O grupo de propriedades a ser usado ao usar o HDFS DistCp.The property group to use when you use HDFS DistCp. NãoNo
resourceManagerEndpointresourceManagerEndpoint O ponto de extremidade YARN (ainda outro negociador de recursos)The YARN (Yet Another Resource Negotiator) endpoint Sim, se estiver usando DistCpYes, if using DistCp
tempScriptPathtempScriptPath Um caminho de pasta que é usado para armazenar o script de comando Temp DistCp.A folder path that's used to store the temp DistCp command script. O arquivo de script é gerado pelo Data Factory e será removido depois que o trabalho de cópia for concluído.The script file is generated by Data Factory and will be removed after the Copy job is finished. Sim, se estiver usando DistCpYes, if using DistCp
distcpOptionsdistcpOptions Opções adicionais fornecidas ao comando DistCp.Additional options provided to DistCp command. NãoNo

_ Exemplo:*_ Example:*

"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>"
            }
        }
    }
]

Exemplos de filtro de pasta e arquivoFolder and file filter examples

Esta seção descreve o comportamento resultante se você usar um filtro curinga com o caminho da pasta e o nome do arquivo.This section describes the resulting behavior if you use a wildcard filter with the folder path and file name.

folderPathfolderPath fileNamefileName recursivarecursive Estrutura da pasta de origem e resultado do filtro (os arquivos em negrito são recuperados)Source folder structure and filter result (files in bold are retrieved)
Folder* (vazio, usar padrão)(empty, use default) falsefalse FolderAFolderA
    Arquivo1.csv    File1.csv
    Arquivo2.json    File2.json
    Subpasta1    Subfolder1
        Arquivo3.csv        File3.csv
        Arquivo4.json        File4.json
        Arquivo5.csv        File5.csv
OutraPastaBAnotherFolderB
    Arquivo6.csv    File6.csv
Folder* (vazio, usar padrão)(empty, use default) truetrue FolderAFolderA
    Arquivo1.csv    File1.csv
    Arquivo2.json    File2.json
    Subpasta1    Subfolder1
        Arquivo3.csv        File3.csv
        Arquivo4.json        File4.json
        Arquivo5.csv        File5.csv
OutraPastaBAnotherFolderB
    Arquivo6.csv    File6.csv
Folder* *.csv falsefalse FolderAFolderA
    Arquivo1.csv    File1.csv
    Arquivo2.json    File2.json
    Subpasta1    Subfolder1
        Arquivo3.csv        File3.csv
        Arquivo4.json        File4.json
        Arquivo5.csv        File5.csv
OutraPastaBAnotherFolderB
    Arquivo6.csv    File6.csv
Folder* *.csv truetrue FolderAFolderA
    Arquivo1.csv    File1.csv
    Arquivo2.json    File2.json
    Subpasta1    Subfolder1
        Arquivo3.csv        File3.csv
        Arquivo4.json        File4.json
        Arquivo5.csv        File5.csv
OutraPastaBAnotherFolderB
    Arquivo6.csv    File6.csv

Exemplos de lista de arquivosFile list examples

Esta seção descreve o comportamento resultante do uso de um caminho de lista de arquivos na origem da atividade de cópia.This section describes the behavior that results from using a file list path in the Copy activity source. Ele pressupõe que você tem a seguinte estrutura de pasta de origem e deseja copiar os arquivos que estão em negrito:It assumes that you have the following source folder structure and want to copy the files that are in bold type:

Exemplo de estrutura de origemSample source structure Conteúdo em FileListToCopy.txtContent in FileListToCopy.txt Configuração de Azure Data FactoryAzure Data Factory configuration
rootroot
    FolderA    FolderA
        Arquivo1.csv        File1.csv
        Arquivo2.json        File2.json
        Subpasta1        Subfolder1
            Arquivo3.csv            File3.csv
            Arquivo4.json            File4.json
            Arquivo5.csv            File5.csv
    Metadados    Metadata
        FileListToCopy.txt        FileListToCopy.txt
File1.csvFile1.csv
Subfolder1/File3.csvSubfolder1/File3.csv
Subfolder1/File5.csvSubfolder1/File5.csv
No conjunto de os:In the dataset:
- Caminho da pasta: root/FolderA- Folder path: root/FolderA

Na fonte da atividade de cópia:In the Copy activity source:
- Caminho da lista de arquivos: root/Metadata/FileListToCopy.txt- File list path: root/Metadata/FileListToCopy.txt

O caminho da lista de arquivos aponta para um arquivo de texto no mesmo armazenamento de dados que inclui uma lista de arquivos que você deseja copiar (um arquivo por linha, com o caminho relativo para o caminho configurado no conjunto de dados).The file list path points to a text file in the same data store that includes a list of files you want to copy (one file per line, with the relative path to the path configured in the dataset).

Usar DistCp para copiar dados do HDFSUse DistCp to copy data from HDFS

DistCp é uma ferramenta de linha de comando nativa do Hadoop para fazer uma cópia distribuída em um cluster Hadoop.DistCp is a Hadoop native command-line tool for doing a distributed copy in a Hadoop cluster. Quando você executa um comando no DistCp, ele lista primeiro todos os arquivos a serem copiados e, em seguida, cria vários trabalhos de mapa no cluster Hadoop.When you run a command in DistCp, it first lists all the files to be copied and then creates several Map jobs in the Hadoop cluster. Cada trabalho de mapa faz uma cópia binária da origem para o coletor.Each Map job does a binary copy from the source to the sink.

A atividade de cópia dá suporte ao uso de DistCp para copiar arquivos como se encontra no armazenamento de BLOBs do Azure (incluindo cópia em etapas) ou em um Azure data Lake Store.The Copy activity supports using DistCp to copy files as is into Azure Blob storage (including staged copy) or an Azure data lake store. Nesse caso, o DistCp pode aproveitar a potência do seu cluster em vez de ser executado no tempo de execução de integração auto-hospedado.In this case, DistCp can take advantage of your cluster's power instead of running on the self-hosted integration runtime. O uso do DistCp fornece uma melhor taxa de transferência de cópia, especialmente se o cluster for muito eficiente.Using DistCp provides better copy throughput, especially if your cluster is very powerful. Com base na configuração em seu data factory, a atividade de cópia constrói automaticamente um comando DistCp, envia-o para o cluster Hadoop e monitora o status da cópia.Based on the configuration in your data factory, the Copy activity automatically constructs a DistCp command, submits it to your Hadoop cluster, and monitors the copy status.

Pré-requisitosPrerequisites

Para usar o DistCp para copiar arquivos da HDFS para o armazenamento de BLOBs do Azure (incluindo cópia em etapas) ou o Azure data Lake Store, verifique se o cluster Hadoop atende aos seguintes requisitos:To use DistCp to copy files as is from HDFS to Azure Blob storage (including staged copy) or the Azure data lake store, make sure that your Hadoop cluster meets the following requirements:

  • Os serviços MapReduce e YARN estão habilitados.The MapReduce and YARN services are enabled.

  • A versão YARN é 2,5 ou posterior.YARN version is 2.5 or later.

  • O servidor HDFS é integrado ao armazenamento de dados de destino: armazenamento de BLOBs do Azure ou Azure data Lake Store (ADLS Gen1):The HDFS server is integrated with your target data store: Azure Blob storage or Azure Data Lake Store (ADLS Gen1):

    • O FileSystem do Blob do Azure tem suporte nativo desde o Hadoop 2.7.Azure Blob FileSystem is natively supported since Hadoop 2.7. Você só precisa especificar o caminho JAR na configuração do ambiente do Hadoop.You need only to specify the JAR path in the Hadoop environment configuration.
    • O FileSystem do Azure Data Lake Store está empacotado desde o Hadoop 3.0.0-alpha1.Azure Data Lake Store FileSystem is packaged starting from Hadoop 3.0.0-alpha1. Se a versão do cluster do Hadoop for anterior à versão, você precisará importar manualmente os pacotes JAR relacionados ao Azure Data Lake Store (Azure-datalake-Store. jar) para o cluster aquie especificar o caminho do arquivo JAR na configuração do ambiente do Hadoop.If your Hadoop cluster version is earlier than that version, you need to manually import Azure Data Lake Store-related JAR packages (azure-datalake-store.jar) into the cluster from here, and specify the JAR file path in the Hadoop environment configuration.
  • Prepare uma pasta temporária no HDFS.Prepare a temp folder in HDFS. Essa pasta Temp é usada para armazenar um script de shell DistCp, portanto, ele ocupará o espaço em nível de KB.This temp folder is used to store a DistCp shell script, so it will occupy KB-level space.

  • Verifique se a conta de usuário fornecida no serviço vinculado do HDFS tem permissão para:Make sure that the user account that's provided in the HDFS linked service has permission to:

    • Envie um aplicativo no YARN.Submit an application in YARN.
    • Crie uma subpasta e leia/grave arquivos na pasta Temp.Create a subfolder and read/write files under the temp folder.

ConfiguraçõesConfigurations

Para ver as configurações e exemplos relacionados ao DistCp, vá para a seção HDFS como fonte .For DistCp-related configurations and examples, go to the HDFS as source section.

Usar a autenticação Kerberos para o conector HDFSUse Kerberos authentication for the HDFS connector

Há duas opções para configurar o ambiente local para usar a autenticação Kerberos para o conector HDFS.There are two options for setting up the on-premises environment to use Kerberos authentication for the HDFS connector. Você pode escolher a que melhor se adapta à sua situação.You can choose the one that better fits your situation.

Para qualquer opção, certifique-se de ativar o webhdfs para o cluster Hadoop:For either option, make sure you turn on webhdfs for Hadoop cluster:

  1. Crie a entidade de segurança HTTP e keytab para webhdfs.Create the HTTP principal and keytab for webhdfs.

    Importante

    A entidade de segurança HTTP Kerberos deve começar com "http/" de acordo com a especificação de http SPNEGO Kerberos.The HTTP Kerberos principal must start with "HTTP/" according to Kerberos HTTP SPNEGO specification. Saiba mais aqui.Learn more from here.

    Kadmin> addprinc -randkey HTTP/<namenode hostname>@<REALM.COM>
    Kadmin> ktadd -k /etc/security/keytab/spnego.service.keytab HTTP/<namenode hostname>@<REALM.COM>
    
  2. Opções de configuração do HDFS: Adicione as três propriedades a seguir no hdfs-site.xml .HDFS configuration options: add the following three properties in 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>
    

Opção 1: ingressar em um computador de tempo de execução de integração auto-hospedado no realm do KerberosOption 1: Join a self-hosted integration runtime machine in the Kerberos realm

RequisitosRequirements

  • O computador do Integration Runtime de hospedagem interna precisa ingressar no realm do Kerberos e não pode ingressar em nenhum domínio do Windows.The self-hosted integration runtime machine needs to join the Kerberos realm and can’t join any Windows domain.

Como configurarHow to configure

No servidor do KDC:On the KDC server:

Crie uma entidade de segurança para Azure Data Factory usar e especifique a senha.Create a principal for Azure Data Factory to use, and specify the password.

Importante

O nome de usuário não deve conter o nome do host.The username should not contain the hostname.

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

No computador do Integration Runtime de hospedagem interna:On the self-hosted integration runtime machine:

  1. Execute o utilitário Ksetup para configurar o realm e servidor KDC (Centro de Distribuição de Chaves) do Kerberos.Run the Ksetup utility to configure the Kerberos Key Distribution Center (KDC) server and realm.

    O computador deve ser configurado como um membro de um grupo de trabalho, porque um realm Kerberos é diferente de um domínio do Windows.The machine must be configured as a member of a workgroup, because a Kerberos realm is different from a Windows domain. Você pode obter essa configuração definindo o realm do Kerberos e adicionando um servidor KDC executando os comandos a seguir.You can achieve this configuration by setting the Kerberos realm and adding a KDC server by running the following commands. Substitua realm.com pelo seu próprio nome de realm.Replace REALM.COM with your own realm name.

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

    Depois de executar esses comandos, reinicie o computador.After you run these commands, restart the machine.

  2. Verifique a configuração com o Ksetup comando.Verify the configuration with the Ksetup command. A saída deverá ser como a seguinte:The output should be like:

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

Em seu data factory:In your data factory:

  • Configure o conector HDFS usando a autenticação do Windows junto com seu nome de entidade de segurança e senha Kerberos para se conectar à fonte de dados HDFS.Configure the HDFS connector by using Windows authentication together with your Kerberos principal name and password to connect to the HDFS data source. Para obter detalhes de configuração, verifique a seção Propriedades do serviço vinculado do HDFS .For configuration details, check the HDFS linked service properties section.

Opção 2: habilitar a confiança mútua entre o domínio do Windows e o realm do KerberosOption 2: Enable mutual trust between the Windows domain and the Kerberos realm

RequisitosRequirements

  • O computador de tempo de execução de integração auto-hospedado deve ingressar em um domínio do Windows.The self-hosted integration runtime machine must join a Windows domain.
  • Você precisa de permissão para atualizar as configurações do controlador de domínio.You need permission to update the domain controller's settings.

Como configurarHow to configure

Observação

Substitua REALM.COM e AD.COM no tutorial a seguir com seu próprio nome de realm e controlador de domínio.Replace REALM.COM and AD.COM in the following tutorial with your own realm name and domain controller.

No servidor do KDC:On the KDC server:

  1. Edite a configuração do KDC no arquivo krb5. conf para permitir que o KDC confie no domínio do Windows fazendo referência ao modelo de configuração a seguir.Edit the KDC configuration in the krb5.conf file to let KDC trust the Windows domain by referring to the following configuration template. Por padrão, a configuração está localizada em /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 = .
     }
    

    Depois de configurar o arquivo, reinicie o serviço KDC.After you configure the file, restart the KDC service.

  2. Prepare uma entidade de segurança chamada krbtgt/realm. com @ AD.com no servidor KDC com o seguinte comando:Prepare a principal named krbtgt/REALM.COM@AD.COM in the KDC server with the following command:

    Kadmin> addprinc krbtgt/REALM.COM@AD.COM
    
  3. No arquivo de configuração de serviço do HDFS hadoop.security.auth_to_local, adicione RULE:[1:$1@$0](.*\@AD.COM)s/\@.*//.In the hadoop.security.auth_to_local HDFS service configuration file, add RULE:[1:$1@$0](.*\@AD.COM)s/\@.*//.

No controlador de domínio:On the domain controller:

  1. Execute os seguintes Ksetup comandos para adicionar uma entrada de realm: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. Estabeleça a confiança do domínio do Windows para o realm do Kerberos.Establish trust from the Windows domain to the Kerberos realm. [password] é a senha para a entidade de segurança 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 /password:[password]
    
  3. Selecione o algoritmo de criptografia que é usado no Kerberos.Select the encryption algorithm that's used in Kerberos.

    a.a. Selecione Gerenciador do servidor > política de grupo > domínio > de gerenciamento política de grupo objetos > padrão ou política de domínio ativo e, em seguida, selecione Editar.Select Server Manager > Group Policy Management > Domain > Group Policy Objects > Default or Active Domain Policy, and then select Edit.

    b.b. No painel Editor de gerenciamento de política de grupo , selecione configuração do computador > políticas > configurações do Windows configurações > de segurança > políticas locais > Opções de segurança e configure segurança de rede: configurar tipos de criptografia permitidos para Kerberos.On the Group Policy Management Editor pane, select Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options, and then configure Network security: Configure Encryption types allowed for Kerberos.

    c.c. Selecione o algoritmo de criptografia que você deseja usar ao se conectar ao servidor KDC.Select the encryption algorithm you want to use when you connect to the KDC server. Você pode selecionar todas as opções.You can select all the options.

    Captura de tela do painel "segurança de rede: configurar tipos de criptografia permitidos para Kerberos"

    d.d. Use o Ksetup comando para especificar o algoritmo de criptografia a ser usado no realm especificado.Use the Ksetup command to specify the encryption algorithm to be used on the specified 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. Crie o mapeamento entre a conta de domínio e a entidade de segurança Kerberos, para que você possa usar a entidade de segurança Kerberos no domínio do Windows.Create the mapping between the domain account and the Kerberos principal, so that you can use the Kerberos principal in the Windows domain.

    a.a. Selecione Ferramentas administrativas > Active Directory usuários e computadores.Select Administrative tools > Active Directory Users and Computers.

    b.b. Configure os recursos avançados selecionando Exibição > Recursos Avançados.Configure advanced features by selecting View > Advanced Features.

    c.c. No painel recursos avançados , clique com o botão direito do mouse na conta para a qual você deseja criar mapeamentos e, no painel mapeamentos de nome , selecione a guia nomes Kerberos .On the Advanced Features pane, right-click the account to which you want to create mappings and, on the Name Mappings pane, select the Kerberos Names tab.

    d.d. Adicione uma entidade de segurança do realm.Add a principal from the realm.

    O painel "mapeamento de identidade de segurança"

No computador do Integration Runtime de hospedagem interna:On the self-hosted integration runtime machine:

  • Execute os comandos a seguir Ksetup para adicionar uma entrada de realm.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
    

Em seu data factory:In your data factory:

  • Configure o conector HDFS usando a autenticação do Windows junto com sua conta de domínio ou entidade de segurança Kerberos para se conectar à fonte de dados HDFS.Configure the HDFS connector by using Windows authentication together with either your domain account or Kerberos principal to connect to the HDFS data source. Para obter detalhes de configuração, consulte a seção Propriedades do serviço vinculado do HDFS .For configuration details, see the HDFS linked service properties section.

Pesquisar propriedades de atividadeLookup activity properties

Para obter informações sobre propriedades de atividade de pesquisa, consulte atividade de pesquisa em Azure data Factory.For information about Lookup activity properties, see Lookup activity in Azure Data Factory.

Excluir propriedades da atividadeDelete activity properties

Para obter informações sobre as propriedades de atividade de exclusão, consulte excluir atividade no Azure data Factory.For information about Delete activity properties, see Delete activity in Azure Data Factory.

Modelos herdadosLegacy models

Observação

Os modelos a seguir ainda têm suporte como são para compatibilidade com versões anteriores.The following models are still supported as is for backward compatibility. É recomendável que você use o novo modelo abordado anteriormente, porque a interface do usuário de criação do Azure Data Factory mudou para gerar o novo modelo.We recommend that you use the previously discussed new model, because the Azure Data Factory authoring UI has switched to generating the new model.

Modelo de conjunto de dados herdadoLegacy dataset model

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type do conjunto de conjuntos deve ser definida como FileShareThe type property of the dataset must be set to FileShare SimYes
folderPathfolderPath O caminho para a pasta.The path to the folder. Há suporte para um filtro curinga.A wildcard filter is supported. Os curingas permitidos são * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou a um único caractere); use ^ para escapar se o nome real do arquivo tiver um caractere curinga ou se ele estiver dentro de.Allowed wildcards are * (matches zero or more characters) and ? (matches zero or a single character); use ^ to escape if your actual file name has a wildcard or this escape character inside.

Exemplos: rootfolder/subfolder/; veja mais exemplos em Exemplos de filtro de pasta e arquivo.Examples: rootfolder/subfolder/, see more examples in Folder and file filter examples.
SimYes
fileNamefileName O nome ou filtro de curinga para os arquivos sob o "folderPath" especificado.The name or wildcard filter for the files under the specified "folderPath". Se você não especificar um valor para essa propriedade, o conjunto de dados apontará para todos os arquivos na pasta.If you don't specify a value for this property, the dataset points to all files in the folder.

Para filtro, curingas permitidos são * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou a um único caractere).For filter, allowed wildcards are * (matches zero or more characters) and ? (matches zero or a single character).
– Exemplo 1: "fileName": "*.csv"- Example 1: "fileName": "*.csv"
– Exemplo 2: "fileName": "???20180427.txt"- Example 2: "fileName": "???20180427.txt"
Use ^ para escapar se o nome real da pasta tiver um curinga ou esse caractere de escape dentro de.Use ^ to escape if your actual folder name has a wildcard or this escape character inside.
NãoNo
modifiedDatetimeStartmodifiedDatetimeStart Os arquivos são filtrados com base no atributo modificado pela última vez.Files are filtered based on the attribute Last Modified. Os arquivos serão selecionados se a hora da última modificação estiver dentro do intervalo de modifiedDatetimeStart a modifiedDatetimeEnd .The files are selected if their last modified time is within the range of modifiedDatetimeStart to modifiedDatetimeEnd. A hora é aplicada ao fuso horário UTC no formato 2018-12-01T05:00:00Z.The time is applied to the UTC time zone in the format 2018-12-01T05:00:00Z.

Lembre-se de que o desempenho geral da movimentação de dados será afetado ao habilitar essa configuração quando você quiser aplicar um filtro de arquivo a um grande número de arquivos.Be aware that the overall performance of data movement will be affected by enabling this setting when you want to apply a file filter to large numbers of files.

As propriedades podem ser nulas, o que significa que nenhum filtro de atributo de arquivo é aplicado ao conjunto de valores.The properties can be NULL, which means that no file attribute filter is applied to the dataset. Quando modifiedDatetimeStart tem um valor de DateTime, mas modifiedDatetimeEnd é nulo, significa que os arquivos cujo último atributo modificado é maior ou igual ao valor de DateTime são selecionados.When modifiedDatetimeStart has a datetime value but modifiedDatetimeEnd is NULL, it means that the files whose last modified attribute is greater than or equal to the datetime value are selected. Quando modifiedDatetimeEnd tem um valor de DateTime, mas modifiedDatetimeStart é nulo, significa que os arquivos cujo último atributo modificado é menor que o valor de data e hora são selecionados.When modifiedDatetimeEnd has a datetime value but modifiedDatetimeStart is NULL, it means that the files whose last modified attribute is less than the datetime value are selected.
NãoNo
modifiedDatetimeEndmodifiedDatetimeEnd Os arquivos são filtrados com base no atributo modificado pela última vez.Files are filtered based on the attribute Last Modified. Os arquivos serão selecionados se a hora da última modificação estiver dentro do intervalo de modifiedDatetimeStart a modifiedDatetimeEnd .The files are selected if their last modified time is within the range of modifiedDatetimeStart to modifiedDatetimeEnd. A hora é aplicada ao fuso horário UTC no formato 2018-12-01T05:00:00Z.The time is applied to the UTC time zone in the format 2018-12-01T05:00:00Z.

Lembre-se de que o desempenho geral da movimentação de dados será afetado ao habilitar essa configuração quando você quiser aplicar um filtro de arquivo a um grande número de arquivos.Be aware that the overall performance of data movement will be affected by enabling this setting when you want to apply a file filter to large numbers of files.

As propriedades podem ser nulas, o que significa que nenhum filtro de atributo de arquivo é aplicado ao conjunto de valores.The properties can be NULL, which means that no file attribute filter is applied to the dataset. Quando modifiedDatetimeStart tem um valor de DateTime, mas modifiedDatetimeEnd é nulo, significa que os arquivos cujo último atributo modificado é maior ou igual ao valor de DateTime são selecionados.When modifiedDatetimeStart has a datetime value but modifiedDatetimeEnd is NULL, it means that the files whose last modified attribute is greater than or equal to the datetime value are selected. Quando modifiedDatetimeEnd tem um valor de DateTime, mas modifiedDatetimeStart é nulo, significa que os arquivos cujo último atributo modificado é menor que o valor de data e hora são selecionados.When modifiedDatetimeEnd has a datetime value but modifiedDatetimeStart is NULL, it means that the files whose last modified attribute is less than the datetime value are selected.
NãoNo
formatformat Se você quiser copiar arquivos no estado em que se encontram entre repositórios baseados em arquivo (cópia binária), ignore a seção de formato nas duas definições de conjunto de dados de entrada e de saída.If you want to copy files as is between file-based stores (binary copy), skip the format section in both the input and output dataset definitions.

Se você quer analisar arquivos com um formato específico, os seguintes tipos de formato de arquivo têm suporte: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat.If you want to parse files with a specific format, the following file format types are supported: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Defina a propriedade type sob formato como um desses valores.Set the type property under format to one of these values. Para saber mais, veja as seções Formato de texto, Formato JSON, Formato Avro, Formato ORC e Formato Parquet.For more information, see the Text format, JSON format, Avro format, ORC format, and Parquet format sections.
Não (somente para o cenário de cópia binária)No (only for binary copy scenario)
compactaçãocompression Especifique o tipo e o nível de compactação para os dados.Specify the type and level of compression for the data. Para obter mais informações, consulte Formatos de arquivo e codecs de compactação com suporte.For more information, see Supported file formats and compression codecs.
Os tipos com suporte são: gzip, deflate, bzip2 e ZipDeflate.Supported types are: Gzip, Deflate, Bzip2, and ZipDeflate.
Níveis compatíveis são: Ideal e Mais Rápido.Supported levels are: Optimal and Fastest.
NãoNo

Dica

Para copiar todos os arquivos em uma pasta, especifique folderPath somente.To copy all files under a folder, specify folderPath only.
Para copiar um único arquivo com um nome especificado, especifique FolderPath com a parte da pasta e o nome do arquivo com o nome.To copy a single file with a specified name, specify folderPath with folder part and fileName with file name.
Para copiar um subconjunto de arquivos em uma pasta, especifique folderPath com parte da pasta e fileName com filtro curinga.To copy a subset of files under a folder, specify folderPath with folder part and fileName with wildcard filter.

Exemplo:Example:

{
    "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"
            }
        }
    }
}

Modelo de origem da atividade de cópia herdadaLegacy Copy activity source model

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type da fonte da atividade de cópia deve ser definida como HdfsSource.The type property of the Copy activity source must be set to HdfsSource. SimYes
recursivarecursive Indica se os dados são lidos recursivamente das subpastas ou somente da pasta especificada.Indicates whether the data is read recursively from the subfolders or only from the specified folder. Quando recursivo é definido como true e o coletor é um armazenamento baseado em arquivo, uma pasta ou subpasta vazia não será copiada ou criada no coletor.When recursive is set to true and the sink is a file-based store, an empty folder or subfolder will not be copied or created at the sink.
Os valores permitidos são true (padrão) e false.Allowed values are true (default) and false.
NãoNo
distcpSettingsdistcpSettings O grupo de propriedades quando você estiver usando o HDFS DistCp.The property group when you're using HDFS DistCp. NãoNo
resourceManagerEndpointresourceManagerEndpoint O ponto de extremidade do Gerenciador de recursos YARNThe YARN Resource Manager endpoint Sim, se estiver usando DistCpYes, if using DistCp
tempScriptPathtempScriptPath Um caminho de pasta que é usado para armazenar o script de comando Temp DistCp.A folder path that's used to store the temp DistCp command script. O arquivo de script é gerado pelo Data Factory e será removido depois que o trabalho de cópia for concluído.The script file is generated by Data Factory and will be removed after the Copy job is finished. Sim, se estiver usando DistCpYes, if using DistCp
distcpOptionsdistcpOptions Opções adicionais são fornecidas para o comando DistCp.Additional options are provided to DistCp command. NãoNo
maxConcurrentConnectionsmaxConcurrentConnections O número de conexões que podem se conectar ao armazenamento de armazenamento simultaneamente.The number of connections that can connect to the storage store concurrently. Especifique um valor somente quando desejar limitar a conexão simultânea com o armazenamento de dados.Specify a value only when you want to limit the concurrent connection to the data store. NãoNo

Exemplo: origem do HDFS na atividade de cópia usando DistCpExample: HDFS source in Copy activity using DistCp

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

Próximas etapasNext steps

Para obter uma lista de armazenamentos de dados com suporte como fontes e coletores pela atividade de cópia no Azure Data Factory, consulte armazenamentos de dados com suporte.For a list of data stores that are supported as sources and sinks by the Copy activity in Azure Data Factory, see supported data stores.