Apache Spark Master启动失败,报java.lang.reflect.InaccessibleObjectException错误
报错核心原因
该错误是Java版本与你安装的Apache Spark版本不兼容导致的:你当前系统使用的是Java 9及以上版本(Ubuntu 20.04默认安装的是Java 11),低版本Spark(3.2.0以下)仅适配Java 8,无法兼容高版本Java的模块化权限控制机制,因此触发java.nio模块访问权限异常。开头的主机名解析警告为非致命问题,可同步修复。
解决步骤
- 安装适配的Java 8版本
终端执行命令:sudo apt install openjdk-8-jdk - 切换系统默认Java版本
执行命令调出版本选择菜单:sudo update-alternatives --config java
根据终端输出的列表,输入Java 8对应的序号后回车确认。执行以下命令验证切换是否成功:java -version
输出中包含openjdk version "1.8.x"即为切换成功。 - (可选)修复主机名解析警告
进入Spark安装目录下的conf文件夹,复制环境配置模板:cp spark-env.sh.template spark-env.sh
编辑spark-env.sh,在文件末尾添加配置指定绑定IP:# 仅本地访问填127.0.0.1,需要局域网访问填本机局域网IP如192.168.0.105 export SPARK_LOCAL_IP=127.0.0.1 - 重启Spark Master服务
重新执行启动命令即可正常启动:start-master.sh
启动成功后可访问http://localhost:8080查看Spark Master的Web管理页面。
补充说明:如果你希望继续使用高版本Java,需要将Spark升级到3.2.0及以上版本,同时在Spark启动参数中添加对应的JVM模块开放配置,该方案兼容性不如直接切换到Java 8,更推荐新手使用上述步骤操作。
内容的提问来源于stack exchange,提问作者ptushev
相关产品推荐
相关产品推荐

