我必须将一些 Spark python 脚本作为 Oozie 工作流运行,我已经使用 Spark 在本地测试了这些脚本,但是当我将它们提交给 Oozie 时,我无法弄清楚为什么它不起作用。我正在使用 Cloudera VM,并且正在使用 Hue 仪表板管理 Oozie。以下是 spark 操作的工作流配置:
Spark Master: local[*]
Mode: client
App name: myApp
Jars/py files: hdfs://localhost:8120/user/cloudera/example.py
Main class: org.apache.spark
我还尝试运行一个简单的示例,它只打印一些东西,但是我提交 Oozie 的每个脚本都会给我这个输出:
>>> Invoking Spark class now >>>
Intercepting System.exit(1)
<<< Invocation of Main class completed <<<
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], exit code [1]
Oozie Launcher failed, finishing Hadoop job gracefully
Oozie Launcher, uploading action data to HDFS sequence file: hdfs://quickstart.cloudera:8020/user/cloudera/oozie-oozi/0000005-161228161942928-oozie-oozi-W/spark-cc87--spark/action-data.seq
Oozie Launcher ends
[编辑]
我发现工作流只有在我设置 spark master: yarn-cluster 时才会启动,但即使在这种模式下,它也会启动保持在 95% 完成的地图上的纱线容器,而 spark 应用程序仍处于 ACCEPTED 状态。我正在尝试更改 Yarn 内存参数以允许 Spark 操作启动。粗壮的只是打印心跳
[解决了]
oozie 工作流仅在 py 文件是本地文件时启动,并且在 hue 创建工作流文件夹后手动插入到 lib 文件夹中。我认为最好的解决方案仍然是编写带有 spark-submit 的 shell 脚本