这个问题的原因有几个:
1、客户端安装的机器一般是虚拟机,虚拟机的名称可能是随便搞的,然而,yarn-client模式提交任务,是默认把本机当成driver的。所以导致其他的机器无法通过host的name直接访问这台机器。报错就是Failed to connect to driver at x.x.x.x,retrying.....
解决办法:在命令后面加上一个--conf spark.driver.host=$your_ip_address,后面直接填客户端机器的IP地址就行。还有一个办法:export SPARK_JAVA_OPTS="-Dspark.driver.host=$your_ip_address",但是这种方法你在用完yarn-client后就没有办法再用yarn-cluster了。千万不能把这个参数配置到spark-default.conf里面。
2、客户机的防火墙是开着的,把端口给屏蔽掉了。因为这个访问机器的端口,是随机的...所以还是关闭防火墙比较好。