我遇到了一个问题,hadoop unjar 命令并没有真正在/mnt/hadoop/tmp/hadoop-${user.name}
.
上下文是我想使用 .jar 从 jar 文件中获取一个 shell 脚本文件XXX.class.getResourceAsStream("/my_shell.sh")
。如果我使用java -cp
命令来运行这个 jar,它可以按我的预期执行。
但是如果我使用 hadoop jar 命令来运行这个 jar,我就无法得到我想要的。
调试后发现getResource
URL是这样
的url=file:/mnt/hadoop/tmp/hadoop-${user.name}/hadoop-unjar1355749400200754398/my_shell.sh
但实际上.里面根本没有hadoop-unjar1355749400200754398
生成目录/mnt/hadoop/tmp/hadoop-${user.name}/
。
也没有打印任何错误消息。我搜索了很多文档,但没有发现任何类似的问题。
注意:jar 中的这个 main 不提交任何 hadoop 作业,它只尝试从 jar 中获取 shell 文件。
hadoop 版本是 0.20.2-cdh3u3。