Ubuntu20.04下Zeppelin0.10.0集成Flink1.14.0启动FlinkInterpreter失败求助
错误原因
- Java版本兼容性问题:你当前使用的Java 11在Zeppelin 0.10.0的Flink解释器中存在反射调用适配问题,虽然Flink 1.14本身支持Java 11,但Zeppelin 0.10.0的Flink解释器针对Java 8做了更多适配,Java 11的模块化机制会导致反射构造类时出现参数类型不匹配的错误。
- Flink与Zeppelin解释器版本适配问题:Zeppelin 0.10.0内置的Flink解释器默认适配的Flink版本低于1.14,两者的Scala交互接口存在差异,导致初始化FlinkScalaInterpreter时构造函数参数不匹配。
解决方案
方案一:降级Java版本为Java 8(最简便,成功率最高)
- 安装OpenJDK 8
sudo apt install openjdk-8-jdk -y
- 切换系统默认Java版本为Java 8
sudo update-alternatives --config java sudo update-alternatives --config javac
执行上述命令后在弹出的列表中选择Java 8对应的序号,回车确认。
3. 验证Java版本
java -version
输出显示openjdk version "1.8.x即为切换成功。
4. 重启Flink集群和Zeppelin服务
# 停止Flink cd /home/flink/flink-1.14.0 ./bin/stop-cluster.sh # 停止Zeppelin cd /home/zeppelin/zeppelin-0.10.0-bin-all bin/zeppelin-daemon.sh stop # 重启Flink ./bin/start-cluster.sh # 重启Zeppelin bin/zeppelin-daemon.sh start
- 重新在Zeppelin中运行测试代码即可。
方案二:适配Java 11+版本,手动替换Zeppelin的Flink解释器依赖
如果必须使用Java 11,可按如下步骤操作:
- 停止Zeppelin服务
cd /home/zeppelin/zeppelin-0.10.0-bin-all bin/zeppelin-daemon.sh stop
- 删除Zeppelin内置的旧Flink相关jar包
rm -rf interpreter/flink/flink*.jar rm -rf interpreter/flink/scala*.jar
- 复制Flink 1.14安装目录lib下的所有jar包到Zeppelin的flink解释器目录
cp /home/flink/flink-1.14.0/lib/* /home/zeppelin/zeppelin-0.10.0-bin-all/interpreter/flink/
- 修改Zeppelin启动参数,添加Java 11反射权限配置
编辑conf/zeppelin-env.sh文件,添加如下配置:
export ZEPPELIN_JAVA_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED"
- 重启Zeppelin服务,重新运行测试代码即可。
内容的提问来源于stack exchange,提问作者David Sánchez
相关产品推荐
相关产品推荐

