云主机大数据Spark组件常见问题与解决方案
发表于 2025/09/10
0
作者|何健聪
提交PySpark作业,报错Error "unknown queue: root.default"
问题现象
在新搭建的YARN集群上通过Airflow和SparkSubmitOperator提交了一个PySpark单词计数作业。报错Error "unknown queue: root.default"。
可能原因
yarn资源管理器中的root仅用于以分层形式对队列进行分组。
解决方法
将queue名由root.default改成default。
执行Spark SQL报错:org.apache.spark.sql.catalyst.errors.package$TreeNodeException
问题现象
在EMR集群上按小时跑的Spark SQL任务有时会失败,在driver端的日志中可以看到报错: org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree。
可能原因
driver端内存不足导致的报错。
解决方法
调大spark.driver.memory的值,由10GB扩到16GB。
sparksubmit中指定的spark.executor.cores为4,实际在yarn上运行任务时Container的vcore还是为1?
问题现象
sparksubmit中指定的spark.executor.cores为4,实际在yarn上运行任务时Container的vcore还是为1。
可能原因
yarn的调度策略导致,默认部署的yarn集群的配置文件“etc/hadoop/capacity-”
“scheduler.xmI”中yarn.scheduler.capacity.resource-calculator项配置的值为
org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator只分配内存资源。
解决方法
将DefaultResourceCalculator修改为DominantResourceCalculator并重启yarn集群。
在任务运行过程中查看是否生效。
spark任务能正常计算得到结果,但查看executor有很多是dead
问题现象
spark任务能正常计算得到结果,但查看executor有很多是dead,exceutor的日志有如下错误:
可能原因
大概率是因为内存问题导致,查看error日志无结果后,查看节点日志发现物理内存超出限制。
解决方法
增加堆外内存,将spark.executor.memoryOverhead由2GB改到4GB。