As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
S3DistCp (s3-dist-cp)
O Apache DistCp é uma ferramenta de código aberto que você pode usar para copiar grandes quantidades de dados. S3DistCpé semelhante ao Amazon S3 DistCp, mas otimizado para trabalhar com AWS ele. O comando do Amazon EMR versão 4.0 e posterior és3-dist-cp, que você adiciona como uma etapa em um cluster ou na linha de comando. S3DistCp Usando S3DistCp, você pode copiar com eficiência grandes quantidades de dados do Amazon S3 para o HDFS, onde eles podem ser processados por etapas subsequentes em seu cluster do Amazon EMR. Você também pode usar S3DistCp para copiar dados entre buckets do Amazon S3 ou do HDFS para o Amazon S3. S3DistCp é mais escalável e eficiente para copiar paralelamente um grande número de objetos em compartimentos e contas. AWS
Para comandos específicos que demonstram a flexibilidade do S3DistCp em cenários reais, consulte Sete dicas de uso S3DistCp
Por exemplo DistCp, S3DistCp usa MapReduce para copiar de forma distribuída. Ele compartilha a cópia, o tratamento de erros, a recuperação e as tarefas de relatórios com vários servidores. Para obter mais informações sobre o projeto de código DistCp aberto Apache, consulte o DistCp guia
Se não S3DistCp for possível copiar alguns ou todos os arquivos especificados, a etapa do cluster falhará e retornará um código de erro diferente de zero. Se isso ocorrer, S3DistCp não limpa os arquivos parcialmente copiados.
Importante
S3DistCp não oferece suporte a nomes de bucket do Amazon S3 que contenham o caractere sublinhado.
S3DistCp não suporta concatenação para arquivos Parquet. Use PySpark em vez disso. Para obter mais informações, consulte como concatenar arquivos do Parquet no Amazon EMR
Para evitar erros de cópia ao usar o S3DistCP para copiar um único arquivo (em vez de um diretório) do S3 para o HDFS, use o Amazon EMR versão 5.33.0 ou posterior ou o Amazon EMR versão 6.3.0 ou posterior.
S3DistCp opções
Embora semelhante ao DistCp, S3DistCp oferece suporte a um conjunto diferente de opções para alterar a forma como ele copia e compacta dados.
Ao ligar S3DistCp, você pode especificar as opções descritas na tabela a seguir. As opções são adicionadas à etapa, usando-se a lista de argumentos. Exemplos dos S3DistCp argumentos são mostrados na tabela a seguir.
| Opção | Description | Obrigatório |
|---|---|---|
--src=LOCATION
|
Local dos dados a serem copiados. Isso pode ser um local do HDFS ou do Amazon S3. Exemplo: ImportanteS3DistCp não oferece suporte a nomes de bucket do Amazon S3 que contenham o caractere sublinhado. |
Sim |
--dest=LOCATION
|
Destino para os dados. Isso pode ser um local do HDFS ou do Amazon S3. Exemplo: ImportanteS3DistCp não oferece suporte a nomes de bucket do Amazon S3 que contenham o caractere sublinhado. |
Sim |
--srcPattern=PATTERN
|
Uma expressão regular Se o argumento da expressão regular contiver caracteres especiais, como um asterisco (*), a expressão regular ou a string Exemplo: |
Não |
--groupBy=PATTERN
|
Uma expressão regular Parênteses indicam como os arquivos devem ser agrupados, com todos os itens que correspondam à instrução parentética sendo combinados em um único arquivo de saída. Se a expressão regular não incluir uma declaração entre parênteses, o cluster falhará na S3DistCp etapa e retornará um erro. Se o argumento da expressão regular contiver caracteres especiais, como um asterisco (*), a expressão regular ou a string Quando Exemplo: |
Não |
--targetSize=SIZE
|
O tamanho, em mebibytes (MiB), dos arquivos a serem criados com base na opção Se os arquivos concatenados pelo Exemplo: |
Não |
--appendToLastFile |
Especifica o comportamento S3DistCp ao copiar arquivos do Amazon S3 para o HDFS que já estão presentes. Ele acrescenta novos dados de arquivos aos arquivos existentes. Se você usar |
Não |
--outputCodec=CODEC
|
Especifica o codec de compactação a ser usado para os arquivos copiados. Isso pode ter os valores: Exemplo: |
Não |
--s3ServerSideEncryption
|
Garante que os dados de destino sejam transferidos usando SSL e criptografados automaticamente no Amazon S3 usando uma chave do lado do AWS serviço. Ao recuperar dados usando S3DistCp, os objetos são automaticamente descriptografados. Se você tentar copiar um objeto não criptografado em um bucket do Amazon S3 que exige criptografia, haverá falha na operação. Para obter mais informações, consulte Proteger dados com criptografia. Exemplo: |
Não |
--deleteOnSuccess
|
Se a operação de cópia for bem-sucedida, essa opção fará com S3DistCp que os arquivos copiados sejam excluídos do local de origem. Isso é útil se você estiver copiando arquivos de saída, como arquivos de log, de um local para outro como uma tarefa programada e não quiser copiar os mesmos arquivos duas vezes. Exemplo: |
Não |
--disableMultipartUpload
|
Desativa o uso do multipart upload. Exemplo: |
Não |
--multipartUploadChunkSize=SIZE
|
O tamanho, em MiB, de cada parte em um upload de várias partes do Amazon S3. S3DistCp usa o upload de várias partes quando copia dados maiores do que o. Exemplo: |
Não |
--numberFiles
|
Precede os arquivos de saída com números sequenciais. A contagem inicia em 0, a menos que um valor diferente seja especificado por Exemplo: |
Não |
--startingIndex=INDEX
|
Usado com Exemplo: |
Não |
--outputManifest=FILENAME
|
Cria um arquivo de texto, compactado com Gzip, que contém uma lista de todos os arquivos copiados pelo. S3DistCp Exemplo: |
Não |
--previousManifest=PATH
|
Lê um arquivo de manifesto que foi criado durante uma chamada anterior para S3DistCp usar o Exemplo: |
Não |
--requirePreviousManifest |
Requer um manifesto anterior criado durante uma chamada anterior para S3DistCp o. Se isso for definido como falso, nenhum erro será gerado quando um manifesto anterior não for especificado. O padrão é true. |
Não |
--copyFromManifest
|
Inverte o comportamento de Exemplo: |
Não |
--s3Endpoint=ENDPOINT |
Especifica o endpoint do Amazon S3 a ser usado ao carregar um arquivo. Essa opção define o endpoint para a origem e o destino. Se não estiver definido, o endpoint padrão será Exemplo: |
Não |
--storageClass=CLASS |
A classe de armazenamento a ser usada quando o destino é o Amazon S3. Os valores válidos são STANDARD e REDUCED_REDUNDANCY. Se essa opção não for especificada, S3DistCp tentará preservar a classe de armazenamento. Exemplo: |
Não |
--srcPrefixesFile=PATH |
um arquivo de texto no Amazon S3 (s3://), HDFS (hdfs:///) ou sistema de arquivos local (arquivo:/) que contém uma lista de prefixos Se Exemplo: |
Não |
Além das opções acima, S3DistCp implementa a interface Tool, o
Adicionar S3DistCp como uma etapa em um cluster
Você pode chamar S3DistCp adicionando-a como uma etapa em seu cluster. As etapas podem ser adicionadas a um cluster na inicialização ou a um cluster em execução usando-se o console, a CLI ou a API. Os exemplos a seguir demonstram a adição de uma S3DistCp etapa a um cluster em execução. Para obter mais informações sobre como adicionar etapas a um cluster, consulte Submit work to a cluster no Guia de gerenciamento do Amazon EMR.
Para adicionar uma S3DistCp etapa a um cluster em execução usando o AWS CLI
Para obter mais informações sobre o uso de comandos do Amazon EMR no AWS CLI, consulte a Referência de AWS CLI comandos.
-
Para adicionar uma etapa a um cluster que chama S3DistCp, transmita os parâmetros que especificam como S3DistCp executar a operação de cópia como argumentos.
O exemplo a seguir copia logs do daemon do Amazon S3 para
hdfs:///output. No comando a seguir:-
--cluster-idespecifica o cluster -
Jaré a localização do arquivo S3DistCp JAR. Para ver um exemplo de como executar um comando em um cluster usando command-runner.jar, consulte Submit a custom JAR step to run a script or command. -
Argsé uma lista separada por vírgulas dos pares nome-valor da opção para a qual passar. S3DistCp Para obter uma lista completa das opções disponíveis, consulte S3DistCp opções.
Para adicionar uma etapa de S3DistCp cópia a um cluster em execução, coloque o seguinte em um arquivo JSON salvo no Amazon S3 ou em seu sistema de arquivos local, como neste
exemplo.myStep.jsonj-3GYXXXXXX9IOKSubstitua pelo ID do cluster eamzn-s3-demo-bucketsubstitua pelo nome do bucket do Amazon S3.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","--s3Endpoint=s3.amazonaws.com","--src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","--dest=hdfs:///output","--srcPattern=.*[a-zA-Z,]+"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]aws emr add-steps --cluster-idj-3GYXXXXXX9IOK--steps file://./myStep.json -
exemplo Copiar arquivos de log do Amazon S3 para o HDFS
Este exemplo também ilustra como copiar arquivos de log armazenados em um bucket do Amazon S3 no HDFS, adicionando-se uma etapa a um cluster em execução. Neste exemplo, a opção --srcPattern é usada para limitar os dados copiados para os logs do daemon.
Para copiar os arquivos de log do Amazon S3 para o HDFS usando a opção --srcPattern, coloque o seguinte em um arquivo JSON salvo no Amazon S3 ou seu sistema de arquivos local como para este exemplo. myStep.jsonj-3GYXXXXXX9IOKSubstitua pelo ID do cluster e amzn-s3-demo-bucket substitua pelo nome do bucket do Amazon S3.
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","--s3Endpoint=s3.amazonaws.com","--src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","--dest=hdfs:///output","--srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]