spark.4 yarn

确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群(客户端)配置文件的目录。这些配置用于写HDFS和连接YARN ResourceManager。该目录中包含的配置将被分发到YARN集群,以便应用程序使用的所有容器都使用相同的配置。如果配置引用Java系统属性或不受YARN管理的环境变量,它们也应该在Spark应用程序的配置中进行设置(驱动程序、执行程序和AM运行时),粗体部分意思是可以在启动app的时候进行参数传递配置.

2.spark application载入yarn的方式

Spark applications 载入yarn cluster有两种部署方式( deploy modes )

  • cluster mode

此模式下spark driver(spark 驱动程序) 运行在一个被yaran管理的application master
进程中,并且client(提交程序的spark-submmit)可以在启动应用程序后离开.

  • client mode

此种模式下,spark driver驱动运行在起送客户端的机器上
并且application master 进程 仅用于向yarn申请资源

简述二者区别:
cluster:application的驱动程序运行在yarn集群上,该驱动程序drive由yarn上的applicationMaster管理, 任务提交到集群之后,client结束.—>driver在yarn的applicationMaster中, client可以退出
client:驱动程序driver运行在client进程中,client不可以退出.–>driver运行在client进程中,client不可以退出

3.— —master说明

与Spark支持的其他集群管理器不同,在YARN模式下,ResourceManager的地址是从Hadoop配置中获取的。因此,— —master参数是yarn。

4.载入集群的命令

  • 格式

$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster/client [spark options] [your-app options]
注意加粗的地方为application的部署模式,二选一即可:
client意思是客户端模式
cluster意思是集群模式

  • 举例如下

$ ./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以获取状态更新,并在控制台中显示它们。一旦应用程序完成运行,客户端将退出。

5.注意事项

client模式下,dirver驱动程序(也就是sparkContext 入口),在当前机器运行,当前机器可以访问到在此机器上的jar(通过配置), 但是在cluster模式,spark程序入口在yarn集群上的某台机器,该机器是访问不到客户端所在的机器的,所以cluster模式下依赖的jar等文件必须通过参数传递给driver所在的yarn集群上的某台机器.

$ ./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

6.准备工作

在 YARN 上运行 Spark 需要使用 YARN 支持构建的 Spark 二进制分发版。二进制发行版可以从项目网站的下载页面下载。您可以下载两种 Spark 二进制发行版的版本。一种是使用特定版本的 Apache Hadoop 预先构建的;这个 Spark 发行版包含内置的 Hadoop 运行环境,所以我们称之为with-hadoopSpark 发行版。另一个是使用用户提供的 Hadoop 预先构建的;由于这个 Spark 发行版不包含内置的 Hadoop 运行环境,所以它更小,但用户必须单独提供 Hadoop 安装。我们称这种变体为no-hadoopSpark 分布。对于with-hadoopSpark 发行版,因为它已经包含一个内置的 Hadoop 运行时,默认情况下,当一个作业提交到 Hadoop Yarn 集群时,为了防止 jar 冲突,它不会将 Yarn 的类路径填充到 Spark 中。要覆盖此行为,您可以设置spark.yarn.populateHadoopClasspath=true. 对于no-hadoopSpark 发行版,Spark 将默认填充 Yarn 的类路径以获取 Hadoop 运行时。对于with-hadoopSpark 发行版,如果您的应用程序依赖于某些仅在集群中可用的库,您可以尝试通过设置上述属性来填充 Yarn 类路径。如果这样做遇到 jar 冲突问题,则需要将其关闭并将此库包含在应用程序 jar 中。
要从 YARN 端访问 Spark 运行时 jar,您可以指定spark.yarn.archive或spark.yarn.jars。有关详细信息,请参阅Spark 属性。如果既未指定也spark.yarn.archive未spark.yarn.jars指定,Spark 将创建一个包含所有 jar 的 zip 文件$SPARK_HOME/jars并将其上传到分布式缓存。

spark yarn 有很多配置参数,参考spark-yarn-配置

4. 自定义log4j

To use a custom log4j configuration for the application master or executors, here are the options:

  • spark-submmit 通过–files指定logj.properties
  • spark-submmit --conf spark.executor.extraJavaOptions=-Dlog4j.configuration=/tmp/myconfig/log4j.properties
  • 更新$ SPARK_CONF_DIR / log4j。属性文件,它将与其他配置一起自动上传。注意,如果指定了多个选项,其他上面2个选项的优先级比这个选项高。
    注意,对于第一个选项,executors 和应用程序主程序将共享相同的log4j配置,这可能会在它们运行在同一个节点上时导致问题(例如试图写入相同的日志文件。

1.如果您需要在YARN中放置日志文件的正确位置的引用,以便YARN能够正确地显示和聚合日志文件,请在您的log4j.properties中使用spark.yarn.app.container.log.dir。例如,log4j.appender.file_appender.File = $ {spark.yarn.app.container.log.dir} / spark.log。对于流应用,配置RollingFileAppender并将文件位置设置为YARN的日志目录,可以避免因日志文件过大而导致磁盘溢出,并且可以使用YARN的日志实用工具访问日志。
2.To use a custom metrics.properties for the application master and executors,update the $SPARK_CONF_DIR/metrics.properties file. It will automatically be uploaded with other configurations, so you don’t need to specify it manually with --files.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我先森

鼓励一个吧,哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值