You need to enable JavaScript to run this app. 执行pyspark --master yarn启动Spark on YARN出现卡顿问题
优惠活动
大模型
产品
解决方案
定价
更多

执行pyspark --master yarn启动Spark on YARN出现卡顿问题

Spark on YARN 执行pyspark --master yarn卡顿排查方案

已记录的操作与配置

  • 执行./stop-all.sh确认Spark Standalone集群无运行进程
  • 客户端节点~/.bashrc配置:export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  • 集群yarn-site.xml配置:
    <configuration>
      <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
      </property>
    </configuration>
    
  • 集群yarn-env.sh配置:
    export JAVA_HOME=/home/spark/jdk1.8.0_251
    export PATH=$JAVA_HOME/bin:$PATH
    export HADOOP_HOME=/home/spark/hadoop-2.10.1
    export PATH=$HADOOP_HOME/bin:$PATH
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export ANACONDA_HOME=/home/spark/anaconda3
    export PATH=$ANACONDA_HOME/bin:$PATH
    
  • HDFS操作记录:
    • 执行hadoop fs -mkdir /user/spark/spark-2.4.5-bin-hadoop2.7创建Spark依赖存储目录
    • 执行hadoop fs -put ~/spark-2.4.5-bin-hadoop2.7/jars spark-2.4.5-bin-hadoop2.7上传本地Spark jar包到HDFS
  • spark-defaults.conf配置项:spark.yarn.jars hdfs://devenv/user/${USER}/spark-2.4.5/jars/*
  • 集群启动与校验:
    • 执行./start-yarn.sh启动YARN服务
    • 通过8088端口的YARN WebUI确认ResourceManager、NodeManager服务运行状态正常
  • 复现路径:执行pyspark --master yarn启动客户端时触发无响应卡顿

排查步骤

  1. 优先校验spark.yarn.jars路径匹配性
    对比实际HDFS存储的jar路径和配置的路径:
    实际上传jar的目标路径为/user/spark/spark-2.4.5-bin-hadoop2.7/jars,但配置的spark.yarn.jars指向hdfs://devenv/user/${USER}/spark-2.4.5/jars/*,两处存在路径不一致的问题。如果配置的路径不存在,Spark客户端会默认从本地SPARK_HOME/jars目录逐文件上传所有依赖包,总大小通常超过500MB,会造成长时间无响应的卡顿。
    校验操作:执行hadoop fs -ls hdfs://devenv/user/${USER}/spark-2.4.5/jars确认路径下jar包存在性,要么修正配置的路径和实际上传路径完全对齐,要么重新上传jar包到配置指定的路径下。

  2. 校验网络与地址解析

    • 检查YARN配置中yarn.resourcemanager.hostname、HDFS nameservicedevenv的地址映射,确认客户端节点/etc/hosts文件中存在对应主机名到IP的映射,避免客户端无法连通ResourceManager,卡在应用提交的等待环节。
    • 确认当前终端可正常连通ResourceManager的RPC端口(默认8032)、HDFS的RPC端口(默认9000),无防火墙拦截。
  3. 校验配置加载有效性

    • 执行echo $SPARK_CONF_DIR、echo $HADOOP_CONF_DIR确认当前终端会话中配置生效,避免因为未执行source ~/.bashrc,导致客户端未加载到修改后的Spark、Hadoop配置,仍使用默认逻辑反复拉取本地依赖卡顿。
    • 执行pyspark --master yarn --verbose启动程序,打印完整启动日志,定位具体卡顿环节:是应用提交阶段、依赖拉取阶段、还是AM反向注册阶段。
  4. 校验服务状态

    • 登录YARN WebUI查看是否有提交中、无响应的应用记录,确认NodeManager节点的资源剩余量是否满足Spark AM的最小资源要求,避免因为资源不足,AM一直处于等待分配的状态,客户端长时间无响应。

参考截图说明:卡顿状态为启动pyspark后,日志停留在“正在连接YARN”的提示、无后续进度输出;~/.bashrc配置为终端查看的环境变量配置内容,和上述记录的配置项一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 03:45:03