You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法连接PySpark YARN资源管理器,容器脚本语法异常求助

问题排查与解决

核心原因

报错信息里的launch_container.sh: 第55行:寻找匹配的"'时遇到意外的EOF是关键线索,说明YARN生成的容器启动脚本在解析环境变量时出现引号不匹配问题。从打印的PATH变量可以看到存在/snap/bin :/snap/bin内容——/snap/bin`后多了一个空格,这会导致shell脚本处理环境变量时解析出错,进而引发容器启动失败,最终导致Spark无法连接YARN资源管理器。

解决步骤

  1. 修正PATH环境变量

    • 找到用户级或系统级环境变量配置文件(如~/.bashrc、~/.profile或/etc/profile)
    • 定位设置PATH的行,移除多余空格,将/snap/bin :/snap/bin修改为/snap/bin:/snap/bin
    • 执行source ~/.bashrc(对应你修改的配置文件)使修改生效,或重新登录会话
  2. 调整Spark代码的配置顺序
    当前代码中SparkContext.setSystemProperty("hive.metastore.uris", "thrift://cmra:9083")在SparkSession创建后设置,可能导致Hive元存储配置未正确加载,建议移到构建阶段:

    import pyspark
    import numpy as np
    import os
    from pyspark import SparkContext
    from pyspark.sql import SparkSession, HiveContext
    
    print(str(os.environ['PATH']))
    print('java')
    print(str(os.environ['JAVA_HOME']))
    
    spark = SparkSession\
    .builder \
    .appName("PySpark-SQL-Hive-Cron-Month-overview-entry")  \
    .config("spark.sql.warehouse.dir", "/user/hive/warehouse")\
    .config("spark.master", "yarn")  \
    .config("spark.cores.max", "2")  \
    .config("spark.executor.memory", "1g")\
    .config("hive.metastore.uris", "thrift://cmra:9083")\
    .enableHiveSupport() \
    .getOrCreate()
    
    sc = spark.sparkContext
    
  3. 验证YARN服务状态

    • 执行yarn node -list确认YARN的NodeManager是否正常运行
    • 执行jps查看YARN的ResourceManager、NodeManager进程是否存在
    • 若服务未启动,执行Hadoop安装目录sbin下的start-yarn.sh启动YARN服务
  4. 清理YARN缓存

    • 删除报错中提及的临时目录:rm -rf /tmp/hadoop-mrl/nm-local-dir/usercache/mrl/appcache/application_1677651248789_0002/
    • 或执行yarn application -kill application_1677651248789_0002终止失败应用,避免残留缓存影响后续启动

内容的提问来源于stack exchange,提问作者Sajanraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:43:31