首页 > 解决方案 > 我们如何在 Spark 集群之外安装 Apache Livy?

问题描述

如果在某个地方我的语言有误,我深表歉意。

我想在 Spark 集群外的节点(VM 实例)上安装 Apache Livy 服务器。我该怎么做才能让 LivyServer 指向 Spark 集群?

我已经在VM实例上下载并安装了livy

git clone https://github.com/cloudera/livy.git
cd livy
mvn clean package -DskipTests

在 livy/conf/livy.conf 中进行了更改

livy.spark.master = spark://{spark-cluster-master_IP}:7077
livy.spark.deploy-mode = cluster

livy 服务器使用命令启动

livy/bin/livy-server start

并尝试使用 python 的 REST api 进行交互

>>> import json, pprint, requests, textwrap
>>> host = 'http://localhost:8998'
>>> data = {'kind': 'spark'}
>>> headers = {'Content-Type': 'application/json'}
>>> r = requests.post(host + '/sessions', data=json.dumps(data), headers=headers)
>>> r.json()
{u'kind': u'spark', u'log': [], u'proxyUser': None, u'appInfo': {u'driverLogUrl': None, u'sparkUiUrl': None}, u'state': u'starting', u'appId': None, u'owner': None, u'id': 2}
>>> session_url = host + r.headers['location']
>>> r = requests.get(session_url, headers=headers)
>>> r.json()
{u'kind': u'spark', u'log': [], u'proxyUser': None, u'appInfo': {u'driverLogUrl': None, u'sparkUiUrl': None}, u'state': u'dead', u'appId': None, u'owner': None, u'id': 2}

显示状态为死亡 在此处输入图像描述

日志文件(livy/logs/livy-umesh-server.out)没有显示任何关于 spark session dead

livyserver:~$ cat livy/logs/livy-umesh-server.out
log4j:WARN No appenders could be found for logger (com.cloudera.livy.LivyConf).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

标签: apache-sparklivy

解决方案


要使用 Livy 运行交互式会话,您需要确保 Livy 和 Spark 驱动程序之间在两个方向上都有网络连接,以便它们之间的 RPC 调用。如果是您的情况,您将在 Spark 驱动程序日志中看到有关连接到 Livy RPC 服务器或回调超时的问题。

您可能还希望启用更详细的日志记录以查看 Livy 的详细行为。


推荐阅读