Livy通过SageMaker连接EMR会话启动失败问题排查求助
调试思路:Livy会话在EMR上启动后立即转为Dead
我来帮你梳理几个实用的调试方向,从你遇到的YARN超时错误入手,一步步定位问题:
检查YARN集群资源与健康状态
首先确认YARN集群本身是否能正常接收新应用:- 登录EMR主节点,执行
yarn node -list查看所有NodeManagers是否处于RUNNING状态,有没有节点失联; - 用
yarn top监控集群的内存、CPU使用率,如果资源(尤其是内存)被占满,YARN会无法为Livy的Spark应用分配容器,导致超时; - 日志里提到集群单容器最大内存是1024MB,Livy要分配的AM容器是896MB,确保没有其他大应用占用了剩余资源。
- 登录EMR主节点,执行
核对Livy核心配置参数
检查Livy的配置文件(通常路径为/etc/livy/conf/livy.conf),重点关注以下参数:livy.session.timeout:默认是120秒,若集群负载较高,可适当调大(比如设为300秒),给YARN足够时间完成应用启动;livy.spark.driver.memory和livy.spark.executor.memory:确认这些值没有超过YARN配置的单容器最大内存(日志里是1024MB),超过的话YARN会拒绝分配;livy.spark.yarn.appTag:确保这个参数没有被错误修改,Livy依赖它来标记会话对应的YARN应用,标签不匹配会导致找不到应用。
深挖YARN与Spark的日志细节
你提供的日志只显示了超时结果,需要更详细的错误信息:- 访问EMR主节点的YARN WebUI(默认端口8088),进入「Failed Applications」列表,查找带有
livy-session标签的失败应用,查看其诊断信息,可能会发现权限不足、依赖缺失或磁盘空间不足等问题; - 如果无法访问WebUI,可在主节点查看YARN日志目录
/var/log/hadoop-yarn/下的resourcemanager和nodemanager日志,搜索livy-session-0-v9wkutit这个标签,定位启动失败的具体原因; - 尝试直接在主节点用
spark-submit运行一个极简的PySpark脚本(如下),验证Spark本身能否正常提交到YARN:
如果这个脚本也失败,说明问题出在Spark与YARN的交互上,而非Livy;如果成功,再回到Livy的权限或配置排查。from pyspark.sql import SparkSession spark = SparkSession.builder.appName("LivyTest").getOrCreate() spark.range(10).show() spark.stop()
- 访问EMR主节点的YARN WebUI(默认端口8088),进入「Failed Applications」列表,查找带有
检查Livy自身日志与版本兼容性
- 查看Livy的日志文件(路径通常为
/var/log/livy/),寻找会话启动阶段的详细日志,比如是否在上传Spark依赖包时卡住(日志里提到falling back to uploading libraries under SPARK_HOME,这个过程若磁盘空间不足或网络慢会导致超时); - 确认EMR上的Spark版本与Livy版本是否兼容,部分版本组合存在适配问题(比如Livy 0.7.x与Spark 3.x的某些版本),建议使用EMR官方默认搭配的版本组合。
- 查看Livy的日志文件(路径通常为
内容的提问来源于stack exchange,提问作者Elie Ladias
相关产品推荐
相关产品推荐

