這個問題的原因有幾個:
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、客戶機的防火牆是開着的,把端口給屏蔽掉了。因為這個訪問機器的端口,是隨機的...所以還是關閉防火牆比較好。