我正在运行具有以下集群和应用程序配置的 Spark 作业:
总节点:3
Master Node Memory 7.5GB, 2 Cores
Worker Node1, Memory 15GB, 4 Cores
Worker Node2, Memory 15GB, 4 Cores
应用程序配置:
--master yarn --num-executors 2 --executor-cores 2 --executor-memory 2G
我正在尝试使用同一用户同时提交多个作业,但是我看到只有前两个提交的作业正在执行,第三个必须等待后续的交战。
19/11/19 08:30:49 WARN org.apache.spark.util.Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
19/11/19 08:30:49 WARN org.apache.spark.util.Utils: Service 'SparkUI' could not bind on port 4041. Attempting port 4042.
我发现正在为每个提交的作业创建 SparkUI,而我的集群一次只接受两个作业。此外,我观察到,一旦第一个提交的作业完成执行,它就会在端口 4042 上获取第三个作业。我的集群一次只接受两个工作可能有什么问题?
这是我的 Spark 会话代码:
val spark: SparkSession = {
val sparkSession = SparkSession
.builder()
.appName("Data Analytics")
.config("spark.scheduler.mode", "FAIR")
//.master("local[*]")
.getOrCreate()
sparkSession
}
我的进一步问题是:为什么 SparkSession 为每个作业创建 SparkUI 以及我们如何解决这个问题。有没有办法将同一个会话用于多个工作。