Spark独立模式不将作业分发给其他工作节点

时间:2016-03-21 08:53:10

标签: apache-spark

我在独立模式下运行spark工作。我已将我的工作节点配置为连接到主节点。他们成功连接,但是当我在spark master上运行这个工作时,工作没有得到分发。我继续收到以下消息 -

  

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

我已尝试在工作节点上以本地方式运行作业,并且其运行正常,这意味着资源可用。此外,spark master-ui显示该worker已接受该job.Password less ssh在master和worker节点中来回启用。我觉得它可能是一些防火墙问题或者可能是火花驱动程序端口未打开。我的工作节点日志显示 -

  

16/03/21 10:05:40 INFO ExecutorRunner:启动命令:   “/ usr / lib / jvm / java-7-oracle / bin / java”“ - ct”   “/mnt/pd1/spark/spark-1.5.0-bin-hadoop2.6/sbin/../conf/:/mnt/pd1/spark/spark-1.5.0-bin-hadoop2.6/lib/spark - 装配-1.5.0-hadoop2.6.0.jar:/mnt/pd1/spark/spark-1.5.0-bin-hadoop2.6/lib/datanucleus-rdbms-3.2.9.jar:/ MNT / PD1 /火花/spark-1.5.0-bin-hadoop2.6/lib/datanucleus-api-jdo-3.2.6.jar:/mnt/pd1/spark/spark-1.5.0-bin-hadoop2.6/lib/datanucleus-核心3.2.10.jar”   “-Xms8192M”“ - Xmx8192M”“ - Dspark.driver.port = 51810”   “-Dspark.cassandra.connection.port = 9042”“ - XX:MaxPermSize = 256m”   “org.apache.spark.executor.CoarseGrainedExecutorBackend”   “--driver-URL”   “akka.tcp://sparkDriver@10.0.1.192:51810 /用户/ CoarseGrainedScheduler”   “--executor-id”“2”“ - hostname”“10.0.1.194”“--cores”“4”“ - app-id”   “app-20160321100135-0001”“ - worker-url”   “akka.tcp://sparkWorker@10.0.1.194:39423 /用户/工作者”

工作节点上的执行程序在 stderr -

中显示以下日志
  

16/03/21 10:13:52 INFO Slf4jLogger:Slf4jLogger开始于16/03/21   10:13:52 INFO Remoting:开始远程操作16/03/21 10:13:52 INFO   Remoting:远程开始;听地址   :[akka.tcp://driverPropsFetcher@10.0.1.194:59715] 16/03/21 10:13:52   INFO Utils:在端口上成功启动了“driverPropsFetcher”服务   59715

2 个答案:

答案 0 :(得分:0)

您可以在Spark上下文中指定特定的驱动程序端口:

spark.driver.port  = "port"
val conf = new SparkConf().set("spark.driver.port", "51810") 

PS:当在工作机器上手动启动spark worker并将其连接到Master时,你不会t need any further passless authentication or similar between master and spark. This would only be necessarry if you use the Master for starting all slaves (start-slaves.sh). So this shouldn出现问题。

答案 1 :(得分:0)

许多人在设置新群集时遇到问题。如果您可以在Web UI中找到火花从属但他们不接受作业,则防火墙很可能阻止通信。看看我的另一个答案:Apache Spark on Mesos: Initial job has not accepted any resources

  

虽然大多数其他答案都侧重于火花从站上的资源分配(内核,内存),但我想强调防火墙可能会导致完全相同的问题,尤其是当您在云平台上运行spark时。

     

如果您可以在Web UI中找到火花从属,您可能已经打开了标准端口8080,8081,7077,4040。但是,当您实际运行作业时,它使用SPARK_WORKER_PORT,spark.driver.port和spark。 blockManager.port,默认情况下是随机分配的。如果您的防火墙阻止了这些端口,则主服务器无法从从服务器检索任何特定于作业的响应并返回错误。

     

您可以通过打开所有端口来运行快速测试,并查看从属设备是否接受作业。