【发布时间】:2014-12-18 11:00:19
【问题描述】:
我有 Windows 7、Java 8、Maven 和 Eclipse。 我创建了一个 Maven 项目并使用了与here 几乎完全相同的代码。
这只是一个简单的“字数统计”示例。 我尝试从 Eclipse 启动“驱动程序”程序,我提供命令行参数(输入文件和输出目录)并得到以下错误:
Exception in thread "main" java.lang.NullPointerException at
java.lang.ProcessBuilder.start(ProcessBuilder.java:1012) at
org.apache.hadoop.util.Shell.runCommand(Shell.java:404) at
org.apache.hadoop.util.Shell.run(Shell.java:379) at
org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589) at
org.apache.hadoop.util.Shell.execCommand(Shell.java:678) at
org.apache.hadoop.util.Shell.execCommand(Shell.java:661) at
org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639) at
org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:435) at
org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:277) at
org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:125) at
org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:344) at
org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268) at
org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265) at
java.security.AccessController.doPrivileged(Native Method) at
javax.security.auth.Subject.doAs(Subject.java:422) at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491) at
org.apache.hadoop.mapreduce.Job.submit(Job.java:1265) at
org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1286) at
misc.projects.hadoop.exercises.WordCountDriverApp.main(WordCountDriverApp.java:29)
失败的行 (WordCountDriverApp.java:29) 包含启动作业的命令:
job.waitForCompletion(true)
我想让它发挥作用,因此我想了解一些东西:
如果我只想要本地模式(没有任何集群),我是否必须提供任何 hdfs-site.xml、yarn-site.xml ……所有这些? 我现在没有这些 XML 配置文件。据我记得,本地模式的默认值都是可以的,也许我错了。
是否有可能在 Windows 下(启动任何 Hadoop 作业)或整个 Hadoop 仅适用于 Linux?
附: Hadoop依赖如下:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
【问题讨论】: