1. Spark与YARN基础认知在大数据生态系统中Spark和YARN的结合堪称黄金搭档。作为从业多年的数据工程师我见证过太多团队在环境配置环节踩坑。让我们先建立基础认知Spark是内存计算框架而YARN是Hadoop的资源调度器二者的结合能让Spark作业充分利用集群资源。关键提示配置前请确认Hadoop集群版本与Spark版本的兼容性这是90%配置失败的根源。我推荐Spark 3.x搭配Hadoop 3.2.x版本组合。2. 环境准备与前置检查2.1 系统要求核查在开始前需要确认以下基础环境所有节点已部署JDK 1.8实测OpenJDK 11存在兼容性问题集群时间同步NTP服务正常SSH免密登录配置完成磁盘空间建议/tmp目录保留至少10GB空间2.2 Hadoop配置验证执行以下命令检查YARN状态yarn node -list # 查看节点状态 hdfs dfs -ls / # 检查HDFS可用性3. Spark配置详解3.1 核心参数配置在$SPARK_HOME/conf/spark-defaults.conf中添加spark.masteryarn spark.submit.deployModecluster spark.driver.memory4g spark.executor.memory8g spark.executor.cores4 spark.yarn.queueproduction3.2 动态资源分配对于波动型工作负载建议启用spark.dynamicAllocation.enabledtrue spark.shuffle.service.enabledtrue spark.dynamicAllocation.minExecutors2 spark.dynamicAllocation.maxExecutors204. YARN集成实战4.1 提交示例作业运行经典的Pi计算示例spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ --driver-memory 2g \ --executor-memory 4g \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.1.jar 10004.2 资源队列配置在capacity-scheduler.xml中设置队列property nameyarn.scheduler.capacity.root.queues/name valuedefault,spark/value /property property nameyarn.scheduler.capacity.root.spark.capacity/name value60/value /property5. 性能调优指南5.1 内存优化公式Executor内存分配建议总内存 spark.executor.memory spark.yarn.executor.memoryOverhead 建议memoryOverhead max(384MB, 0.1 * executorMemory)5.2 并行度设置最优分区数计算公式val optimalPartitions Math.max( totalCores * 2, inputDataSize / 128MB )6. 故障排查手册6.1 常见错误代码错误码原因解决方案ExitCode 13资源不足检查队列资源或调整内存参数ExitCode 52类冲突使用--jars指定依赖包6.2 日志定位技巧查看特定容器的日志yarn logs -applicationId appId -containerId containerId7. 生产环境建议7.1 安全配置Kerberos环境下需添加spark.yarn.keytab/path/to/keytab spark.yarn.principaluserDOMAIN7.2 监控配置建议集成Prometheus监控spark.metrics.conf.*prometheus经过多年实践验证这套配置方案在金融、电商等多个行业场景中表现稳定。特别提醒每次升级版本后务必重新测试shuffle服务兼容性。