Leia a saída:
Cannot run program "whoami": java.io.IOException: error=12, Cannot allocate memory
Parece que você não tem RAM suficiente ou nenhum arquivo de swap / partição.
Eu quero executar o nutch no kernel do linux, eu fiz o login como um usuário root, Eu configurei toda a configuração do arquivo de variável de ambiente e nutch. Eu criei um arquivo url.txt que contém o URL para rastrear, Quando estou tentando executar o nutch usando o seguinte comando,
bin/nutch crawl urls -dir pra
gera a seguinte exceção.
crawl started in: pra
rootUrlDir = urls
threads = 10
depth = 5
Injector: starting
Injector: crawlDb: pra/crawldb
Injector: urlDir: urls
Injector: Converting injected urls to crawl db entries.
Exception in thread "main" java.io.IOException: Failed to get the current user's information.
at org.apache.hadoop.mapred.JobClient.getUGI(JobClient.java:717)
at org.apache.hadoop.mapred.JobClient.configureCommandLineOptions(JobClient.java:592)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:788)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1142)
at org.apache.nutch.crawl.Injector.inject(Injector.java:160)
at org.apache.nutch.crawl.Crawl.main(Crawl.java:113)
Caused by: javax.security.auth.login.LoginException: Login failed: Cannot run program "whoami": java.io.IOException: error=12, Cannot allocate memory
at org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:250)
at org.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:275)
at org.apache.hadoop.mapred.JobClient.getUGI(JobClient.java:715)
... 5 more
O servidor tem espaço suficiente para executar qualquer aplicativo java. Anexei a estática ...
total used free
Mem: 524320 194632 329688
-/+ buffers/cache: 194632 329688
Swap: 2475680 0 2475680
Total: 3000000 194632 2805368
É espaço de memória suficiente para nutch? Por favor, alguém me ajude, eu sou novo com kernel linux e nutch. Obrigado antecipadamente.
Chamadas para executáveis (como whoami) em Java requerem primeiro uma cópia inteira do processo Java. Você desejará diminuir seu tamanho de heap máximo (-Xmx256m) para o local em que você pode ter duas cópias na RAM ao mesmo tempo.
Na instalação de 32 bits de um sistema operacional, a JVM (Java Virtual Machine) não pode manipular memória maior que 4 GB. Se você quiser usar a JVM para ter mais de 4 GB, terá que usar a versão de 64 bits da JVM, o que também significa que o sistema operacional também deve ser a versão de 64 bits. Eu presumo que é por isso que você está recebendo esse erro. Você tem 5GB de memória e esse pode ser o problema. Você deve informar ao seu aplicativo para usar apenas 75% da memória disponível ou tentar reduzir a RAM para 4 GB e verificar. Eu tive o mesmo problema na solução Zimbra Messaging, que usa o Java para a interface da Web.
É possível que seu servidor tenha desativado / proc / sys / vm / overcommit_memory. Sem comprometer excessivamente, uma chamada de sistema "fork" requer que seu servidor tenha RAM suficiente ou troque por uma segunda cópia completa do processo Java. Isso pode ser muita memória RAM.
Tags linux web-crawler nutch