如何检查 Spark ui 是否最近运行的应用程序

问题描述 投票:0回答:1

我有以下脚本正在 emr 的主节点上运行进行测试

我有一个名为

spark_test.py
的文件,如下

from pyspark.sql import SparkSession

spark = SparkSession.builder.master("local[*]").appName("test").getOrCreate()

print("Spark Version:",spark.version)

sc = spark.sparkContext

print('Master :',sc.master)

print('Default Parallelism :',sc.defaultParallelism)

print('AQE Enabled :',spark.conf.get('spark.sql.adaptive.enabled'))

spark.conf.set('spark.sql.adaptive.enabled','true')

print('AQE Enabled :',spark.conf.get('spark.sql.adaptive.enabled'))

df = spark.read.load("/home/hadoop/sample.csv",format="csv", sep=",", inferSchema="true", header="true")

print('No of partitions in the dataframe :',df.rdd.getNumPartitions())

print(sc.uiWebUrl)

spark.stop()

print("Spark Version:",spark.version)

print('Master :',sc.master)

运行它

(venv) [hadoop@xxx]$ python spark_test.py 
24/02/16 09:20:41 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark Version: 2.4.3
Master : local[*]
Default Parallelism : 4
AQE Enabled : false
AQE Enabled : true
No of partitions in the dataframe : 8                                           
http://ip-xx.xx.xx.xx.ec2.internal:4040
Spark Version: 2.4.3
Master : local[*]

我想检查该脚本的 Spark ui。

我尝试访问,

http://ip-xx.xx.xx.xx.ec2.internal:4040
,但它说
site cant be reached

(注意:我在本地使用 ssh 隧道访问 UI)

我可以访问 emr 应用程序中提到的 Spark 历史服务器,但我没有看到任何细节,可能是因为我使用 master“local[*]”而不是纱线独立运行它

如何访问任何独立脚本的 Spark ui

apache-spark pyspark amazon-emr
1个回答
0
投票

以下是您可以尝试实施的步骤

文档中的命令如下:

ssh -i ~/mykeypair.pem -N -L 8157:ec2-###-##-##-###.compute-1.amazonaws.com:8088 hadoop@ec2-###-##-##-###.compute-1.amazonaws.com

在此示例中,命令通过将本地端口

8157
(随机选择的未使用本地端口)上的流量转发到主节点本地 Web 服务器上的端口 8088 来访问 ResourceManager Web 界面。在命令中,将
~/mykeypair.pem
替换为
.pem
文件的位置和文件名,并将
ec2-###-##-##-###.compute-1.amazonaws.com
替换为集群的主公共 DNS 名称。要访问不同的 Web 界面,请将
8088
替换为适当的端口号。例如,对于 Zeppelin 界面,将
8088
替换为
8890

并且请注意,仅当 Spark 会话处于活动状态时,您才能访问 Spark UI(在本地集群/远程集群上)。一旦您调用

spark.stop()
,它将阻止 Spark Web UI 处于活动状态。

因此,在调用

input(Press any key to continue..)
之前运行简单的用户输入命令,例如
spark.stop()
。这样,UI 将处于活动状态,直到您返回终端并按下按键并将其禁用为止。

© www.soinside.com 2019 - 2024. All rights reserved.