为什么 Apache Livy 会话显示应用程序 ID 为 NULL?

Emi*_*ano 5 apache-spark apache-spark-standalone apache-spark-2.0 livy

我已经实现了一个功能齐全的 Spark 2.1.1 独立集群,其中我使用 Apache Livy 0.4 通过命令发布作业批次curl。当咨询 Spark WEB UI 时,我会看到我的作业及其应用程序 ID(类似这样:)app-20170803115145-0100、应用程序名称、核心、时间、状态等。但是当咨询 Livy WEB UI(http://localhost:8998 by默认),我看到以下结构:

| Batch Id | Application Id | State   |
| -------- | -------------- | ------- |
| 219      | null           | success |
| 220      | null           | running |
Run Code Online (Sandbox Code Playgroud)

如果我获取所有批次的状态,我将获得以下结果:

{
  "from": 0,
  "total": 17,
  "sessions": [
    {
      "id": 219,
      "state": "success",
      "appId": null,
      "appInfo": {
        "driverLogUrl": null,
        "sparkUiUrl": null
      },
      "log": ["* APPLICATION OUTPUT"]
    },
    {
      "id": 220,
      "state": "running",
      "appId": null,
      "appInfo": {
        "driverLogUrl": null,
        "sparkUiUrl": null
      },
      "log": ["* APPLICATION OUTPUT"]
    },       
  ]
}
Run Code Online (Sandbox Code Playgroud)

这显然是正确的,但我总是在appId字段中看到空值,还有driverLogUrlSparkUiUrl

该字段是否应该显示与我在 Spark WEB UI 中看到的相同的应用程序 ID?如果是这样,我该如何配置它或者它必须是自动的?不知道我是否缺少 livy.conf 或 livy-env.sh 文件中的某些配置行,因为我找不到任何与此相关的示例或文档。

这是我的 livy.conf 文件:

livy.server.host = IP_ADDRESS
livy.server.port = 8998
livy.spark.master = spark://MASTER_IP_ADDRESS:PORT
livy.spark.deploy-mode = cluster
livy.ui.enabled = true
Run Code Online (Sandbox Code Playgroud)

这是 livy-env.sh 文件:

export JAVA_HOME=/opt/java8/jdk1.8.0_91
export SPARK_HOME=~/sparkFiles/spark-2.1.1-bin-hadoop2.7
export SPARK_CONF_DIR=${SPARK_HOME}/conf
export LIVY_LOG_DIR=~/LivyRestServer/logs
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请告诉我。


更新 对于那些遇到同样问题的人。不幸的是,使用独立集群管理器我无法修复,但后来我有必要将其更改为 YARN 以更好地管理池和队列,这神奇地解决了问题,我能够看到所有这些信息。不知道为什么独立管理器无法将 applicationId 推送到 Livy,但 YARN 可以,所以,它只是自行修复,我没有更改 Livy conf 中的任何内容。文件。

Poo*_*kly 3

livy.conf

\n\n

livy.spark.master默认为本地模式,需要设置yarn模式;

\n\n

也许\xe2\x80\x99是一个livy bug,从设计的角度来看,应该也是本地模式下获取的。\n以后也可能只针对yarn模式才livy。

\n