apache-spark - 我们如何在 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.
解决方案
要使用 Livy 运行交互式会话,您需要确保 Livy 和 Spark 驱动程序之间在两个方向上都有网络连接,以便它们之间的 RPC 调用。如果是您的情况,您将在 Spark 驱动程序日志中看到有关连接到 Livy RPC 服务器或回调超时的问题。
您可能还希望启用更详细的日志记录以查看 Livy 的详细行为。
推荐阅读
- python - Django 创建定期付款
- r - 如何在 R 中制作二维数据帧数组?(每个单元格都是一个数据框)
- python-3.x - Python 匹配文件中的所有 URL,并在文件中的新行上列出每个 URL
- c# - IQueryable where 子句检查动态数组
- java - 不得附加 ViewHolder 视图
- javascript - 如何使用 Puppeteer 捕获页面中的所有链接?
- javascript - 如何将状态从页面传递到组件并返回到页面?
- python-3.x - 如何使用 MultiIndex 在 Python 数据框列中进行字符串替换
- javascript - 检查鼠标是否在元素 A 或元素 B 上
- c# - 如何将内容主体传递给 API Get 方法