如何在客户端模式下提交远程主节点上的spark作业?

f0brbegy  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(408)

我需要将spark应用程序/作业提交到远程spark群集。我目前已在我的机器和主节点的ip地址作为Yarn客户端Spark。顺便说一句,我的机器不在群集中。我用这个命令提交我的工作

./spark-submit --class SparkTest --deploy-mode client /home/vm/app.jar

我有我的主人的地址硬编码到我的应用程序的形式

val spark_master = spark://IP:7077

但我得到的只是一个错误

16/06/06 03:04:34 INFO AppClient$ClientEndpoint: Connecting to master spark://IP:7077...
16/06/06 03:04:34 WARN AppClient$ClientEndpoint: Failed to connect to master IP:7077
java.io.IOException: Failed to connect to /IP:7077
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:216)
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:167)
at org.apache.spark.rpc.netty.NettyRpcEnv.createClient(NettyRpcEnv.scala:200)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:187)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:183)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: /IP:7077

或者如果我用

./spark-submit --class SparkTest --master yarn --deploy-mode client /home/vm/test.jar

我明白了

Exception in thread "main" java.lang.Exception: When running with master 'yarn' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment.
at org.apache.spark.deploy.SparkSubmitArguments.validateSubmitArguments(SparkSubmitArguments.scala:251)
at org.apache.spark.deploy.SparkSubmitArguments.validateArguments(SparkSubmitArguments.scala:228)
at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:109)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:114)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我真的需要在我的工作站上配置hadoop吗?所有的工作都将在远程完成,而这台机器不是集群的一部分。我正在使用spark 1.6.1。

mgdq6dx1

mgdq6dx11#

首先,如果你正在设置 conf.setMaster(...) 在应用程序代码中,它的优先级最高(高于--master参数)。如果您想在yarn客户机模式下运行,请不要在应用程序代码中使用master\ ip:7077。您应该按照以下方式向驱动程序提供hadoop客户机配置文件。
您应该将环境变量hadoop\u conf\u dir或yarn\u conf\u dir设置为指向包含客户机配置的目录。
http://spark.apache.org/docs/latest/running-on-yarn.html
根据您在spark应用程序中使用的hadoop特性,一些配置文件将用于查找配置。如果您使用的是hive(通过sparksql中的hivecontext),它将查找hive-site.xml。hdfs-site.xml将用于查找从作业读取/写入hdfs的namenode的坐标。

相关问题