EMR Spark MagicCommitProtocol - 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á.

EMR Spark MagicCommitProtocol

Do EMR 6.15.0 em diante, MagicCommitProtocol torna-se o padrão FileCommitProtocol para o Spark ao utilizar o sistema de arquivos S3A.

MagicCommitProtocol

MagicCommitProtocol É uma implementação alternativa do FileCommitProtocolque é otimizada para gravar arquivos com o EMR Spark no Amazon S3 ao usar o sistema de arquivos S3A. Esse protocolo visa melhorar o desempenho do aplicativo evitando o uso de operações de renomeação no Amazon S3 durante as fases de confirmação do trabalho e da tarefa.

Essa MagicCommitProtocol é a FileCommitProtocol implementação padrão usada pelo Spark em execução no Amazon Elastic Map Reduce (EMR) quando o sistema de arquivos S3A é utilizado. O usa MagicCommitProtocol internamente o MagicV2Committer para realizar as gravações de arquivos no Amazon S3.

Para operações de inserção estática, MagicCommitProtocol ele grava os arquivos no local de saída do trabalho durante a fase de confirmação da tarefa. Por outro lado, para operações dinâmicas de substituição por inserção, os arquivos gravados por tentativas de tarefa só aparecem no local de saída do trabalho após a confirmação do trabalho. Isso é feito exportando os metadados de confirmação de volta para o driver do Spark na chamada de confirmação da tarefa.

Habilitando MagicCommitProtocol

O MagicCommitProtocol é habilitado por padrão para o Spark executado no Amazon Elastic Map Reduce (EMR) ao usar o sistema de arquivos S3A.

Para usar o sistema de arquivos S3A, você pode:

  1. Use o esquema de arquivos como s3a:// ao definir a tabela, a partição ou o diretório.

  2. Defina a configuração fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem em core-site.xml.

Desativando o MagicCommitProtocol

  1. Você pode spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol definir como false codificando-o em umSparkConf, passando-o como um --conf parâmetro no shell do Spark ou nas spark-sql ferramentas, ou spark-submit em. conf/spark-defaults.conf Para obter mais informações, consulte Configuração do Spark na documentação do Apache Spark.

    O exemplo a seguir mostra como desabilitar MagicCommitProtocol durante a execução de um spark-sql comando.

    spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;"
  2. Use a classificação spark-defaults de configuração para definir a spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol propriedade como falsa. Para obter mais informações, consulte Configure applications.

MagicCommitProtocol considerações

  • Para inserção de partição estática, nos executores do Spark, o MagicCommitProtocol consome uma pequena quantidade de memória para cada arquivo gravado por uma tentativa de tarefa até que a tarefa seja confirmada ou abortada. Na maioria dos trabalhos, a quantidade de memória consumida é insignificante. Não há necessidade de memória extra no driver Spark

  • Para inserção dinâmica de partições, nos drivers do Spark, é MagicCommitProtocol necessária memória para armazenar informações de metadados de cada arquivo confirmado até que o trabalho seja confirmado ou abortado. Na maioria dos trabalhos, a configuração padrão de memória do driver do Spark é insignificante.

    Para trabalhos que têm tarefas de execução prolongada que gravam um grande número de arquivos, a memória que o confirmador consome pode ser perceptível e precisar de ajustes na memória alocada para executores do Spark. Você pode ajustar a memória usando a spark.driver.memory propriedade dos drivers do Spark e a spark.executor.memory propriedade dos executores do Spark. Como diretriz, uma única tarefa de gravação de 100.000 arquivos normalmente exigiria 200 MB adicionais de memória. Para obter mais informações, consulte Propriedades da aplicação na documentação de configuração do Apache Spark.