【spark床头书系列】如何在YARN上启动Spark官网权威详解说明点击这里看全文
文章目录
确保
HADOOP_CONF_DIR
或者
YARN_CONF_DIR
指向包含(客户端侧)Hadoop集群配置文件的目录。
这些配置文件用于写入HDFS和连接到YARN ResourceManager。该目录中的配置将被分发到YARN集群,以便应用程序使用相同的配置。如果配置引用了YARN未管理的Java系统属性或环境变量,则也应在Spark应用程序的配置中设置(驱动程序、执行器和以客户端模式运行时的应用程序主进程)。
在YARN上可以使用两种部署模式来启动Spark应用程序。在 cluster
模式下,Spark driver 在由YARN在集群上管理的应用程序主进程中运行,客户端在启动应用程序后可以退出。在 client
模式下,driver 在客户端进程中运行,应用程序主进程仅用于从YARN请求资源。
与Spark支持的其他集群管理器不同,其中主节点地址在 --master
参数中指定,在YARN模式下ResourceManager的地址是从Hadoop配置中获取的。
因此,--master
参数是 yarn
。
要以 cluster
模式启动Spark应用程序:
$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] <app jar> [app options]
例如:
$export HADOOP_CONF_DIR=/etc/hadoop/conf;
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
examples/jars/spark-examples*.jar \
10
上述示例启动了一个YARN客户端程序,该程序启动了默认的Application Master。然后,SparkPi将作为Application Master的子线程运行。客户端会定期轮询Application Master以获取状态更新,并在控制台中显示它们。一旦应用程序运行完成,客户端将退出。有关如何查看驱动程序和执行器日志,请参考下面的“调试应用程序”部分。
要以 client
模式启动Spark应用程序,可以执行相同的操作,只需将 cluster
替换为 client
。以下是在 client
模式下运行 spark-shell
的示例:
$ ./bin/spark-shell --master yarn --deploy-mode client
添加其他JAR文件
在 cluster
模式下,driver 在与客户端不同的机器上运行,因此 SparkContext.addJar
默认情况下无法使用客户端本地的文件。要使客户端上的文件对 SparkContext.addJar
可用,可以在启动命令中使用 --jars
选项包含它们。
$ ./bin/spark-submit --class my.main.Class \
--master yarn \
--deploy-mode cluster \
--jars my-other-jar.jar,my-other-other-jar.jar \
my-main-jar.jar \
app_arg1 app_arg2
准备工作
在YARN上运行Spark需要一个构建了YARN支持的二进制分发版Spark。
二进制分发版可以从该项目网站的下载页面下载。
要自己构建Spark,请参考构建Spark。
为了使YARN端能够访问Spark运行时jar文件,可以指定 spark.yarn.archive
或者 spark.yarn.jars
。详细信息请参考Spark属性。如果未指定 spark.yarn.a