Назад | Перейти на главную страницу

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

Вызов исполняемых файлов (например, 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. Это может быть много оперативной памяти.