【问题标题】:Unable to connect to Spark master无法连接到 Spark 主机
【发布时间】:2016-04-03 18:53:40
【问题描述】:

我用 Spark 启动我的 DataStax cassandra 实例:

dse cassandra -k

然后我运行这个程序(在 Eclipse 中):

import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

object Start {

  def main(args: Array[String]): Unit = {
    println("***** 1 *****")
    val sparkConf = new SparkConf().setAppName("Start").setMaster("spark://127.0.0.1:7077")
    println("***** 2 *****")
    val sparkContext = new SparkContext(sparkConf)
    println("***** 3 *****")
  }
}

我得到以下输出

***** 1 *****
***** 2 *****
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
15/12/29 15:27:50 INFO SparkContext: Running Spark version 1.5.2
15/12/29 15:27:51 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/12/29 15:27:51 INFO SecurityManager: Changing view acls to: nayan
15/12/29 15:27:51 INFO SecurityManager: Changing modify acls to: nayan
15/12/29 15:27:51 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(nayan); users with modify permissions: Set(nayan)
15/12/29 15:27:52 INFO Slf4jLogger: Slf4jLogger started
15/12/29 15:27:52 INFO Remoting: Starting remoting
15/12/29 15:27:53 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.1.88:55126]
15/12/29 15:27:53 INFO Utils: Successfully started service 'sparkDriver' on port 55126.
15/12/29 15:27:53 INFO SparkEnv: Registering MapOutputTracker
15/12/29 15:27:53 INFO SparkEnv: Registering BlockManagerMaster
15/12/29 15:27:53 INFO DiskBlockManager: Created local directory at /private/var/folders/pd/6rxlm2js10gg6xys5wm90qpm0000gn/T/blockmgr-21a96671-c33e-498c-83a4-bb5c57edbbfb
15/12/29 15:27:53 INFO MemoryStore: MemoryStore started with capacity 983.1 MB
15/12/29 15:27:53 INFO HttpFileServer: HTTP File server directory is /private/var/folders/pd/6rxlm2js10gg6xys5wm90qpm0000gn/T/spark-fce0a058-9264-4f2c-8220-c32d90f11bd8/httpd-2a0efcac-2426-49c5-982a-941cfbb48c88
15/12/29 15:27:53 INFO HttpServer: Starting HTTP Server
15/12/29 15:27:53 INFO Utils: Successfully started service 'HTTP file server' on port 55127.
15/12/29 15:27:53 INFO SparkEnv: Registering OutputCommitCoordinator
15/12/29 15:27:53 INFO Utils: Successfully started service 'SparkUI' on port 4040.
15/12/29 15:27:53 INFO SparkUI: Started SparkUI at http://10.0.1.88:4040
15/12/29 15:27:54 WARN MetricsSystem: Using default name DAGScheduler for source because spark.app.id is not set.
15/12/29 15:27:54 INFO AppClient$ClientEndpoint: Connecting to master spark://127.0.0.1:7077...
15/12/29 15:27:54 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@127.0.0.1:7077] has failed, address is now gated for [5000] ms. Reason: [Disassociated] 
15/12/29 15:28:14 ERROR SparkUncaughtExceptionHandler: Uncaught exception in thread Thread[appclient-registration-retry-thread,5,main]
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1f22aef0 rejected from java.util.concurrent.ThreadPoolExecutor@176cb4af[Running, pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 0]

所以在创建火花上下文的过程中发生了一些事情。

当我查看$DSE_HOME/logs/spark 时,它是空的。不知道还能去哪里看。

【问题讨论】:

  • 除非您明确使用已弃用的 --ip 参数或 SPARK_MASTER_IP 变量,否则 Spark master 不太可能监听 127.0.0.1。默认使用hostname
  • ➔ 主机名 endor-2.local
  • hostname 返回 endor-2.local -- java.net.InetAddress.getLocalHost() 返回 endor-2.local/10.0.1.88 -- 当我尝试使用 endor-2.local 或 IP 地址的 url 时,我得到一个稍微不同的错误(下一条评论)
  • 15/12/30 10:35:38 WARN AppClient$ClientEndpoint: Failed to connect to master 10.0.1.88:7077 akka.actor.ActorNotFound: Actor not found for: ActorSelection[Anchor(akka.tcp://sparkMaster@10.0.1.88:7077/), Path(/user/Master)] at akka.actor.ActorSelection$$anonfun$resolveOne$1.apply(ActorSelection.scala:65)

标签: scala apache-spark datastax


【解决方案1】:

原来问题出在 spark 库版本和 Scala 版本上。 DataStax 运行 Spark 1.4.1 和 Scala 2.10.5,而我的 eclipse 项目分别使用 1.5.2 和 2.11.7。

请注意,Spark 库和 Scala 似乎都必须匹配。我尝试了其他组合,但只有在两者匹配时才有效。

【讨论】:

    【解决方案2】:

    我对您发布的错误的这一部分非常熟悉:

    WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://...
    

    它可能有很多原因,几乎都与错误配置的 IP 有关。首先我会做 zero323 所说的任何事情,然后是我的两分钱:我最近通过使用 IP 地址而不是主机名解决了我自己的问题,并且我在简单的独立集群中使用的唯一配置是 SPARK_MASTER_IP。

    你的 master 上 $SPARK_HOME/conf/spark-env.sh 中的 SPARK_MASTER_IP 然后应该引导 master webui 显示你设置的 IP 地址:

    spark://your.ip.address.numbers:7077

    您的 SparkConf 设置可以参考。

    话虽如此,我不熟悉您的具体实现,但我注意到错误中有两次包含:

    /private/var/folders/pd/6rxlm2js10gg6xys5wm90qpm0000gn/T/

    您是否查看过那里是否有日志目录?那是 $DSE_HOME 指向的地方吗?或者连接到它创建 webui 的驱动程序:

    INFO SparkUI:在 http://10.0.1.88:4040 启动 SparkUI

    您应该会在某处看到指向错误日志的链接。

    更多关于 IP 与主机名的事情,this very old bug is marked as Resolved,但我还没有弄清楚它们所说的已解决是什么意思,所以我只倾向于 IP 地址。

    【讨论】:

    • 我在$SPARK_HOME/conf/spark-env.sh 中设置了SPARK_MASTER_IP=10.0.1.69,但似乎没有任何区别。
    • 听起来有些不同,但要确保您还删除了其他设置以获得良好的基线?这是新的,还是以前有效而现在无效?您现在找到日志了吗?
    猜你喜欢
    • 2017-09-14
    • 2017-09-09
    • 2013-07-31
    • 2014-05-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多