如何设置 HADOOP_CLASSPATH 以将本地文件系统与本地作业运行器一起使用?

How to set HADOOP_CLASSPATH for using the local filesystem with a local job runner?

如何设置 HADOOP_CLASSPATH 以将本地文件系统用于本地作业 运行ner? 如何设置本地目录的输入输出路径?

当我尝试使用以下命令 运行 时,mapper 和 reducer 类 会出现 ClassNotFoundException。

hadoop WordCount input/sample.txt output

当前值为:

: hadoop 类路径

/usr/local/hadoop/hadoop-3.2.1/etc/hadoop:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/common/lib/*:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/common/*:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/hdfs:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/hdfs/lib/*:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/hdfs/*:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/mapreduce/*:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/yarn:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/yarn/lib/*:/usr/local/hadoop/hadoop-3.2.1/share/hadoop/yarn/*:/usr/local/hadoop/hadoop-3.2.1/etc/hadoop/usr/local/hadoop/hadoop-3.2.1/share/hadoop/common/*.jar

版本:
阿帕奇 hadoop-3.2.1 ,
openjdk 11.0.5。

请帮忙。它对调试很有用。提前致谢。

我相信如果你有 FileNotFound 异常,但你的类路径看起来很好,所以我很难看到你会得到 ClassNotFound 异常

虽然,这条路好像不对/usr/local/hadoop/hadoop-3.2.1/etc/hadoop/usr/local/hadoop/hadoop-3.2.1/share/hadoop/common/*.jar

我建议hadoop-3.2.1下的所有文件移动/usr/local/hadoop,或者至少,将hadoop-3.2.1目录重命名为/usr/local/hadoop/3.2.1/

默认情况下,Hadoop 作业使用 file:// 路径作为您的 fs.defaultFS(在 core-site.xml 中定义)

否则,如果您将其更改为使用 hdfs://,那么您仍然可以像这样使用本地文件

hadoop fs -ls file://

对于 运行 个职位,我建议使用 yarn jar,而不是 hadoop <name>。你需要将你的 Java 应用程序隐藏到一个 uber-jar 中,或者使用现有的 hadoop-examples JAR 来 运行 WordCount