spark报错:显示集群成功连接却无法访问WebUI

搭建spark集群时候显示集群搭建成功

jps查看三台机子都有显示Master或Worker但是访问webUI时候报错:

解决方法:spark默认端口是8080,笔者是因为忽略了8080端口被java占用,故无法启动,先查看8080端口是否被占用:

lsof -i:8080

很明显被java占用,笔者选择修改spark端口号避免:

[root@hadoop2 /]cd /opt/spark-3.4.3/conf/
[root@hadoop2 conf]ll
总用量 48
-rw-r--r--. 1 master master 1105 8月  27 14:56 fairscheduler.xml.template
-rw-r--r--. 1 master master 3350 8月  27 14:56 log4j2.properties.template
-rw-r--r--. 1 master master 9141 8月  27 14:56 metrics.properties.template
-rw-r--r--. 1 master master 1292 8月  27 14:56 spark-defaults.conf.template
-rwxr-xr-x. 1 root   root   4807 9月   2 02:51 spark-env.sh
-rwxr-xr-x. 1 master master 4694 4月  15 09:28 spark-env.sh.template
-rw-r--r--. 1 root   root    872 9月   2 02:47 workers
-rw-r--r--. 1 master master  865 4月  15 09:28 workers.template
[root@hadoop2 conf]mv spark-defaults.conf.template spark-defaults.conf
[root@hadoop2 conf]vim spark-defaults.conf 

这里先检查一下我们要修改的 spark-defaults.conf 文件是否存在,若只有spark-defaults.conf.template,就用mv指令一行修改文件名,若存在直接vim进行编辑,只需要在最后一行加入:

spark.ui.port 8081

端口号被修改为8081,还可以用scp指令把修改后的spark-defaults.conf发送到两台worker上

scp -r spark-defaults.conf hadoop1:/opt/spark-3.4.3/conf/

访问web成功: 

注:请根据自己spark的安装目录自行修改代码

### Spark 连接 MySQL 报错 No Suitable Driver 的解决方案 当遇到 `java.sql.SQLException: No suitable driver` 错误时,这通常意味着 Java 虚拟机无法找到合适的 JDBC 驱动程序来连接 MySQL 数据库。以下是几种有效的解决方法: #### 方法一:放置驱动文件到 JAVA_HOME 目录 可以将 MySQL Connector/J (JDBC 驱动) 放置在系统的 `$JAVA_HOME/jre/lib/ext` 文件夹中[^1]。 #### 方法二:放置驱动文件至 PySpark JARs 目录 另一种做法是把 MySQL 的 JDBC jar 包放入 PySpark 安装路径下的 `Lib/site-packages/pyspark/jars` 文件夹内[^2]。 #### 方法三:通过命令行参数指定驱动位置 对于使用 `spark-submit` 提交的任务,可以在提交作业的时候利用 `--driver-class-path` 参数指明 MySQL 驱动的位置,从而让 Spark 应用能够加载该驱动[^5]。 ```bash spark-submit \ --driver-class-path /path/to/mysql-connector-java-version-bin.jar \ ... ``` #### 方法四:动态注册驱动类 如果上述办法仍未能解决问题,则可在应用程序启动前尝试显式地加载 MySQL 驱动类。可以通过执行如下 Python 语句实现这一点: ```python from pyspark import SparkConf, SparkContext conf = SparkConf().setAppName("MyApp")\ .set("spark.jars", "/path/to/mysql-connector-java-version-bin.jar") sc = SparkContext(conf=conf) # 动态加载MySQL驱动 sc._jsc.hadoopConfiguration().set("javax.jdo.option.ConnectionDriverName", "com.mysql.jdbc.Driver") # 或者直接调用Java静态方法加载驱动 sc._gateway.jvm.java.lang.Class.forName('com.mysql.jdbc.Driver') ``` 以上措施应该可以帮助克服由于缺少合适驱动而导致的连接问题。值得注意的是,在某些情况下即使安装了正确的驱动也可能因为版本兼容性或其他配置原因而继续出现问题;因此建议确保所使用的 MySQL 和 Spark 版本相互匹配,并查阅官方文档获取更多帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值