【发布时间】:2014-04-05 13:42:02
【问题描述】:
我想知道为什么 jar 文件不需要 .class 文件来在 hadoop 中执行 MapReduce 代码。那么如果使用 Jar 文件,那么为什么在 hadoop 中执行任何其他非 MapReduce Java 代码时不这样做呢?此外,在 hadoop 中执行任何其他非 MapReduce Java 代码时,为什么在命令行中直接提到编译类以及 hadoop 关键字,例如。如果我有一个程序可以使用 url 在 hadoop 中显示文件,即。对于 FileSystemCat 类
public class FileSystemCat {
public static void main(String[] args) throws Exception {
String uri = args[0];
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
InputStream in = null;
try {
in = fs.open(new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}
编译程序后执行程序的命令是“hadoop FileSystemCat”而不是“hadoop Java FileSystemCat”。在普通环境中,执行程序的步骤是:
Javac FileSystemCat.java
Java FileSystemCat.class
【问题讨论】: