我尝试使用yarn restapi提交spark提交作业,我通常通过命令行运行。
我的命令行如下所示
JAVA_HOME=/usr/local/java7/ HADOOP_CONF_DIR=/etc/hadoop/conf /usr/local/spark-1.5/bin/spark-submit \
--driver-class-path "/etc/hadoop/conf" \
--class MySparkJob \
--master yarn-cluster \
--conf "spark.executor.extraClassPath=/usr/local/hadoop/client/hadoop-*" \
--conf "spark.driver.extraClassPath=/usr/local/hadoop/client/hadoop-*" \
spark-job.jar --retry false --counter 10
阅读yarn restapi文档https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/resourcemanagerrest.html#cluster_applications_apisubmit_application,我尝试创建json负载来发布
{
"am-container-spec": {
"commands": {
"command": "JAVA_HOME=/usr/local/java7/ HADOOP_CONF_DIR=/etc/hadoop/conf org.apache.hadoop.yarn.applications.distributedshell.ApplicationMaster --jar spark-job.jar --class MySparkJob --arg --retry --arg false --arg --counter --arg 10"
},
"local-resources": {
"entry": [
{
"key": "spark-job.jar",
"value": {
"resource": "hdfs:///spark-job.jar",
"size": 3214567,
"timestamp": 1452408423000,
"type": "FILE",
"visibility": "APPLICATION"
}
}
]
}
},
"application-id": "application_11111111111111_0001",
"application-name": "test",
"application-type": "Spark"
}
我看到的问题是,hadoop configs目录以前是运行作业的机器的本地目录,现在我通过restapi提交作业,它直接在rm上运行,我不知道如何提供这些详细信息?
1条答案
按热度按时间k4ymrczo1#
如果你想通过restapi提交spark作业,我建议你看看livy。向集群提交spark作业是一种简单而简单的方法。
livy是一个开源rest接口,可以在任何地方与apachespark进行交互。它支持在本地或apachehadoop中运行的spark上下文中执行代码片段或程序。
交互式scala、python和r shell
scala、java、python中的批提交
多个用户可以共享同一服务器(模拟支持)
可以使用rest从任何地方提交作业
不需要对程序进行任何代码更改
我们还尝试了通过javarmi选项提交应用程序。