Nutch 1.12 on Cygwin on Windows 7 - NullPointerException
Nutch 1.12 on Cygwin on Windows 7 - NullPointerException
我正在为一个工作项目努力 运行ning。目前,计划是 运行 从一台机器 (Windows 7) 抓取来自十几个网站的上下文。下面是 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 网站上的教程设置我的安装。我在文件 ./urls/seed.txt 中放了一个包含 3 个网址的列表,每行 1 个;并编辑了 ./conf/nutch-site.xml.
对 investigation/debugging 的任何建议,我们将不胜感激。
谢谢!
我遇到了同样的问题。通过在机器中设置 Hadoop 并在 %HADOOP%/bin
.
中包含 winutils.exe
来解决它
然后会得到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
好的,在这里有些挣扎之后是让 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 变量中。这一步现在很重要(不久前)。
我正在为一个工作项目努力 运行ning。目前,计划是 运行 从一台机器 (Windows 7) 抓取来自十几个网站的上下文。下面是 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 网站上的教程设置我的安装。我在文件 ./urls/seed.txt 中放了一个包含 3 个网址的列表,每行 1 个;并编辑了 ./conf/nutch-site.xml.
对 investigation/debugging 的任何建议,我们将不胜感激。 谢谢!
我遇到了同样的问题。通过在机器中设置 Hadoop 并在 %HADOOP%/bin
.
winutils.exe
来解决它
然后会得到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
好的,在这里有些挣扎之后是让 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 变量中。这一步现在很重要(不久前)。