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

时间:2014-02-10 12:23:17

标签: java scala hdfs apache-spark

我安装了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   确保工人已注册并有足够的记忆

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

7 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

检查主节点上的Spark UI(SPARK_MASTER_WEBUI_PORTspark-env.sh指定的端口,默认为8080)。它应该如下所示:SparkUI Sample

要使群集正常运行:

  • 必须有一些工作人员处于“Alive”状态
  • 必须有一些核心可用(例如,如果所有核心都忙于冻结任务,群集将不接受新任务)
  • 必须有足够的可用内存

答案 2 :(得分:2)

还要确保您的火花工作人员可以与驾驶员进行双向沟通。检查防火墙等。

答案 3 :(得分:2)

我有这个问题。我有一个简单的1节点Spark群集,并且在尝试运行我的Spark应用程序时遇到此错误。

我查看了上面的一些建议,当我尝试针对群集运行Spark shell时,我无法在UI中看到这一点,我怀疑我的群集无法正常工作。

在我的主机文件中,我有一个条目,让我们说SparkNode,它引用了正确的IP地址。

我无意中将conf/spark-env.sh文件中的错误IP地址与SPARK_MASTER_IP变量放在一起。我将其更改为SparkNode,并将SPARK_LOCAL_IP更改为指向SparkNode

为了测试这个,我在浏览器中使用SparkNode:7077打开了UI,我可以看到Spark运行的实例。

然后我使用Wildfires建议运行Spark shell,如下所示:

MASTER=spark://SparkNode:7077 bin/spark-shell

回到用户界面,我现在可以看到Spark shell应用程序正在运行,我以前无法实现。

所以我退出Spark shell并使用Spark Submit运行我的应用程序,它现在可以正常工作。

绝对值得检查所有IP和主机条目,这是我问题的根本原因。

答案 4 :(得分:0)

您需要指定正确的SPARK_HOME和您的驱动程序的IP地址,以防Spark无法找到您的Netty jar服务器。请注意,您的Spark主机应该监听您认为要使用的正确IP地址。这可以通过在文件spark-env.sh中设置SPARK_MASTER_IP = yourIP来完成。

   val conf = new SparkConf()
  .setAppName("test")
  .setMaster("spark://yourSparkMaster:7077")
  .setSparkHome("YourSparkHomeDir")
  .set("spark.driver.host", "YourIPAddr")

答案 5 :(得分:0)

检查有关主机名,IP地址和环回的错误。请务必设置SPARK_LOCAL_IPSPARK_MASTER_IP

答案 6 :(得分:0)

我有类似的问题初始作业没有接受任何资源,通过在spark-env.sh上指定spark正确的下载URL或在所有从属服务器上安装spark来修复它。

导出SPARK_EXECUTOR_URI = http://mirror.fibergrid.in/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz

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