在独立Spark上连接到远程主站

pac*_*man 12 scala apache-spark

我通过以下步骤在远程服务器上以独立模式启动Spark:

  • cp spark-env.sh.template spark-env.sh
  • 附加到 spark-env.sh SPARK_MASTER_HOST=IP_OF_MY_REMOTE_SERVER
  • 并为独立模式运行下一个命令: sbin/start-master.sh sbin/start-slave.sh spark://IP_OF_MY_REMOTE_SERVER:7077

我尝试连接到远程主控:

val spark = SparkSession.builder()
  .appName("SparkSample")
  .master("spark://IP_OF_MY_REMOTE_SERVER:7077")
  .getOrCreate()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR SparkContext: Error initializing SparkContext.
java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries!
Run Code Online (Sandbox Code Playgroud)

和警告:

    WARN Utils: Service 'sparkMaster' could not bind on port 7077. Attempting port 7078.
.....
    WARN Utils: Service 'sparkMaster' could not bind on port 7092. Attempting port 7092.
Run Code Online (Sandbox Code Playgroud)

Gar*_*n S 5

我建议不要使用端口开放策略远程提交spark作业,因为它可能会导致安全问题,并且据我所知,这比值得的麻烦还多,尤其是由于必须对通信层进行故障排除。

备择方案:

1)Livy-现在是一个Apache项目!http://livy.iohttp://livy.incubator.apache.org/

2)Spark Job服务器-https: //github.com/spark-jobserver/spark-jobserver

相似的问答:将作业远程提交到Spark EC2集群

如果您坚持不使用Livy之类的库进行连接,请打开端口以确保需要通信。Spark网络通讯文档:http//spark.apache.org/docs/latest/security.html#configuring-ports-for-network-security

由于您未使用YARN(根据您的独立设计),因此到YARN远程提交的先前链接可能不相关。