我正在努力让nutch第一次运行工作项目。目前,计划是从一台机器(Windows 7)运行nutch,以便从十几个网站上搜索上下文。以下是cygwin的命令行输出。
$ bin/nutch inject crawl/crawldb urls
Injector: starting at 2016-10-29 09:16:37
Injector: crawlDb: crawl/crawldb
Injector: urlDir: urls
Injector: Converting injected urls to crawl db entries.
Injector: java.lang.NullPointerException
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1012)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:445)
at org.apache.hadoop.util.Shell.run(Shell.java:418)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:739)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:722)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:633)
at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:467)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:424)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:906)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:887)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:849)
at org.apache.hadoop.fs.FileSystem.createNewFile(FileSystem.java:1149)
at org.apache.nutch.util.LockUtil.createLockFile(LockUtil.java:58)
at org.apache.nutch.crawl.Injector.inject(Injector.java:357)
at org.apache.nutch.crawl.Injector.run(Injector.java:467)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.nutch.crawl.Injector.main(Injector.java:441)
查看源代码,这里是org.apache.nutch.crawl.Injector的第440行至第443行:
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(NutchConfiguration.create(), new Injector(), args);
System.exit(res);
}
目前尚不清楚它是否是NutchConfiguration.create()或新的Injector()失败。我从nutch网站上的教程设置我的安装。我在文件中添加了3个网址列表,每行1个./urls/seed.txt;并编辑./conf/nutch-site.xml。
任何有关调查/调试的建议都将受到赞赏。 谢谢!
答案 0 :(得分:0)
好吧,在这里有些挣扎之后,是让hadoop与cygwin / windows一起工作的最后步骤。
根据hadoop版本从https://github.com/cdarlint/winutils的文件夹bin下下载正确版本的winutils.exe和hadoop.dll。
将HADOOP_HOME设置为上述bin文件夹的下载目录。 (请注意,如果以上两个文件是从目录D:\ winutil \ bin下载的,则HADOOP_HOME = D:\ winutil)
确保将D:\ winutil \ bin添加到Windows的PATH变量中。此步骤现在很重要(已经很久了)。
答案 1 :(得分:-1)
我有同样的问题。通过在计算机上设置Hadoop来解决此问题,并将winutils.exe
包含在%HADOOP%/bin
中。
然后将得到java.lang.UnsatisfiedLinkError error
。要解决此问题,请在%NUTCH_HOME%/runtime/local/bin
中打开nutch文件,然后在行下方注释
if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
NUTCH_OPTS=("${NUTCH_OPTS[@]}" -Djava.library.path="$JAVA_LIBRARY_PATH")
fi