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á.
S3 DistCp (s3-dist-cp)
O Apache DistCp é uma ferramenta de código aberto que você pode usar para copiar grandes quantidades de dados. O S3 DistCp é semelhante DistCp, mas otimizado para trabalhar AWS, especialmente com o Amazon S3. O comando para S3 DistCp na 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. Usando o S3DistCp, você pode copiar com eficiência grandes quantidades de dados do Amazon S3 HDFS para onde eles podem ser processados por etapas subsequentes em seu cluster da AmazonEMR. Você também pode usar o S3 DistCp para copiar dados entre buckets do Amazon S3 ou do HDFS Amazon S3. O S3 DistCp é mais escalável e eficiente para copiar paralelamente grandes números de objetos entre buckets e contas. AWS
Para comandos específicos que demonstram a flexibilidade do S3DistCP em cenários do mundo real, consulte Sete dicas para usar o S3 DistCp
Por exemplo DistCp, o S3 DistCp 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 DistCpguia na documentação
Se o S3 DistCp não conseguir 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, o S3 DistCp não limpará os arquivos parcialmente copiados.
Importante
O S3 DistCp não é compatível com nomes de bucket do Amazon S3 que contenham o caractere de sublinhado.
O S3 DistCp não oferece suporte à concatenação de arquivos Parquet. Use PySpark em vez disso. Para obter mais informações, consulte Concatenação de arquivos de parquete na Amazon
Para evitar erros de cópia ao usar o S3DistCp para copiar um único arquivo (em vez de um diretório) do S3 para, HDFS use a Amazon EMR versão 5.33.0 ou posterior, ou a Amazon versão 6.3.0 ou posterior. EMR
Opções do S3 DistCp
Embora semelhante DistCp, o S3 DistCp oferece suporte a um conjunto diferente de opções para alterar a forma como ele copia e compacta dados.
Ao chamar o 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 DistCp argumentos do S3 são mostrados na tabela a seguir.
Opção | Descrição | Obrigatório |
---|---|---|
‑‑src=LOCATION
|
Local dos dados a serem copiados. Isso pode ser um local HDFS ou o Amazon S3. Exemplo: ImportanteO S3 DistCp não é compatível com nomes de bucket do Amazon S3 que contenham o caractere de sublinhado. |
Sim |
‑‑dest=LOCATION
|
Destino para os dados. Isso pode ser um local HDFS ou o Amazon S3. Exemplo: ImportanteO S3 DistCp não é compatível com nomes de bucket do Amazon S3 que contenham o caractere de 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 DistCp etapa S3 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 do S3 DistCp ao copiar para arquivos do Amazon S3 que já estão HDFS 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 o 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 que o S3 DistCp exclua os arquivos copiados 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 de um carregamento multiparte do Amazon S3. O S3 DistCp usa upload de várias partes quando copia dados maiores 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 S3. DistCp Exemplo: |
Não |
‑‑previousManifest=PATH
|
Lê um arquivo de manifesto que foi criado durante uma chamada anterior para o S3 DistCp usando o Exemplo: |
Não |
‑‑requirePreviousManifest |
Requer um manifesto anterior criado durante uma chamada anterior para o S3DistCp. 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, o S3 DistCp 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 (file:/) que contém uma lista de Se Exemplo: |
Não |
Além das opções acima, o S3 DistCp implementa a interface da ferramenta
Adicionando o S3 DistCp como uma etapa em um cluster
Você pode chamar o S3 DistCp adicionando-o 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 o console,CLI, ouAPI. Os exemplos a seguir demonstram a adição de uma DistCp etapa do S3 a um cluster em execução. Para obter mais informações sobre como adicionar etapas a um cluster, consulte Enviar trabalho para um cluster no Amazon EMR Management Guide.
Para adicionar uma DistCp etapa do S3 a um cluster em execução usando o AWS CLI
Para obter mais informações sobre o uso dos EMR comandos da Amazon no AWS CLI, consulte a Referência de AWS CLI comandos.
-
Para adicionar uma etapa a um cluster que chama o S3DistCp, passe os parâmetros que especificam como o S3 DistCp deve realizar 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-id
especifica o cluster -
Jar
é a localização do DistCp JAR arquivo S3. Para ver um exemplo de como executar um comando em um cluster usando o command-runner.jar, consulte Enviar uma JAR etapa personalizada para executar um script ou comando. -
Args
é uma lista separada por vírgulas dos pares nome-valor da opção a serem passados para o S3. DistCp Para obter uma lista completa das opções disponíveis, consulte Opções do S3 DistCp .
Para adicionar uma etapa de DistCp cópia do S3 a um cluster em execução, coloque o seguinte em um JSON arquivo salvo no Amazon S3 ou em seu sistema de arquivos local,
como neste exemplo. SubstituirmyStep.json
j-3GYXXXXXX9IOK
com seu ID de cluster e substituamybucket
com o nome do seu bucket do Amazon S3.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://mybucket/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-id
j-3GYXXXXXX9IOK
‑‑steps file://./myStep.json -
exemplo Copiar arquivos de log do Amazon S3 para HDFS
Este exemplo também ilustra como copiar arquivos de log armazenados em um bucket do Amazon S3 adicionando uma etapa a um cluster HDFS em execução. Neste exemplo, a opção ‑‑srcPattern
é usada para limitar os dados copiados para os logs do daemon.
Para copiar arquivos de log do Amazon S3 para HDFS usar a ‑‑srcPattern
opção, coloque o seguinte em um JSON arquivo salvo no Amazon S3 ou em seu sistema de arquivos local,
como neste exemplo. Substituir myStep.json
j-3GYXXXXXX9IOK
com seu ID de cluster e substitua mybucket
com o nome do seu bucket do Amazon S3.
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://mybucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]