Problema na tarefa Yarn MapReduce - Erro de inicialização do contêiner AM no Hadoop 2.3.0

Eu configurei um cluster de 2 nós do Hadoop 2.3.0. Está funcionando bem e posso executar com êxito o exemplo distributedshell-2.2.0.jar. Mas quando tento executar qualquer trabalho de mapreduce, recebo erro. Eu configurei o MapRed.xml e outras configurações para executar o trabalho do MapReduce de acordo com ( http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide ), mas estou recebendo o seguinte erro:

14/03/22 20:31:17 INFO mapreduce.Job: Job job_1395502230567_0001 failed with state FAILED due to: Application application_1395502230567_0001 failed 2 times due to AM Container for appattempt_1395502230567_0001_000002 exited 
with  exitCode: 1 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException: 
    org.apache.hadoop.util.Shell$ExitCodeException: 
        at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
        at org.apache.hadoop.util.Shell.run(Shell.java:418)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
        at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)


    Container exited with a non-zero exit code 1
    .Failing this attempt.. Failing the application.
    14/03/22 20:31:17 INFO mapreduce.Job: Counters: 0
    Job ended: Sat Mar 22 20:31:17 PKT 2014
    The job took 6 seconds.

E se olhar para stderr (registro de trabalho), há apenas uma linha "Could not find or load main class 614"

Agora eu pesquisei no Google e geralmente esse problema ocorre quando você tem versões JAVA diferentes ou no yarn-site.xmlcaminho de classe não está definido corretamente, o meu yarn-site.xmltem esse

  <property>
    <name>yarn.application.classpath</name>
    <value>/opt/yarn/hadoop-2.3.0/etc/hadoop,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*</value>
  </property>

Então, outras idéias, qual poderia ser o problema aqui?

Estou executando meu trabalho de mapreduce como este:

$HADOOP_PREFIX/bin/hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter out
Resposta 1

Resolvi esta questão com o seguinte:

Porque no meu hadoop / etc / hadoop [catálogo de configurações do hadoop-2.7.3]: Sobre o mapred-site.xml:

<configuration>
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>
 <property>
   <name>mapreduce.jobhistory.address</name>
   <value>zhangjunj:10020</value>
 </property>
 <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>zhangjunj:19888</value>
 </property>
</configuration>

Neste arquivo. O 'zhangjunj' deve ser o nome da máquina do seu mestre, mas eu escrevi 'hadoop' no começo.

Resposta: 2

Corrigi o problema, devido a caminhos incorretos. Ao fornecer o caminho completo do diretório para mapred, hdfs, fios e comuns resolve o problema.

Obrigado Tony

Resposta: 3

Por favor, verifique a propriedade. Verifique se todos os frascos necessários estão presentes.

** yarn.application.classpath ** / etc / hadoop / conf, / usr / lib / hadoop / , / usr / lib / hadoop / lib / , / usr / lib / hadoop-hdfs / , / usr / lib / hadoop-hdfs / lib / , / usr / lib / hadoop-yarn / , / usr / lib / hadoop-yarn / lib / , / usr / lib / hadoop-mapreduce / , / usr / lib / hadoop-mapreduce / lib /

Resposta: 4

Talvez você possa executar o HistoryServer com o seguinte código em $ HADOOP_HOME / bin,

./mr-jobhistory-daemon.sh start historyserver

E então você pode controlar os logs do Erro Hadoop a partir deste URL, (Log do histórico)

http://<Resource Manager Host name adress>:8088/cluster

E provavelmente você recebe uma exceção de classe não encontrada

Resposta: 5

Eu também encontrei esse problema no Ambari 2.0 + HDP2.3 + HUE3.9. Minha experiência de correção é: 1. verifique se o cliente spark existe em todos os nós de fios do hadoop 2. exporte SPARK_HOME em todos os nós de fios (cliente spark) e host de matiz

Resposta: 6

As permissões devem ser 6050 owner: hadoop do grupo raiz

--- Sr-s --- 1 raiz hadoop / usr / lib / hadoop-yarn / bin / container-executor

Resposta: 7

Verifique primeiro os logs (eles estarão no diretório de usuários no diretório de logs do Hadoop).

Verifique também as permissões de todos os diretórios mencionados em arquivos XML de fios, hdfs e sites principais. Porque esse erro é causado por problemas de permissão incorretos na maioria dos casos.

Resposta: 8

Verifique o tamanho da troca no seu sistema: free -m Se houver Swap: 0 0 0alocar memória de troca seguindo estas instruções

Resposta: 9

No meu caso, o problema foi devido à memória insuficiente. Eu inseri o abaixo em yarn-site-xml como adino sugeriu em seu comentário acima:

<property> <name>yarn.nodemanager.delete.debug-delay-sec</name> <value>600</value> </property>

Depois disso, pude ver um erro no arquivo de log stderr. Não me lembro das palavras exatas (o arquivo de log foi excluído depois de um tempo). Foi na linha de "erro de falta de memória"

Editei minha máquina virtual para adicionar outra partição de troca do tamanho 3 Gigabytes (provavelmente um exagero total). Eu fiz isso com o Gparted.

Depois tive que registrar a nova partição swap digitando

mkswap /dev/sda6 (/dev/sda6 is the partition name)
swapon /dev/sda6 

Encontrei o uid da nova partição swap digitando "blkid" e copiando o uid.

Registrei a troca no arquivo fstab:

sudo vi /etc/fstab

Eu adicionei uma nova linha para a nova partição swap. Copiei a linha inteira da partição swap anterior e apenas alterei o UID.

UUID=2d29cddd-e721-4a7b-95c0-7ce52734d8a3 none  swap    sw      0       0

Depois disso, o erro desapareceu. Tenho certeza de que existem maneiras mais elegantes de resolver isso, mas isso funcionou para mim. Eu sou muito novo em lidar com Linux.

Resposta: 10

Diga, "execute myApp.jar com cpu = 800 e memória = 1024". Eu faço programação em java há muitos anos e é um constrangimento fazer essa pergunta. Eu nem sei se isso é possível ou não. E ...

Estou usando logs de chamadas do Android no meu aplicativo e gostaria de determinar se a última chamada foi de entrada ou de saída. Isto é o que eu tentei até agora, no entanto, o tipo int me dá um erro ...

Eu escolhi pegar o arquivo de propriedades para personalizar algumas configurações. Eu uso o código a seguir para disponibilizar um Objeto de Propriedades em uma classe Propriedades defaultProps = new Properties (); experimentar { ...

Eu tenho um programa Java que analisa vários arquivos de entrada diferentes. Mesmo quando um erro é encontrado nesses arquivos de entrada, a análise ainda pode continuar e coletar vários outros erros também. Então, o que eu quero ...