我正在尝试在 EMR 集群上使用 Oozie 运行一个简单的 Java Spark 作业。该作业仅从输入路径获取文件,对其执行很少的基本操作并将结果放在不同的输出路径中。
当我尝试使用 spark-submit 从命令行运行它时,如下所示,它工作正常:
spark-submit --class com.someClassName --master yarn --deploy-mode cluster /home/hadoop/some-local-path/my-jar-file.jar yarn s3n://input-path s3n://output-path
然后我在 Oozie 工作流程中设置了相同的东西。但是,当从那里运行时,作业总是失败。标准输出日志包含这一行:
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], main() threw exception, Attempt to add (hdfs://[emr-cluster]:8020/user/oozie/workflows/[WF-Name]/lib/[my-jar-file].jar) multiple times to the distributed cache.
java.lang.IllegalArgumentException: Attempt to add (hdfs://[emr-cluster]:8020/user/oozie/workflows/[WF-Name]/lib/[my-jar-file].jar) multiple times to the distributed cache.
我在 StackOverflow 上找到了一个知识库注释和另一个问题,它处理了类似的错误。但对他们来说,由于内部 JAR 文件(而不是用户传递运行的文件)而导致作业失败。尽管如此,我还是尝试了它的解决步骤来删除 share-lib 中 spark 和 oozie 之间常见的 jar 文件,并最终从“ /user/oozie/share/lib/lib_*/spark ”中删除了一些文件。不幸的是,这也没有解决问题。
关于如何调试此问题的任何想法?
蝴蝶不菲
相关分类