即使在定义执行程序端口后,Spark也会使用随机端口

时间:2018-07-09 04:51:40

标签: apache-spark

我有一个用于开发目的的小型群集设置,其中包含3个VM,所有VM上均安装了spark 2.3。我已经在VM1中启动了主机,而在其他2个Vms中启动了具有主机Ipaddress的从机。我们在所有3个Vms中都启用了防火墙,并在防火墙中打开了端口范围38001:38113

在启动虚拟机之前,我们需要完成以下配置。

在主节​​点,工人1和工人2节点中

Spark-default.conf文件添加了以下属性:

  • spark.blockManager.port 38001
  • spark.broadcast.port 38018
  • spark.driver.port 38035
  • spark.executor.port 38052
  • spark.fileserver.port 38069
  • spark.replClassServer.port 38086
  • spark.shuffle.service.port 38103

在Worker 1和Worker 2节点中

Spark-env.sh文件添加了以下属性:

  • SPARK_WORKER_PORT = 38112-适用于worker-1
  • SPARK_WORKER_PORT = 38113-适用于worker-2

当我们启动Spark-shell并执行示例csv文件读取时,在Worker上启动的执行程序正在从Spark驱动程序的随机端口开始。

例如:

  

Spark Executor命令:“ / usr / java / jdk1.8.0_171-amd64 / jre / bin / java”“-cp”“ / opt / spark / 2.3.0 / conf /:/ opt / spark / 2.3。 0 / jars / *“” -Xmx1024M“” -Dspark.driver.port = 34573“” org.apache.spark.executor.CoarseGrainedExecutorBackend“” --driver-url“” spark://CoarseGrainedScheduler@293.72.254.89:34573 “” --executor-id“” 1“”-主机名“” 293.72.146.384“” --cores“” 4“” --app-id“” app-20180706072052-0000“” --worker-url“ “ spark://Worker@293.72.146.384:38112”

如您在上面的命令中看到的那样,执行程序以34573开始于Spark.driver.port。并且总是随机启动。因此,我的程序由于无法与驱动程序通信而失败。

任何人都可以通过此配置帮助我,该配置可用于在所有端口都被阻塞的网络紧密环境中执行。

谢谢。

1 个答案:

答案 0 :(得分:0)

开始工作:

./ start-slave.sh spark:// hostname:port -p [Worker Port]

Options: -c CORES, --cores CORES Number of cores to use -m MEM, --memory MEM Amount of memory to use (e.g. 1000M, 2G) -d DIR, --work-dir DIR Directory to run apps in (default: SPARK_HOME/work) -i HOST, --ip IP Hostname to listen on (deprecated, please use --host or -h) -h HOST, --host HOST Hostname to listen on -p PORT, --port PORT Port to listen on (default: random) --webui-port PORT Port for web UI (default: 8081) --properties-file FILE Path to a custom Spark properties file. Default is conf/spark-defaults.conf.