spark on yarn【在yarn上提交spark 程序配置及实现方式】

最近老是忘记东西,,,在这里简单记录一下


1、在yarn上启动spark程序

修改 spark-env.sh文件,配置hadoop的配置文件,或者yarn的配置文件即可(两者选择其中一种即可)

指向包含Hadoop集群的(客户端)配置文件的目录。这些配置用于写入HDFS并连接到YARN ResourceManager。此目录中包含的配置将分发到YARN群集,以便应用程序使用的所有容器使用相同的配置。如果配置引用了非YARN管理的Java系统属性或环境变量,则还应在Spark应用程序的配置中设置它们(驱动程序,执行程序和在客户端模式下运行时的AM)。

export HADOOP_CONF_DIR=/use/local/hadoop/etc/hadoop/
#或者
export YARN_CONF_DIR=/use/local/hadoop/etc/hadoop/

2、两种部署模式

2.1、cluster模式

Spark驱动程序在应用程序主进程内运行,该进程由群集上的YARN管理,客户端可以在启动应用程序后消失。

2.2、client模式

驱动程序在客户端进程中运行,应用程序主服务器仅用于从YARN请求资源。

2.3、yarn 模式参数

在YARN模式下,资源管理器的地址从Hadoop配置中获取。因此,--master参数是yarn。如以下代码所示:

./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options]  [app options]

例子:

$ ./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应用程序,请执行相同操作,但替换clusterclient。以下显示了如何spark-shellclient模式下运行:

2.4、添加其他JAR

cluster模式下,驱动程序在与客户端不同的计算机上运行,因此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

2.5、运行参数配置

在YARN上运行Spark需要Spark的二进制分发,它是使用YARN支持构建的。

要从YARN端访问Spark运行时jar,可以指定spark.yarn.archivespark.yarn.jars

如果既未指定也spark.yarn.archivespark.yarn.jars指定,Spark将创建一个包含所有jar的zip文件,$SPARK_HOME/jars并将其上载到分布式缓存。

 

2.6、注意事项

  • 核心请求是否在调度决策中得到遵守取决于正在使用的调度程序及其配置方式。

  • cluster模式下,Spark执行程序和Spark驱动程序使用的本地目录将是为YARN(Hadoop YARN config yarn.nodemanager.local-dirs)配置的本地目录。如果用户指定spark.local.dir,则将被忽略。在client模式下,Spark执行程序将使用为YARN配置的本地目录,而Spark驱动程序将使用在其中定义的目录spark.local.dir。这是因为Spark驱动程序在client模式下不在YARN集群上运行,只有Spark执行程序才能运行。

  • --files--archives选项支持类似于Hadoop的该#指定文件名。例如,您可以指定:--files localtest.txt#appSees.txt这会将您在本地命名的文件上传localtest.txt到HDFS中,但这将通过名称链接appSees.txt,并且您的应用程序应使用名称作为appSees.txt在YARN上运行时引用它。

  • 如果您--jars将该SparkContext.addJar功能与本地文件一起使用并以cluster模式运行,该选项允许该功能正常工作。如果您将它与HDFS,HTTP,HTTPS或FTP文件一起使用,则无需使用它。

说明:内容注意事项,参考官网记录,有问题请联系QQ:765120845 

你可能感兴趣的:(spark)