Я хочу запустить nutch в ядре linux, я вошел в систему как пользователь root, я установил все переменные среды и настройки файла nutch. Я создал файл url.txt, содержащий URL-адрес для сканирования. Когда я пытаюсь запустить Nutch, используя следующую команду,
bin/nutch crawl urls -dir pra
он генерирует следующее исключение.
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
На сервере достаточно места для запуска любого java-приложения. Статику я приложил ..
total used free
Mem: 524320 194632 329688
-/+ buffers/cache: 194632 329688
Swap: 2475680 0 2475680
Total: 3000000 194632 2805368
Достаточно ли памяти для нутча? Пожалуйста, помогите мне, я новичок в ядре Linux и Nutch. Заранее спасибо.
Вызов исполняемых файлов (например, whoami) в Java требует сначала создания полной копии процесса Java. Вам нужно уменьшить максимальный размер кучи (-Xmx256m) до того места, где у вас может быть две копии в ОЗУ одновременно.
Прочтите вывод:
Не удается запустить программу "whoami": java.io.IOException: error = 12, не удается выделить память
Похоже, у вас недостаточно оперативной памяти или файла / раздела подкачки.
В 32-битной установке операционной системы JVM (виртуальная машина Java) не может обрабатывать память больше 4 ГБ. Если вы хотите использовать JVM, чтобы занимать более 4 ГБ, вам необходимо использовать 64-битную версию JVM, что также означает, что операционная система также должна быть 64-битной версией.
Я предполагаю, что именно поэтому вы получаете эту ошибку. У вас 5 ГБ памяти, и это может быть проблемой. Вы должны либо указать своему приложению использовать только 75% доступной памяти, либо попытаться уменьшить ОЗУ до 4 ГБ и выполнить проверку. У меня была такая же проблема в решении Zimbra Messaging, которое использует Java для веб-интерфейса.
Возможно, на вашем сервере отключен / proc / sys / vm / overcommit_memory. Без излишней фиксации системный вызов «fork» требует, чтобы на вашем сервере было достаточно оперативной памяти или свопа для полной второй копии процесса Java. Это может быть много оперативной памяти.