在本地模式下启动Spark时如何更改主Web ui端口

时间:2019-05-20 19:47:21

标签: apache-spark

我在本地模式下使用spark(master = "local[*]",请参见下面的代码)。如何将主端口从8080更改为其他端口(在这种情况下,由于8080已被占用,我需要这样做)。而且,由于已被占用,Spark Master似乎只是不启动其Web ui。

        SparkConf conf = new SparkConf()
                .setMaster("local[*]")
                .setAppName("Local RESTWS ML");
        return SparkSession
                .builder()
                .config(conf)
                .getOrCreate();
    }

我尝试设置SPARK_MASTER_WEBUI_PORT环境变量没有成功。

2 个答案:

答案 0 :(得分:1)

在本地模式下运行spark时,不需要启动主节点。如果您只是运行发布的代码而没有启动母版,则您不会拥有母版webui。相反,您仍将在端口4040上拥有sparkContext Web ui。如果您想更改该端口:

SparkConf conf = new SparkConf()
            .setMaster("local[*]")
            .setAppName("Local RESTWS ML")
            .set("spark.ui.port", "4041");

或者如果您想跳过SparkConf:

     return SparkSession
            .builder()
            .appName("Local RESTWS ML")
            .master("local[*]")
            .config("spark.ui.port", "4041")
            .getOrCreate();

答案 1 :(得分:1)

env变量SPARK_MASTER_WEBUI_PORT仅在独立模式下有效。 几个选择。

  1. 以编程方式-就像@Panagiotis建议的那样。
  2. 声明性地-在spark-defaults.conf中指定spark.ui.port或作为参数传递给spark-submit调用,例如spark-submit --conf spark.ui.port=xxxx

注意:如果给定端口不可用,请尝试下一个端口,直到有可用端口为止(由spark.port.maxRetries控制,默认为16)。例如,如果spark.ui.port是1000,并且直到1016年没有可用端口,则Spark UI调出将失败