我有hadoop_home,hadoop_conf_dir,yarn_conf_dir都在spark-env.sh脚本中定义。但是,当我尝试用
在纱线上加载火花 val sess = new SparkConf().setMaster("yarn-client").setAppName("default")
它是
23:36:44.219 [run-main-0] DEBUG o.a.h.i.retry.RetryInvocationHandler - Exception while invoking getClusterMetrics of class ApplicationClientProtocolPBClientImpl over null. Retrying after sleeping for 30000ms.
java.net.ConnectException: Call From ip-10-122-2-155/10.122.2.155 to 0.0.0.0:8032 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
端口8032打开时,本地没有任何运行,因此显然会淘汰。
我的纱线site.xml明确指出RM地址
<property>
<name>yarn.resourcemanager.address</name>
<value>10.122.2.195:8032</value>
</property>
您的驱动程序程序无法访问spark-env.sh中定义的变量。(假设您不运行火花壳)
可能的原因可能是,运行驱动程序的用户与Spark的用户不同(Spark安装文件)。
在运行驱动程序之前,请尝试手动设置Spark-env.sh的变量,如下所示
source spark-env.sh
我通过在build.sbt
文件中添加以下行来解决此问题。
unmanagedClasspath in Compile += file("/home/ubuntu/hadoop-2.6.0/etc/hadoop")
unmanagedClasspath in Runtime += file("/home/ubuntu/hadoop-2.6.0/etc/hadoop")
使用其他环境变量来解决此问题,允许SBT项目拾取纱线配置。