关于spark history server 无法显示完成的JOB的问题解决

该问题主要是由于访问HDFS的访问权限导致的,表现为配置的hdfs上的/user/spark/applicationHistory目录下面可以生成具体的application历史信息,但是history server ui上却无法显示,表示这个目录有写入权限没有读取权限,为什么有写入权限呢?因为我执行spark-submit的时候export HADOOP_USER_NAME=hdfs了,hdfs用户是分布式文件系统的超级用户,所以有写入权限,写入的文件的用户和组分别是hdfs和spark。然后我启动history server用的是系统的root用户启动的,所以root用户没有读取/user/spark/applicationHistory目录下面文件的权限。

所以正确方式为:

启动history server: 
cd $SPARK_HOME
chown -R spark:spark logs
sudo -u spark SPARK_HISTORY_OPTS=-Dspark.history.ui.port=18088 sbin/start-history-server.sh hdfs://n1:8020/user/spark/applicationHistory
停止history server:
sudo -u spark sbin/stop-history-server.sh 

### Spark集群无法访问Web UI解决方案 #### 配置文件设置不当可能导致Web UI不可用 确保`spark-env.sh`配置文件已正确创建并修改。此文件用于指定Spark环境变量和其他重要参数,对于启用和配置Web UI至关重要[^1]。 #### Web UI端口冲突或防火墙阻止连接 默认情况下,Spark应用程序的Web UI监听于4040端口。如果该端口被其他服务占用或者服务器上的防火墙规则阻止外部对该端口的访问,则会导致无法打开Web UI页面。建议检查是否有其他进程占用了4040端口以及确认防火墙设置允许HTTP请求到达这个端口[^2]。 #### 应用程序已完成执行后的Web UI访问问题 值得注意的是,在应用完成后,默认情况下其关联的Web UI也会关闭。为了能够在作业结束后仍然能够浏览历史记录,可以部署独立的历史服务器(History Server)。这使得即使是在驱动器节点上运行的应用已经终止之后也能查看之前任务的信息。启动命令如下所示: ```bash sbin/start-history-server.sh ``` 同时还需要确保HDFS中有适当路径供存储日志数据,并且在`spark-defaults.conf`中指定了这些位置以便让history server知道去哪里查找完成的任务的日志文件。 #### 启动整个Spark集群以验证网络连通性和组件健康状况 当遇到任何关于集群内部通信的问题时,重新启动所有相关服务往往能解决问题。使用提供的脚本可以帮助简化这一过程,例如下面这条指令将会开启所有的守护进程从而恢复正常的操作模式[^3]: ```bash /opt/bigdata/spark-3.2.1-bin-hadoop3.2/sbin/start-all.sh ``` #### 提交带有特定选项的任务来增强调试能力 最后,在提交新的Spark Job时考虑增加一些额外参数帮助定位潜在错误源。比如可以通过调整`--conf spark.ui.port=XXXXX`来自定义UI展示所使用的TCP端口号;或是利用`--verbose`标志获取更详细的输出信息辅助排查故障所在之处[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值