如何访问EMR上Spark standalone脚本的Spark UI?
解决EMR主节点Local模式PySpark应用的Spark UI访问与History Server记录问题
一、修复SSH隧道访问Spark UI的问题
Local模式下Spark Driver默认仅绑定EC2内网IP,导致SSH隧道无法映射访问,可通过以下方式解决:
1. 临时启动参数配置
运行PySpark脚本时,显式指定Driver绑定所有网卡地址:
spark-submit --master local[*] \ --conf spark.driver.host=0.0.0.0 \ --conf spark.driver.bindAddress=0.0.0.0 \ spark_test.py
2. 永久配置修改
修改EMR主节点的Spark默认配置文件/etc/spark/conf/spark-defaults.conf,添加以下两行:
spark.driver.host 0.0.0.0 spark.driver.bindAddress 0.0.0.0
后续所有Local模式的Spark应用都会自动绑定所有地址。
3. 正确配置SSH隧道
在本地终端执行以下命令,将本地4040端口映射到EMR主节点的4040端口:
ssh -i "你的密钥文件.pem" -L 4040:localhost:4040 hadoop@<EMR主节点公网IP>
完成后直接在本地浏览器访问http://localhost:4040即可打开Spark UI。
二、让Spark History Server捕获Local模式应用的信息
Local模式应用默认不会生成事件日志,需配置日志存储路径让History Server识别:
1. 临时启动参数配置
运行脚本时添加事件日志相关配置:
spark-submit --master local[*] \ --conf spark.eventLog.enabled=true \ --conf spark.eventLog.dir=s3://<你的S3存储桶路径>/spark-events \ spark_test.py
注:也可使用HDFS路径,如hdfs:///user/spark/applicationHistory,需确保路径存在且Spark进程有读写权限。
2. 永久配置修改
在/etc/spark/conf/spark-defaults.conf中添加:
spark.eventLog.enabled true spark.eventLog.dir s3://<你的S3存储桶路径>/spark-events
之后重启Spark History Server:
sudo systemctl restart spark-history-server
再次运行Local模式应用后,History Server即可加载并展示该应用的历史信息。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

