Как я могу запустить 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. Это может быть много оперативной памяти.

Другие вопросы по тегам