Problems when building and running Nutch in eclipse
2012-08-13 13:06
435 查看
最近准备开始学习开源项目Nutch。首先要做的就是将代码checkout出来,生成并运行。我使用的是Windows环境下的Eclipse Juno IDE。在学习的过程中遇到了一些问题,在网上寻求答案时发现了一些问题是比较常见的问题,这里举出几例作为参考并共与大家同学习。
1.“Failed to set permissions to path:”问题
从网上的解决方案综合来看,这个问题与hadoop-core包的版本有关,使用较新的版本时会出现,旧版本的非稳定版也会出现。我使用的是hadoop-0.20.2-core.jar。
2.chmod相关问题
该问题是由于chmod是unix系统下的命令,在windows下使用时要安装Cygwin来模拟,或至少要有cygwin下的chmod.exe,可参考这篇文章:http://javaprotlib.sourceforge.net/packages/io/howtofixhadoop.html 。另外,如果运行时仍找不到chmod,可能是环境变量配置失效,则可以在Eclipse->Run->Run
Configurations...->Environment选项卡,添加Path变量,值设置为chmod的路径。
3.Job Failed问题
引起这个问题的原因可能很多。具体原因可以查看/logs/hadoop.log的内容。我遇到的错误为:
java.io.IOException: Cannot run program "bash": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:149)
at org.apache.hadoop.util.Shell.run(Shell.java:134)
at org.apache.hadoop.fs.DF.getAvailable(DF.java:73)
at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:329)
at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:124)
at org.apache.hadoop.mapred.MapOutputFile.getOutputFileForWrite(MapOutputFile.java:61)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1469)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1154)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:359)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
... 11 more
这里的bash仍然是cygwin中的程序,如果添加%CYGWIN_HOME%\bin到Path变量后仍无效(在命令行中输入bash查看),则可以效仿问题2中的方法在Eclipse的运行配置的环境变量选项中设置。
刚开始学习Nutch会遇到很多问题,尤其是在Windows环境下,并且对Hadoop等项目不甚了解时更是如此,不过这样可以锻炼独立思考和解决问题的能力。对于较大规模的开源项目,在学习时贵有耐心和信心,循序渐进,必有所成。
日后遇到新问题会补充进来,欢迎大家指正。
-----------------------------------------------------------------------------------------------------
2012年8月14日
今天在做爬取时遇到一个新问题:
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist:\NewWS\Nutch\crawl\segments\20120814230156\parse_data
去该路径看了一下,parse_data文件夹确实没有生成。在网上论坛查了一下,结论是爬取过程中的错误所致。解决方案是将crawl目录删除,重新开始爬取即可。
另外在爬取某些网页时会遇到这样的提示:
Failed with: java.net.SocketException: Software caused connection abort: recv failed
这个错误的原因通常是:客户端或者服务器端有一端已经关闭,而另一端则以为连接还在的,在发送或接受请求的时候就会报这个错误。目前,我还没有研究具体的爬取代码部分,待今后详细学习调查。
补充一点:在linux系统(我用的是Ubuntu12)下运行crawl命令没有出现上述任何问题。
-----------------------------------------------------------------------------------------------------
1.“Failed to set permissions to path:”问题
从网上的解决方案综合来看,这个问题与hadoop-core包的版本有关,使用较新的版本时会出现,旧版本的非稳定版也会出现。我使用的是hadoop-0.20.2-core.jar。
2.chmod相关问题
该问题是由于chmod是unix系统下的命令,在windows下使用时要安装Cygwin来模拟,或至少要有cygwin下的chmod.exe,可参考这篇文章:http://javaprotlib.sourceforge.net/packages/io/howtofixhadoop.html 。另外,如果运行时仍找不到chmod,可能是环境变量配置失效,则可以在Eclipse->Run->Run
Configurations...->Environment选项卡,添加Path变量,值设置为chmod的路径。
3.Job Failed问题
引起这个问题的原因可能很多。具体原因可以查看/logs/hadoop.log的内容。我遇到的错误为:
java.io.IOException: Cannot run program "bash": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:149)
at org.apache.hadoop.util.Shell.run(Shell.java:134)
at org.apache.hadoop.fs.DF.getAvailable(DF.java:73)
at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:329)
at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:124)
at org.apache.hadoop.mapred.MapOutputFile.getOutputFileForWrite(MapOutputFile.java:61)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1469)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1154)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:359)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
... 11 more
这里的bash仍然是cygwin中的程序,如果添加%CYGWIN_HOME%\bin到Path变量后仍无效(在命令行中输入bash查看),则可以效仿问题2中的方法在Eclipse的运行配置的环境变量选项中设置。
刚开始学习Nutch会遇到很多问题,尤其是在Windows环境下,并且对Hadoop等项目不甚了解时更是如此,不过这样可以锻炼独立思考和解决问题的能力。对于较大规模的开源项目,在学习时贵有耐心和信心,循序渐进,必有所成。
日后遇到新问题会补充进来,欢迎大家指正。
-----------------------------------------------------------------------------------------------------
2012年8月14日
今天在做爬取时遇到一个新问题:
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist:\NewWS\Nutch\crawl\segments\20120814230156\parse_data
去该路径看了一下,parse_data文件夹确实没有生成。在网上论坛查了一下,结论是爬取过程中的错误所致。解决方案是将crawl目录删除,重新开始爬取即可。
另外在爬取某些网页时会遇到这样的提示:
Failed with: java.net.SocketException: Software caused connection abort: recv failed
这个错误的原因通常是:客户端或者服务器端有一端已经关闭,而另一端则以为连接还在的,在发送或接受请求的时候就会报这个错误。目前,我还没有研究具体的爬取代码部分,待今后详细学习调查。
补充一点:在linux系统(我用的是Ubuntu12)下运行crawl命令没有出现上述任何问题。
-----------------------------------------------------------------------------------------------------
相关文章推荐
- Run Nutch In Eclipse on Linux and Windows nutch version 0.9
- Problem with nutch-1.0 when run Nutch In Eclipse
- eclipse启动报错 Problems occurred when invoking code from plug-in: "org.eclipse.jface"
- Running Nutch in Eclipse
- Run Nutch In Eclipse on Linux and Windows nutch version 1.0
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".
- Run Nutch In Eclipse on Linux and Windows nutch version 0.9
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".
- Problems when installing R and Rstudio in Ubuntu:
- A class file was not written. The project may be inconsistent, if so try refreshing this project and building it. eclipse提示错误
- A class file was not written. The project may be inconsistent, if so try refreshing this project and building it. eclipse提示错误
- Writing, Building, and Running Chaincode in a Development Environment
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".
- !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".问题处理
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".
- Problems occurred when invoking code from plug-in: "org.eclipse.core.resources"
- 转载自wiki:Run Nutch In Eclipse on Linux and Windows nutch version 1.0
- 【ERROR】eclipse is running in a JRE,but a JDK is required
- Eclipse安装Mave后一直报错:The Maven Integration requires that Eclipse be running in a JDK......
- C++ Gotchas: Avoiding Common Problems in Coding and Design