我想使用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
请注意,curl
是访问jar所在的HDFS所必需的。
我也可以使用curl -X POST --data '{"file": "/path/to/spark-job.jar", "className": "io.woolford.Main"}' -H "Content-Type: application/json" hadoop01:8998/batches
通过Livy提交命令。例如,此请求:
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
验证了这一点。
因此,我只需修改--master yarn-cluster
命令,以便在Livy执行时包含--master yarn-cluster
。乍一看,似乎可以通过向JSON字典添加参数来实现这一点。不幸的是,这些都没有通过。
有没有人知道如何将<selectclass="form-control" id="my_select"><optionvalue="0">List is Number</option><option value="1">List is Alphabetical</option></select>
<liclass="ui-state-default " ng-repeat="damageResult in damageResultList> <span>{{damageResult.damageMechanismList}}hfgh</span></li>
传递给Livy,以便在YARN上执行作业而不会systemwide changes?
答案 0 :(得分:0)
我最近尝试过与你的问题类似的东西。我需要向Livy的API发送HTTP请求,而Livy已经安装在集群(YARN)中,然后我想让Livy启动Spark工作。
我打电话给Livy的命令没有包含--master yarn-cluster
,但这似乎对我有用。也许您可以尝试将JAR文件放在本地而不是群集中?
答案 1 :(得分:0)
spark.master = yarn-cluster
将它设置在spark conf中,对我来说:/etc/spark2/conf/spark-defaults.conf