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

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 HDFS for usado para recuperar a saída, pode haver um problema comHDFS.

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 Criar ações de bootstrap para instalar softwares adicionais.

  • 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 CPU e de memória das instâncias em seu cluster para garantir que o processamento de dados não esteja sobrecarregando os recursos dos seus nós. Para obter mais informações, consulte Configurar o hardware e as redes do cluster.

  • Verifique a versão da Amazon Machine Image (AMI) usada em seu EMR cluster da Amazon. 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. AMIas versões no intervalo especificado usam uma versão do Jetty que pode falhar em fornecer a saída da fase do mapa. O erro de busca ocorre quando os reducers não conseguem obter uma saída da fase de mapeamento.

    O Jetty é um HTTP servidor de código aberto usado para comunicações entre máquinas em um cluster Hadoop.