Windows Server 2022上Apache Spark基准测试运行报错求助
解决方案:Windows Server 2022下Spark 3.4.0基准测试报错处理
环境信息
- 操作系统:Microsoft Windows Server 2022 Standard Evaluation
- Spark版本:3.4.0
- Hadoop版本:3.3.1
- Hadoop状态:已完成安装并验证,
hdfs dfs -put hi.txt /、hdfs dfs -get /hi.txt .、hdfs dfsadmin -report均正常执行无报错
报错情况
- 错误1:
ContainerExecutor: Exit code: -1073741515(对应缺失DLL依赖) - 错误2:
java.io.FileNotFoundException: File C:/$$$App Log Path $$$/prelaunch.err does not exist(无法获取更多错误日志) - 已尝试:安装C++ Redistributable,但问题未解决
具体修复步骤
1. 修正Hadoop日志路径占位符问题
$$$App Log Path $$$是未解析的占位符,说明Hadoop配置中日志路径未正确设置:
- 打开Hadoop安装目录下的
etc/hadoop/hadoop-env.cmd,将HADOOP_LOG_DIR设置为实际存在的路径:set HADOOP_LOG_DIR=C:\hadoop-3.3.1\logs - 同步设置
YARN_LOG_DIR为有效路径:set YARN_LOG_DIR=C:\hadoop-3.3.1\logs - 重启Hadoop所有服务(namenode、datanode、resourcemanager、nodemanager)
2. 补充Windows原生Hadoop DLL文件
仅安装C++ Redistributable不足以覆盖Hadoop的所有依赖,需补充对应版本的原生库:
- 获取适配Hadoop 3.3.1的Windows原生文件包(包含
hadoop.dll、winutils.exe、hdfs.dll等) - 将这些文件放入Hadoop安装目录的
bin文件夹 - 将Hadoop的
bin目录移至系统环境变量PATH的最前端,避免路径优先级冲突
3. 配置Spark的YARN执行环境参数
调整Spark配置,确保容器能正确加载依赖:
- 打开Spark安装目录下的
conf/spark-defaults.conf,添加或修改以下参数:spark.yarn.appMasterEnv.PATH=%PATH%;C:\hadoop-3.3.1\bin spark.executorEnv.PATH=%PATH%;C:\hadoop-3.3.1\bin spark.yarn.nodemanager.container-executor.classpath=C:\hadoop-3.3.1\share\hadoop\common\*;C:\hadoop-3.3.1\share\hadoop\common\lib\*;C:\hadoop-3.3.1\share\hadoop\yarn\*;C:\hadoop-3.3.1\share\hadoop\yarn\lib\* - 在
spark-env.cmd中确认HADOOP_HOME配置正确:set HADOOP_HOME=C:\hadoop-3.3.1
4. 检查目录权限与路径格式
- 确保Hadoop、Spark的安装目录及日志目录,给当前用户赋予完全控制权限(右键文件夹→属性→安全→添加用户并设置权限)
- 所有配置路径使用Windows本地格式(如
C:\hadoop-3.3.1),避免使用斜杠或相对路径
5. 重新执行基准测试
完成上述配置后,先验证Hadoop服务正常,再执行测试命令:
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster examples/jars/spark-examples_2.12-3.4.0.jar 10
内容的提问来源于stack exchange,提问作者Khaledinho
相关产品推荐
相关产品推荐

