【发布时间】:2015-05-31 00:30:24
【问题描述】:
是否可以运行 Spark 作业,例如通过 Oozie 执行 Spark-sql 作业?
过去,我们将 Oozie 与 Hadoop 结合使用。由于我们现在在 YARN 之上使用 Spark-Sql,因此正在寻找一种使用 Oozie 来安排作业的方法。
谢谢。
【问题讨论】:
标签: hadoop apache-spark oozie
是否可以运行 Spark 作业,例如通过 Oozie 执行 Spark-sql 作业?
过去,我们将 Oozie 与 Hadoop 结合使用。由于我们现在在 YARN 之上使用 Spark-Sql,因此正在寻找一种使用 Oozie 来安排作业的方法。
谢谢。
【问题讨论】:
标签: hadoop apache-spark oozie
是的,它可能...过程也相同,您必须为 Oozia 提供一个目录结构,该目录结构包含 coordinator.xml、workflow.xml 和一个包含您的 Jar 文件的 lib 目录。
但请记住,Oozie 使用 java -cp 命令开始工作,而不是使用 spark-submit,所以如果您必须使用 Oozie 运行它,这里有一个技巧。
在后台使用spark-submit 运行你的jar。
在进程列表中查找该进程。它将在java -cp 命令下运行,但带有一些额外的罐子,由spark-submit 添加。在CLASS_PATH 中添加这些罐子。就是这样。现在您可以通过 Oozie 运行您的 Spark 应用程序了。
1. nohup spark-submit --class package.to.MainClass /path/to/App.jar &
2. ps aux | grep '/path/to/App.jar'
已编辑:您还可以使用最新的 Oozie,它也有 Spark Action。
【讨论】:
nohup spark-submit --class ... /path/to/app.jar &,但这似乎不起作用。 Oozie 似乎什么也没做,只是退出了,所以没有提交任何 spark 作业。我要做的是让 Oozie 提交 spark 作业然后退出(将作业标记为成功并已完成),因为否则它会消耗大量资源(至少 2 核和 2G 内存,我不能找到让它走低)。非常感谢!spark-submit 运行后立即尽早完成Oozie 进程(即通过使用nohup 或disown 在后台运行Spark 作业)。您可能不想为普通的 Spark 作业执行此操作,但对于 Spark 流式传输来说,这是有道理的,因为 Spark 流式传输作业 24/7 不间断运行。也许我不应该将 Oozie 用于 Spark Streaming...
<exec> 命令。这样你的命令就可以在程序终止后运行。
spark-submit 运行流作业。我也使用相同的技术。
要运行 Oozie 的 Spark SQL,您需要使用 Oozie Spark Action。 您可以在您的发行版中找到 oozie.gz。通常在 cloudera 中,您可以在下面的路径中找到这个 oozie 示例目录。 ]$ 定位 oozie.gz /usr/share/doc/oozie-4.1.0+cdh5.7.0+267/oozie-examples.tar.gz
Spark SQL 需要 hive-site.xml 文件才能执行,您需要在 workflow.xml 中提供该文件
【讨论】: