Spark Standalone模式Worker节点UndeclaredThrowableException报错如何解决
问题排查与修复方案
优先级最高的排查点
- MongoDB连接串配置错误
检查代码中connectionString变量的取值,确认是否错误写死了localhost作为MongoDB服务地址。由于你使用cluster部署模式提交作业,Spark Driver会调度到集群内任意Worker节点运行,若MongoDB未部署在对应Worker节点本地,请求本地地址必然会被拒绝。需要将连接串中的地址修改为MongoDB服务所在节点的集群内可访问IP/域名。 - spark-submit依赖配置语法错误
你当前提交命令中多次使用--packages参数,该参数多次指定时,后面的配置会直接覆盖之前的配置,最终导致部分依赖无法正常分发到Worker节点。正确写法是将多个依赖放在同一个--packages参数中,用英文逗号分隔:
依赖分发异常会触发MongoDB连接器的默认降级逻辑,也可能导致本地地址连接尝试。spark-submit \ --class com.sparkTutorial.input \ --deploy-mode cluster \ --master "spark://master-node:7077" \ --packages com.microsoft.sqlserver:mssql-jdbc:7.4.1.jre11,org.mongodb.spark:mongo-spark-connector_2.12:3.0.1 \ target/scala-2.12/sql-mongo-validation-assembly-0.1.jar - MongoDB服务访问权限配置问题
若连接串已经配置了正确的远程MongoDB地址,还需要检查两项配置:- MongoDB服务是否绑定了
127.0.0.1,需要修改为绑定集群内可访问的网卡地址,测试环境也可临时绑定0.0.0.0验证连通性(生产环境不推荐) - MongoDB所在节点的防火墙是否开放了服务端口,同时确认Spark集群所有Worker节点的出站规则允许访问MongoDB的服务地址与端口
- MongoDB服务是否绑定了
内容的提问来源于stack exchange,提问作者Shantanu Gupta
相关产品推荐
相关产品推荐

