公司内网链接阿里云服务器调试Spark程序问题记录
1.spark-env.sh中SPARK_MASTER_HOST配置为阿里云内网地址,代码中setMaster设置为阿里云外网地址
2.需要全端口内网穿透,使用的nat123-免访问者,使内网机器可以与云服务器互相通信
3.代码中spark.driver.host设置为内网穿透域名,本地hosts中需要将该域名配置成127.0.0.1,否则就会报Cannot assign requested address: bind: Service 'sparkDriver' failed after 16 retries异常
第一次运行成功,之后再次运行一直报错(更换了新域名):Address already in use: Service 'SparkUI' failed after 16 retries
问题排查
a.排除了nat123内网穿透、Spark环境资源不足、Spark/Scala版本、清理旧数据等问题
b.调试跟踪代码(Spark集群、本地均为2.4.3版本)
切换工程中Spark为较低版本时(2.3.0之下),打印日志:parkui buid on 域名,域名为第一次运行时的域名,并报了其他错误,并没有报'SparkUI' failed
此时工程中已经没有原域名相关信息,调试代码查找原域名来源
到WebUI中131行时,host值为原域名,跟进到SparkConf.scala中475行System.getenv(name) name = SPARK_LOCAL_IP
查看本地系统环境变量,SPARK_LOCAL_IP为原域名(代码创建),修改该变量为新域名
再次运行失败
打开任务管理器,杀掉explorer.exe,重启
work中日志重复打印Asked to launch executor app-20190808125050-0000/1-X for SparkTest
wget http://+日志中内网穿透域名:端口,激活域名,云服务器和内网主机成功通信,运行成功,计算出Pi

浙公网安备 33010602011771号