比方说,我想继续为提交给YARN的每个Spark作业创建一个会话。每个连接都有一个唯一的用户,该用户不断轮询状态并将语句发布到会话中。如何在任何给定的时间计算Livy可以拥有多少活动会话?它是否基于我配置的livy.spark.driver大小?此计算还涉及哪些其他参数?
答案 0 :(得分:0)
yarn有一个使用AM容器的调度程序,livy将使用群集/独立服务器上的可用资源初始化对纱线的接受请求。 参见yarn-scheduler 应该将livy-client.conf配置为处理长时间运行的作业以产生响应。
livy-client.conf
状态检查为取消作业之间的时间
livy.rsc.job-cancel.trigger-interval = 100ms
取消作业被强制进入取消状态之前的时间
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” :“忙”,“种类”:“ pyspark”,“ appInfo”:{“ driverLogUrl”:“ {livy_host}:8042 / node / containerlogs / container_e182_1566223151385_0085_01_000001 / mapr”,“ sparkUiUrl”:“ {livy_host}:8088 / proxy / application_1566223151385_0085 /“},” log“:[”“]}]}'
sum(session['state'] == 'busy' for session in sessions.json()['sessions'])