Zeppelin 0.11.1搭配Spark 3.3:Spark解释器报NoSuchFileException异常
解决Zeppelin提交Spark作业时的InterpreterException(文件存在但Worker节点报NoSuchFileException)
报错详情
org.apache.zeppelin.interpreter.InterpreterException: java.io.IOException: Fail to launch interpreter process: ERROR ClientEndpoint: Exception from cluster was: java.nio.file.NoSuchFileException: /zzz/ppp/lll/Zeppelin/zeppelin-0.11.1-bin-all/interpreter/spark/spark-interpreter-0.11.1.jar
已知条件:文件在本地路径真实存在,已调整文件权限和归属,Spark Master及Worker节点日志均报该异常,请求已到达Worker节点但执行失败。
问题根源
Worker节点本地文件系统中不存在这个路径下的jar包。Zeppelin默认不会自动将本地interpreter目录下的jar包同步到集群所有Worker节点,导致Worker执行时找不到依赖文件。
解决方案
手动同步jar包到所有Worker节点
用scp、pdsh或ansible这类集群分发工具,把本地/zzz/ppp/lll/Zeppelin/zeppelin-0.11.1-bin-all/interpreter/spark/目录下的所有文件,复制到每个Worker节点的完全相同路径下,确保权限和归属与本地节点一致。改用集群共享存储存放interpreter jar包
- 先把spark-interpreter相关jar包上传到HDFS、NFS这类集群共享存储的指定路径,比如
hdfs:///shared/zeppelin/interpreter/spark/; - 在Zeppelin的Spark interpreter配置页面,修改
spark.executor.extraClassPath和spark.driver.extraClassPath配置项,指向共享存储中的jar包路径:spark.executor.extraClassPath=hdfs:///shared/zeppelin/interpreter/spark/spark-interpreter-0.11.1.jar spark.driver.extraClassPath=hdfs:///shared/zeppelin/interpreter/spark/spark-interpreter-0.11.1.jar
- 先把spark-interpreter相关jar包上传到HDFS、NFS这类集群共享存储的指定路径,比如
调整Zeppelin interpreter的集群部署配置
如果使用Spark独立集群(spark://master:7077),检查Zeppelin的interpreter配置:- 将
zeppelin.interpreter.localRepo设置为集群共享路径; - 开启
zeppelin.interpreter.remoteRunner.enabled配置,让Worker节点能自动拉取所需的interpreter依赖文件。
- 将
内容的提问来源于stack exchange,提问作者William Fox
相关产品推荐
相关产品推荐

