在 Spark 0.9.0 上运行作业会引发错误

2022-09-04 21:57:39

我安装了一个Apache Spark 0.9.0集群,我正在尝试部署一个从HDFS读取文件的代码。这段代码会引发警告,最终作业会失败。这是代码

/**
 * running the code would fail 
 * with a warning 
 * Initial job has not accepted any resources; check your cluster UI to ensure that 
 * workers are registered and have sufficient memory
 */

object Main extends App {
    val sconf = new SparkConf()
    .setMaster("spark://labscs1:7077")
    .setAppName("spark scala")
    val sctx = new SparkContext(sconf)
    sctx.parallelize(1 to 100).count
}

以下是警告消息

初始工作尚未接受任何资源;检查群集 UI 以确保辅助角色已注册并具有足够的内存

如何摆脱这一点,或者我错过了一些配置。


答案 1

当您通过设置和 resp' 请求的核心数或 RAM 量(每个节点)超过可用值时,您将获得此值。因此,即使没有其他人正在使用群集,并且您指定要使用,例如每个节点100GB RAM,但您的节点只能支持90GB,那么您将收到此错误消息。spark.cores.maxspark.executor.memory

公平地说,在这种情况下,消息是模糊的,如果它说你超过了最大值,那会更有帮助。


答案 2

看起来 Spark master 无法为此任务分配任何工作人员。要么是工人没有开始,要么是他们都很忙。

检查主节点上的 Spark UI(默认情况下由 中指定的端口,8080)。它应该看起来像这样:SPARK_MASTER_WEBUI_PORTspark-env.shSparkUI Sample

要使群集正常运行:

  • 一定有一些工人的国家“活着”
  • 必须有一些核心可用(例如,如果所有核心都忙于冻结的任务,则群集将不接受新任务)
  • 必须有足够的可用内存

推荐