rest - 如何通过 REST API 提交作业?

标签 rest apache-spark datastax-enterprise

我使用的是 Datastax Enterprise 4.8.3。 我正在尝试实现一个基于 Quartz 的应用程序来远程提交 Spark 作业。 在我的研究过程中,我偶然发现了以下链接:

  1. Apache Spark Hidden REST API
  2. Spark feature - Provide a stable application submission gateway in standalone cluster mode

为了验证理论,我尝试在我的 2 节点集群(如上面的链接 #1 中提供)的主节点(IP:“spark-master-ip”;直接在 shell 上)上执行以下代码片段:

curl -X POST http://spark-master-ip:6066/v1/submissions/create --header "Content-Type:application/json;charset=UTF-8" --data '{
    "action" : "CreateSubmissionRequest",
    "appArgs" : [ "myAppArgument1" ],
    "appResource" : "file:/home/local/sparkjob.jar",
    "clientSparkVersion" : "1.4.2",
    "environmentVariables" : {
    "SPARK_ENV_LOADED" : "1"
  },
  "mainClass" : "com.spark.job.Launcher",
  "sparkProperties" : {
      "spark.jars" : "file:/home/local/sparkjob.jar",
      "spark.driver.supervise" : "false",
      "spark.app.name" : "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.submit.deployMode" : "cluster",
      "spark.master" : "spark://spark-master-ip:6066"
  }
}'

但是执行代码我得到一个带有以下文本的 html 响应:

This Page Cannot Be Displayed
The system cannot communicate with the external server (spark-master-ip).
The Internet server may be busy, may be permanently down, or may be unreachable because of network problems.
Please check the spelling of the Internet address entered.
If it is correct, try this request later.

If you have questions, please contact your organization's network administrator and provide the codes shown below.

Date: Fri, 11 Dec 2015 13:19:15 GMT
Username: 
Source IP: spark-master-ip
URL: POST http://spark-master-ip/v1/submissions/create
Category: Uncategorized URLs
Reason: UNKNOWN
Notification: GATEWAY_TIMEOUT

最佳答案

  • 检查您是否启动了 Spark master 和 worker(使用 start-all.sh)

  • 检查日志文件中是否有如下消息

INFO rest.StandaloneRestServer: Started REST server for submitting applications on port 6066

  • 检查启动的进程是否真的在监听 6066 端口(使用 netstat)

它应该是这样的:

root@x:~# netstat -apn | grep 11572 | grep LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN      11572/java      
tcp6       0      0 10.0.0.9:6066           :::*                    LISTEN      11572/java      
tcp6       0      0 10.0.0.9:7077           :::*                    LISTEN      11572/java      

然后将脚本中的“spark-master-ip”替换为您在 netstat 的输出中看到的 IP 地址(示例显示“10.0.0.9”)。

关于rest - 如何通过 REST API 提交作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34225879/

相关文章:

javascript - 如何减少 AJAX 密集型 Web 应用程序中的 HTTP 请求数量?

java - Scala 从文件读取多维数组 [Array[Array[Int]]

datastax - 如何使用 DSE Graph 处理 super 节点

amazon-web-services - Cassandra Datastax Enterprise 使用 Amazon Elastic IP

javascript - 带有 REST API 的 Ajax 请求 header

ruby-on-rails - 我们如何将 grape api 资源分离到多个文件中?

java - CORS 支持 Jax-rs 2 AsyncResponse?

hadoop - spark sc.textfile 的详细工作原理是什么?

jdbc - 按关键 "within"分区进行高效分组

cassandra - 引导新节点后 DC 完全不平衡