Erro de cluster do Amazon EMR: muitas falhas de busca - 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á.

Erro de cluster do Amazon EMR: muitas falhas de busca

A presença de mensagens de erro "Too many fetch-failures (Excesso de falhas de busca)" ou "Error reading task output (Erro ao ler a saída da tarefa)" nas etapas ou em logs de tentativas de tarefas indica que a tarefa em execução está dependendo da saída de uma outra tarefa. Isso geralmente ocorre quando uma tarefa é colocada na fila de execução e necessita da saída de uma ou mais tarefas de mapeamento, e essa saída ainda não está disponível.

Há vários motivos pelos quais a saída pode não estar disponível:

  • A tarefa de pré-requisito ainda está em processamento. Essa geralmente é uma tarefa de mapeamento.

  • Os dados podem estar indisponíveis devido à conectividade de rede ruim, se os dados estiverem localizados em uma instância diferente.

  • Se o HDFS estiver sendo usado para recuperar a saída, pode haver um problema com o HDFS.

A causa mais comum deste erro é que a tarefa anterior ainda está em processamento. Isso é mais provável se os erros estão ocorrendo quando as tarefas de redução estão sendo executadas pela primeira vez. Você pode verificar se é esse o caso examinando o log do syslog para a etapa do cluster que está gerando o erro. Se o syslog mostra que ambas as tarefas de mapeamento e redução estão em andamento, isso indica que a fase de redução foi iniciada e, ao mesmo tempo, há tarefas de mapeamento que ainda não foram concluídas.

Um item a ser pesquisado nos logs é a porcentagem de andamento do mapeamento que vai até 100% e, em seguida, cai para um valor mais baixo. Quando a porcentagem está em 100%, isso não significa que todas as tarefas de mapeamento foram concluídas. Isto significa simplesmente que o Hadoop está executando todas as tarefas de mapeamento. Se esse valor voltar a ficar abaixo de 100%, isso significa que uma tarefa de mapeamento falhou e, dependendo da configuração, o Hadoop pode tentar reprogramar a tarefa. Se a porcentagem do mapa permanecer em 100% nos registros, observe as CloudWatch métricas, especificamenteRunningMapTasks, para verificar se a tarefa do mapa ainda está sendo processada. Você também pode encontrar essas informações usando a interface da web do Hadoop no nó principal.

Se você está vendo esse problema, pode tentar várias ações:

  • Inclua instruções na fase de redução para esperar mais antes de iniciar. Você pode fazer isso alterando a definição da configuração do Hadoop mapred.reduce.slowstart.completed.maps para um tempo maior. Para obter mais informações, consulte Como criar ações de bootstrap para instalar softwares adicionais com um cluster do Amazon EMR.

  • Iguale a contagem de reducers com a capacidade total de reducers do cluster. Você pode fazer isso ajustando a definição de configuração do Hadoop mapred.reduce.tasks de acordo com o trabalho.

  • Use um código de classe de combiner para minimizar o número de saídas que precisam ser obtidas.

  • Verifique se não há problemas com o EC2 serviço da Amazon que estejam afetando o desempenho da rede do cluster. Você pode fazer isso usando o Painel de status dos serviços.

  • Analise os recursos de CPU e memória das instâncias no seu cluster para assegurar-se de que o processamento dos dados não está degradando os recursos dos seus nós. Para obter mais informações, consulte Configuração de hardware e redes do cluster do Amazon EMR.

  • Verifique a versão da Imagem de máquina da Amazon (AMI) usada no cluster do Amazon EMR. Se a versão estiver entre a 2.3.0 e a 2.4.4, ambas incluídas, atualize para uma versão mais recente. As versões da AMI desse intervalo especificado usam uma versão do Jetty que pode falhar ao produzir uma saída da fase de mapeamento. O erro de busca ocorre quando os reducers não conseguem obter uma saída da fase de mapeamento.

    O Jetty é um servidor de HTTP de código aberto usado para estabelecer a comunicação entre máquinas em um cluster do Hadoop.