当我在 Mac 终端中运行 MapReduce 作业时:
PawandeepSingh1$ hadoop jar MaximumTemperature.jar
Exception in thread "main" java.io.IOException: Mkdirs failed to create /var/folders/v1/lyx_f0rj615cy8s54_bk053h0000gp/T/hadoop-unjar3698429834837790177/META-INF/license
at org.apache.hadoop.util.RunJar.ensureDirectory(RunJar.java:128)
at org.apache.hadoop.util.RunJar.unJar(RunJar.java:104)
at org.apache.hadoop.util.RunJar.unJar(RunJar.java:81)
at org.apache.hadoop.util.RunJar.run(RunJar.java:209)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
我见过类似的问题,它说我没有运行该作业的权限。谁能给我一步一步的解决方案。
提前谢谢您
您可能没有 hdfs 文件系统的权限来为您的作业创建目录。您是提交到集群还是运行本地测试环境。您可以 su 到对 hdfs 上的 /var 文件夹具有权限的用户吗?如果您不是集群的管理员,您需要让管理员将您添加到对 hdfs 有权限的组(hdfs、hadoop)中,或者授予您使用 sudo 或 sudo 或苏的能力。
您正在使用用户名“PawandeepSingh1”运行 jar。这些用户通常没有 /var 文件夹的写入权限。尝试像这样运行命令
sudo hadoop jar MaximumTemperature.jar
在您引用的问题中,查看获得最多支持的(不是选定的)解决方案。
这是特定于 MAC 操作系统和 IntelliJ 的错误。 IntelliJ 创建一个名为 META-INF/license 的文件,而 hadoop jar 命令并不能很好地使用它。 MAC 操作系统默认设置为不区分大小写,这会导致 META-INF/许可证文件出现一些问题。解决这个问题的方法是简单地使用以下命令从 jar 中删除该文件:
zip -d MaximumTemperature.jar META-INF/LICENSE