【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.archive 或者 spark.yarn.jars,Spark将创建一个zip文件,其中包含 $SPARK_HOME/jars 目录下的所有jar文件,并将其上传到分布式缓存中。

本文详述了如何在YARN上启动Spark应用程序,包括客户端和集群模式,配置注意事项,Kerberos设置,以及使用Spark历史服务器。此外,还讨论了日志调试、外部Shuffle服务和Oozie集成。
最低0.47元/天 解锁文章
469

被折叠的 条评论
为什么被折叠?



