如何为严密的防火墙配置 Apache Spark 随机工作端口?
Posted
技术标签:
【中文标题】如何为严密的防火墙配置 Apache Spark 随机工作端口?【英文标题】:How to configure Apache Spark random worker ports for tight firewalls? 【发布时间】:2015-02-28 00:12:39 【问题描述】:我正在使用 Apache Spark 运行机器学习算法和其他大数据任务。以前,我使用的是 spark 集群独立模式,在同一台机器上运行 spark master 和 worker。现在,我添加了多台工作机器,由于防火墙严密,我必须编辑工作机器的随机端口。谁能帮助如何更改随机火花端口并准确告诉我需要编辑哪些配置文件?我阅读了 spark 文档,它说应该配置 spark-defaults.conf
,但我不知道如何配置此文件以特别更改随机的 spark 端口。
【问题讨论】:
这个问题不是更适合 serverfault.com,因为它似乎是一个配置问题,而不是一个编程问题? 【参考方案1】:更新 Spark 2.x
一些库已从头开始重写,许多旧的 *.port
属性现已过时(参见 SPARK-10997 / SPARK-20605 / SPARK-12588 / SPARK-17678 / 等) p>
例如,对于 Spark 2.1,驱动程序将侦听执行程序流量的端口范围是
在spark.driver.port
和spark.driver.port
+spark.port.maxRetries
之间
在spark.driver.blockManager.port
和spark.driver.blockManager.port
+spark.port.maxRetries
之间
执行器将侦听驱动程序流量和/或其他执行器流量的端口范围是
在spark.blockManager.port
和spark.blockManager.port
+spark.port.maxRetries
之间
“maxRetries”属性允许并行运行多个 Spark 作业;如果基本端口已被使用,则新作业将尝试下一个,等等,除非整个范围都已使用。
来源:https://spark.apache.org/docs/2.1.1/configuration.html#networkinghttps://spark.apache.org/docs/2.1.1/security.html 在 “配置端口”
下【讨论】:
【参考方案2】:在这里查看https://spark.apache.org/docs/latest/configuration.html#networking
在“网络”部分,您可以看到默认情况下某些端口是随机的。您可以将它们设置为您的选择,如下所示:
val conf = new SparkConf()
.setMaster(master)
.setAppName("namexxx")
.set("spark.driver.port", "51810")
.set("spark.fileserver.port", "51811")
.set("spark.broadcast.port", "51812")
.set("spark.replClassServer.port", "51813")
.set("spark.blockManager.port", "51814")
.set("spark.executor.port", "51815")
【讨论】:
问题:为什么要指定执行器端口——这个值不是给工人的吗? (见spark.apache.org/docs/latest/security.html) 据我了解,一个工作人员可以有多个执行者,并且驱动程序进程正在将任务分配给执行者。它们的通信是通过 tcp 协议和端口号进行的。我指定端口以便我的防火墙不会阻止通信,因为默认情况下我的防火墙阻止了可疑端口。 但是驱动不需要打开spark.executor.port,它连接到spark.executor.port(在worker上)? 端口只是驱动程序和执行程序用来通信的隧道,据我所知,他们监听他们打开的端口以获取传入消息...... 警告: 从 Spark 2.0 开始,这些属性中的大部分已被弃用,因为驱动程序/执行程序通信已被重构...以上是关于如何为严密的防火墙配置 Apache Spark 随机工作端口?的主要内容,如果未能解决你的问题,请参考以下文章