首页 > 解决方案 > 如何确定 Apache Livy 的“允许的最大活动会话数”?

问题描述

比方说,我想继续为提交给 YARN 的每个 Spark 作业创建一个会话。每个连接都有一个唯一的用户,他不断地轮询状态并将语句发布到会话。在任何给定时间,我如何计算 Livy 可以拥有多少活动会话?它是基于我配置的 livy.spark.driver 大小吗?此计算中涉及的所有其他参数是什么?

标签: apache-sparksessionamazon-emrlivy

解决方案


yarn 有一个调度程序来利用 AM 容器,并且 livy 将使用集群/独立服务器上的可用资源初始化 yarn 上接受的请求。请参阅yarn-scheduler livy-client.conf 应配置为处理长时间运行的作业以产生响应。

livy-client.conf

取消作业的状态检查之间的时间

livy.rsc.job-cancel.trigger-interval = 100ms

取消的 Job 强制进入 Canceled 状态之前的时间

livy.rsc.job-cancel.timeout = 60m

这是您应该过滤状态的示例代码:输出中的繁忙会话。

import requests

host = "{livy_host}:8998"
sessions = requests.get(host + '/sessions/')

输出 b'{"from":0,"total":1,"sessions":[{"id":3,"appId":"application_1566223151385_0085","owner":null,"proxyUser":null,"state ":"busy","kind":"pyspark","appInfo":{"driverLogUrl":"{livy_host}:8042/node/containerlogs/container_e182_1566223151385_0085_01_000001/mapr","sparkUiUrl":"{livy_host}:8088/代理/应用程序_1566223151385_0085/"},"log":[""]}]}'

sum(session['state'] == 'busy' for session in sessions.json()['sessions'])

推荐阅读