Как я могу запустить Nutch на ядре Linux?
Я хочу запустить 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. Заранее спасибо.
4 ответа
Прочитайте вывод:
Невозможно запустить программу "whoami": java.io.IOException: error=12, Невозможно выделить память
Похоже, у вас недостаточно оперативной памяти или нет файла / раздела подкачки.
Вызовы исполняемых файлов (например, whoami) в Java требуют сначала создания полной копии процесса Java. Вы захотите сбросить максимальный размер кучи (-Xmx256m) туда, где у вас может быть две копии в ОЗУ одновременно.
В 32-битной установке операционной системы JVM(виртуальная машина Java) не может обрабатывать память объемом более 4 ГБ. Если вы хотите использовать JVM для размещения более 4 ГБ, вам необходимо использовать 64-битную версию JVM, что также означает, что операционная система также должна быть 64-битной версией.
Я полагаю, именно поэтому вы получаете эту ошибку. У вас есть 5 ГБ памяти, и это может быть проблемой. Вы должны либо указать приложению использовать только 75% доступной памяти, либо попробовать уменьшить объем ОЗУ до 4 ГБ и проверить. У меня была такая же проблема в решении Zimbra Messaging, которое использует Java для веб-интерфейса.
Возможно, ваш сервер отключил / proc / sys / vm / overcommit_memory. Без перегрузки системный вызов "fork" требует, чтобы на вашем сервере было достаточно оперативной памяти или подкачки для полной второй копии процесса Java. Это может быть много оперативной памяти.