S3A MagicV2 Committer - Amazon EMR

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á.

S3A MagicV2 Committer

Com o lançamento do EMR-6.15.0, o Amazon EMR apresenta um novo tipo de committer S3A conhecido como MagicV2 committer. Para obter informações completas sobre esse recurso, consulte as seções relevantes da documentação.

O MagicV2 Committer representa uma implementação aprimorada do código aberto MagicCommitter, projetada especificamente para otimizar a gravação de arquivos no Amazon S3 por meio do sistema de arquivos S3A. Assim como seu antecessor, ele aproveita os recursos de upload em várias partes do Amazon S3 para eliminar as operações tradicionais de listagem e renomeação normalmente associadas às fases de commit de trabalhos e tarefas.

Em comparação com o original MagicCommitter, o committer MagicV2 demonstra desempenho superior gravando arquivos no local de saída do trabalho durante a fase de confirmação da tarefa, em vez da fase de confirmação do trabalho. Essa abordagem permite a gravação distribuída de arquivos e elimina a necessidade de armazenamento temporário de metadados de commit no Amazon S3, resultando em maior economia. Além disso, o MagicV2 committer oferece maior flexibilidade, permitindo a substituição de caminhos de arquivos em várias threads durante o processo de commit.

Habilitar o MagicV2 Committer

Para habilitar o MagicV2 committer, passe a seguinte configuração na configuração do seu trabalho ou use a configuração core-site para definir a propriedade. Para obter mais informações, consulte Configure applications.

mapreduce.outputcommitter.factory.scheme.s3a=org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory fs.s3a.committer.magic.enabled=true fs.s3a.committer.name=magicv2 fs.s3a.committer.magic.track.commits.in.memory.enabled=true

Para workloads que exigem a substituição do diretório existente antes de confirmar ou gravar os novos arquivos, é necessário a seguinte configuração adicional, juntamente com a configuração mencionada anteriormente.

fs.s3a.committer.magic.overwrite.and.commit=true fs.s3a.committer.magic.delete.directory.threads=thread size

O valor padrão para a configuração threads é 20. No entanto, esse parâmetro deve ser ajustado quando houver um grande número de diretórios a serem sobrescritos para obter melhor performance. Isso está disponível apenas no EMR-7.2.0 e versões superiores.

Considerações

  • Se a Java Virtual Machine (JVM) travar ou for encerrada enquanto as tarefas estiverem em execução e gravando dados no Amazon S3, é mais provável que os uploads em várias partes incompletos sejam abandonados. Por esse motivo, ao usar o MagicV2 committer, certifique-se de seguir as práticas recomendadas para gerenciar uploads em várias partes com falha. Para obter mais informações, consulte a seção Práticas recomendadas para trabalhar com buckets do S3 no Guia de gerenciamento do Amazon EMR.

  • Se um trabalho falhar, todos os arquivos confirmados pelas tarefas bem-sucedidas ainda estarão visíveis no caminho de destino. Nesses casos, o usuário precisará limpar manualmente os arquivos confirmados antes de executar novamente o trabalho no mesmo caminho de destino.

  • O MagicV2 Committer consome uma pequena quantidade de memória para cada arquivo gravado por uma tentativa de tarefa até que a tarefa seja confirmada ou cancelada. Na maioria dos trabalhos, a quantidade de memória consumida é insignificante. Porém, em alguns casos em que um único processo de executor lida com um grande número de tarefas ao mesmo tempo, isso pode sobrecarregar a memória, e o contêiner ou executor pode ficar sem memória (OOM). Aumentar a memória do contêiner ou do executor deve resolver esse problema.