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á.
Erros de entrada e saída do cluster durante as operações do Amazon EMR
Os erros a seguir são comuns em operações de entrada e saída do cluster. Use as orientações apresentadas neste tópico para solucionar problemas e verificar a configuração.
Tópicos
O caminho para o Amazon Simple Storage Service (Amazon S3) com pelo menos três barras?
Você está tentando, recursivamente, desviar diretórios de entrada?
Você está tentando especificar um recurso usando um URL HTTP?
Você está referenciando um bucket do Amazon S3 usando um nome de formato inválido?
Você está tendo problemas para carregar dados para carregar ou descarregar dados do Amazon S3?
O caminho para o Amazon Simple Storage Service (Amazon S3) com pelo menos três barras?
Quando especificar um bucket do Amazon S3, inclua uma barra de término no final do URL. Por exemplo, em vez de referenciar um bucket como "s3n://amzn-s3-demo-bucket1", use "s3n://amzn-s3-demo-bucket1/", senão o cluster apresentará falha no Hadoop na maioria dos casos.
Você está tentando, recursivamente, desviar diretórios de entrada?
O Hadoop não pesquisa recursivamente diretórios de entrada para arquivos. Se você tiver uma estrutura de diretório como /corpus/01/01.txt, /corpus/01/02.txt, /corpus/02/01.txt, etc. e especificar /corpus/ como o parâmetro de entrada para seu cluster, o Hadoop não localizará nenhum arquivo de entrada porque o diretório /corpus/está vazio, e o Hadoop não verificará o conteúdo dos subdiretórios. Da mesma forma, o Hadoop não verifica recursivamente os subdiretórios de buckets do Amazon S3.
Os arquivos de entrada devem estar diretamente no diretório de entrada ou no bucket do Amazon S3 que você especificar, e não nos subdiretórios.
Seu diretório de saída já existe?
Se você especificar um caminho de saída que já existe, seu cluster apresentará falha no Hadoop na maioria dos casos. Isso significa que, se você executar um cluster uma vez e, em seguida, executá-lo novamente com, exatamente, os mesmos parâmetros ele, provavelmente, funcionará na primeira vez e depois nunca mais. Após a primeira execução, o caminho de saída passa a existir e isso faz com que haja falha em todas as execuções sucessivas.
Você está tentando especificar um recurso usando um URL HTTP?
O Hadoop não aceita locais de recursos especificados usando o prefixo http://. Não é possível fazer referência a um recurso usando um URL HTTP. Por exemplo, passar em http://mysite/myjar.jar como o parâmetro JAR faz com que haja falha no cluster.
Você está referenciando um bucket do Amazon S3 usando um nome de formato inválido?
Se você tentar usar um nome de bucket, como "amzn-s3-demo-bucket1.1" com o Amazon EMR, haverá falha no cluster porque o Amazon EMR exige que os nomes de bucket sejam nomes de host RFC 2396 válidos. O nome não pode terminar com um número. Além disso, devido aos requisitos do Hadoop, os nomes de bucket do Amazon S3 usados com o Amazon EMR devem conter somente letras minúsculas, números, pontos (.) e hífens (-). Para obter informações sobre como formatar nomes de buckets do Amazon S3, consulte Restrições e limitações do bucket no guia do usuário do Amazon Simple Storage Service.
Você está tendo problemas para carregar dados para carregar ou descarregar dados do Amazon S3?
O Amazon S3 é a fonte de entrada e saída mais conhecida do Amazon EMR. Um erro comum é tratar o Amazon S3 como um sistema de arquivos típico. Há diferenças entre o Amazon S3 e um sistema de arquivos que você precisa levar em conta ao executar seu cluster.
-
Se ocorrer um erro interno no Amazon S3, sua aplicação deverá lidar com isso normalmente e repetir a operação.
-
Se as chamadas para o Amazon S3 levam muito tempo para retornar, talvez seja necessário reduzir a frequência com que a aplicação chama o Amazon S3.
-
Listar todos os objetos em um bucket do Amazon S3 é uma chamada de alto custo. O aplicativo deve minimizar o número de vezes que faz isso.
Há várias maneiras de melhorar como seu cluster interage com o Amazon S3.
-
Inicie o cluster usando a versão mais recente do Amazon EMR.
-
Use o S3 DistCp para mover objetos para dentro e para fora do Amazon S3. O S3 DistCp implementa tratamento de erros, novas tentativas e recuos para atender aos requisitos do Amazon S3. Para obter mais informações, consulte Cópia distribuída usando o S3 DistCp.
-
Projete seu aplicativo com consistência eventual em mente. Use o HDFS para armazenamento de dados intermediários enquanto o cluster está em execução e o Amazon S3 somente para a entrada de dados iniciais e a saída dos resultados finais.
-
Se os seus clusters confirmarem 200 ou mais transações por segundo para o Amazon S3, entre em contato com o suporte
para preparar seu bucket para mais transações por segundo e considere usar estratégias de partição de chave, descritas em Amazon S3 performance tips and tricks . -
Defina a configuração io.file.buffer.size do Hadoop como 65536. Isso faz com que o Hadoop gaste menos tempo procurando entre objetos do Amazon S3.
-
Considere desabilitar o atributo de execução especulativa do Hadoop, se o cluster estiver enfrentando problemas de simultaneidade do Amazon S3. Isso também é útil quando você estiver solucionando problemas de um cluster lento. Você pode fazer isso definindo as propriedades
mapreduce.reduce.speculative
emapreduce.map.speculative
comofalse
. Ao executar um cluster, você pode definir esses valores usando a classificação de configuraçãomapred-env
. Para obter mais informações, consulte Configurar aplicações no Guia de versão do Amazon EMR. -
Se você estiver executando um cluster do Hive, consulte Você está tendo problemas para carregar ou descarregar dados do Amazon S3 no Hive?.
Para obter informações adicionais, consulte Práticas recomendadas com relação a erros do Amazon S3 no Guia do usuário do Amazon Simple Storage Service.