我如何在Linux内核上运行nutch?

我想在Linux内核上运行nutch,我已经以root用户的身份login了,我已经设置了所有的环境variables和nutch文件设置。 我已经创build了一个url.txt文件,其内容的url爬行,当我试图运行nutch使用下面的命令,

bin/nutch crawl urls -dir pra 

它会产生以下exception。

 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 

nutch有足够的内存空间吗? 请有人帮助我,我是新的Linux内核和nutch。 提前致谢。

阅读输出:

无法运行程序“whoami”:java.io.IOException:error = 12,无法分配内存

看起来你没有足够的RAM或没有交换文件/分区。

调用Java中的可执行文件(如whoami)需要首先制作完整的Java进程副本。 您需要将最大堆大小(-Xmx256m)放到RAM中同时有两个副本的位置。

在操作系统的32位安装中,JVM(Java虚拟机)不能处理大于4GB的内存。 如果你想使用JVM超过4GB,那么你必须使用64位版本的JVM,这也意味着操作系统也应该是64位版本。
我想这就是为什么你会得到这个错误。 你有5GB的内存,这可能是问题。 您应该告诉您的应用程序只使用75%的可用内存,或尝试将内存降至4GB并检查。 在使用Java作为Web界面的Zimbra Messaging解决scheme中,我遇到了同样的问题。

您的服务器可能禁用/ proc / sys / vm / overcommit_memory。 如果没有过度使用,“叉”系统调用要求您的服务器有足够的RAM或交换完整的Java进程的第二个副本。 这可能是很多的RAM。