我正试图在HA模式下将火花作业发送到纱线(没有HDFS)。
对于提交,我使用org.apache.spark.deploy.SparkSubmit
。当我从具有活动资源管理器的机器发送请求时,它运行良好。但是,如果我试图用备用资源管理器从机器发送,作业失败并出现错误:
DEBUG org.apache.hadoop.ipc.Client - Connecting to spark2-node-dev/10.10.10.167:8032
DEBUG org.apache.hadoop.ipc.Client - Connecting to /0.0.0.0:8032
org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep
然而,当我通过命令行发送请求(spark-submit)时,它在活动和备用机器中都能很好地工作。
是什么原因导致了问题?
p.S.对两种类型的发送作业使用相同的参数:org.apache.spark.deploy.SparkSubmit
和spark-submit
命令行请求。以及为所有rm主机定义的属性yarn.resourcemanager.hostname.rm_id
问题在于spark-submitter-jar的类路径中缺少yarn-site.xml。实际上,spark-submitter-jar并没有考虑YARN_CONF_DIR
或HADOOP_CONF_DIR
env-var,所以看不到yarn站点。
我发现的一个解决方案是将yarn站点放入jar的类路径中。