我通过以下步骤在远程服务器上以独立模式启动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()
而且我收到以下错误:
ERROR SparkContext: Error initializing SparkContext.
java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries!
和警告:
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.
我建议不要使用端口开放策略远程提交spark作业,因为它可能会导致安全问题,并且据我所知,这比值得的麻烦还多,尤其是由于必须对通信层进行故障排除。
备择方案:
1)Livy-现在是一个Apache项目!http://livy.io或http://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远程提交的先前链接可能不相关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句