IPv6环境部署Apache Spark时Worker节点启动失败如何配置?
Spark Worker IPv6环境启动失败解决方案
报错根因
你遇到的断言错误由低版本Spark的主机名校验逻辑缺陷导致:低于2.4.6、3.0.0版本的Spark中org.apache.spark.util.Utils.checkHost方法未兼容IPv6地址格式,会误将合法IPv6地址判定为非主机名字符串,直接抛出校验失败异常。
可行解决方案
方案1:升级Spark版本(最优)
直接升级到Spark 2.4.6/3.0.0及以上版本,上述版本已经官方修复了IPv6地址校验问题,原生支持IPv6环境下的集群部署。
方案2:低版本兼容配置(无法升级时使用)
如果暂时无法升级Spark版本,可通过以下配置绕过校验:
- 第一步:提前为所有Master、Worker节点的IPv6地址配置对应的DNS域名解析,禁止直接使用IPv6地址作为集群访问参数
- 第二步:修改Worker节点的
spark-env.sh配置文件,添加以下环境变量:# 配置为当前Worker节点IPv6对应的DNS域名 export SPARK_LOCAL_HOSTNAME=worker-xxx.xxx.cluster.local # 开启IPv6优先解析 export SPARK_PREFER_IPV6=true - 第三步:启动Worker时指定Master的访问地址为Master节点IPv6对应的DNS域名,参考命令:
./sbin/start-worker.sh spark://spark-master.t253-u000265.svc.cluster.local:7077 - 第四步:校验节点的
/etc/hosts配置,确保IPv6地址和对应域名的解析优先级高于IPv4解析,避免Spark自动抓取到IPv4地址导致异常。
内容的提问来源于stack exchange,提问作者sai
相关产品推荐
相关产品推荐

