如何从HDFS FileSystem执行hadoop jar?

Jul*_*ias 2 hadoop

我总是从本地文件系统执行作业,如下所示

hadoop jar /home/usr/jar/myjar.jar com.test.TestMain 
Run Code Online (Sandbox Code Playgroud)

我如何执行相同的命令,但myjar.jar将位于hdfs中?

就像是

hadoop jar hdfs:///home/usr/jar/myjar.jar com.test.TestMain 
Run Code Online (Sandbox Code Playgroud)

但是这当然行不通...

Ion*_*aru 5

hadoop fs -copyToLocal hdfs:///home/usr/jar/myjar.jar /tmp/myjar.jar && hadoop jar /tmp/myjar.jar com.test.TestMain 
Run Code Online (Sandbox Code Playgroud)

  • 从技术上讲,本地文件不必称为 myjar.jar。您可以使用 /dev/urandom (具有不同参数的情况)生成临时目录/文件名并立即将其删除(清理)。Java 不在乎 jar 是否不再存在。这是一个 hack,但它可以避免仅手动挂载 hdfs 的所有麻烦(fstab 挂载发生在启动时,而不是 hdfs 的情况 - 在更晚的时间并且可能处于安全模式)。 (2认同)