首页 文章

使用`--master yarn-cluster`执行带有Livy的Spark作业,而不进行系统范围的更改

提问于
浏览
2

我想使用Livy通过来自集群外部的HTTP调用来执行Spark作业,其中Spark jar已经存在于HDFS中 .

我能够从群集节点上的shell中执行 spark-submit 作业,例如:

spark-submit --class io.woolford.Main --master yarn-cluster hdfs://hadoop01:8020/path/to/spark-job.jar

请注意, --master yarn-cluster 是访问jar所在的HDFS所必需的 .

我也可以通过Livy使用 curl 提交命令 . 例如,此请求:

curl -X POST --data '{"file": "/path/to/spark-job.jar", "className": "io.woolford.Main"}' -H "Content-Type: application/json" hadoop01:8998/batches

...在集群上执行以下命令:

spark-submit --class io.woolford.Main hdfs://hadoop01:8020/path/to/spark-job.jar

这与有效的命令相同,减去 --master yarn-cluster 参数 . 通过尾随 /var/log/livy/livy-livy-server.out 验证了这一点 .

所以,我只需要修改 curl 命令,以便在's executed by Livy. At first glance, it seems like this should be possible by adding arguments to the JSON dictionary. Unfortunately, these aren'通过时包含 --master yarn-cluster .

有谁知道如何将 --master yarn-cluster 传递给Livy,以便在YARN上执行作业而不制作systemwide changes

2 回答

  • 0

    我最近尝试过类似你问题的东西 . 我需要向Livy的API发送HTTP请求,而Livy已经安装在集群(YARN)中,然后我想让Livy启动Spark工作 .

    我打电话给Livy的命令不包括 --master yarn-cluster ,但这似乎对我有用 . 也许您可以尝试将JAR文件放在本地而不是群集中?

  • 0

    spark.master = yarn-cluster

    把它设置在spark conf中,对我来说:/etc/spark2/conf/spark-defaults.conf

相关问题