gpt4 book ai didi

java - 为什么在 hadoop 中执行 MapReduce 代码时需要 jar 文件,但在 hadoop 中执行任何其他非 MapReduce Java 代码时不需要 jar 文件

转载 作者:行者123 更新时间:2023-12-01 13:10:57 25 4
gpt4 key购买 nike

我想知道为什么在 hadoop 中执行 MapReduce 代码需要 jar 文件而不是 .class 文件。那么,如果使用 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

最佳答案

 hadoop jar <jar> [mainClass] args... 

运行 jar 文件。用户可以将 MapReduce 代码捆绑在 jar 文件中,并使用此命令执行它。

 hadoop CLASSNAME 

hadoop脚本可用于调用任何类。

上面的命令做了两个思考。

1)将Hadoop安装lib目录下的所有jar添加到正在运行的jar或类的类路径中。

2)将hadoop安装的配置目录添加到类路径中。

因此运行的JAR或CLASS将获取hadoop安装类路径中的所有类以及安装的所有配置文件。

如果您使用简单的 Java CLASSNAME 命令运行 JAR 或 CLASS,则必须将上述两个组件分别添加到 java 类路径中。

关于java - 为什么在 hadoop 中执行 MapReduce 代码时需要 jar 文件,但在 hadoop 中执行任何其他非 MapReduce Java 代码时不需要 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com