zl程序教程

您现在的位置是:首页 >  其他

当前栏目

《Spark官方文档》在YARN上运行Spark

文档官方Spark 运行 yarn
2023-09-11 14:16:09 时间

Spark在 0.6.0版本后支持在YARN(hadoop NextGen)上运行,并且在后续版本中不断改进。

在YARN上启动Spark

首先,确认 HADOOP_CONF_DIR或YARN_CONF_DIR指向的包含了Hadoop集群的配置文件。这些配置用于操作HDFS和连接YARN资源管理器。在这个目录下的这些配置文件将被分发到YARN集群中,因此应用所使用的容器能够使用相同的配置。如果配置中的java系统参数或环境变量没有被YARN所管理,就必须设置在Spark应用的配置中(驱动、执行器、和运行在客户端模式下的应用Master)

有两种模式能够在YARN下启动Spark应用,YARN集群模式和YARN客户端模式。在Yarn集群方式,Spark驱动运行在,YARN管理的运行在集群上的应用主进程中,客户端程序在应用初始化后就结。在YARN何况模式下,驱动运行在客户端进程中,应用主进程只能使用在YARN中请求的资源。
不同于standalone和Mesos模式中通过 –master 参数指定master 地址。在YARN模式中,资源管理器地址在HADOOP配置中获取。所以, –master参数可选yarn-client或yarn-cluster。

下面的命令能够在YARN cluster下运行SPARK 应用:

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

例如:

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \

 --master yarn-cluster \

 --num-executors 3 \

 --driver-memory 4g \

 --executor-memory 2g \

 --executor-cores 1 \

 --queue thequeue \

 lib/spark-examples*.jar \

 10

上面的命令启动了一个YARN端程序,调用默认的应用Master,SparkPi作为Master的子线程运行。客户端定期连向应用Master更新并在console中显示状态。当应用结束后客户端进程也会退出。在后面的“调试应用”小节,将介绍如何查看驱动器和执行器的日志。
同样可以在YARN客户端模式下运行Spark应用,只需要将“yarn-cluster”换成“yarn-client”

$ ./bin/spark-shell --master yarn-client

添加其他JAR包

在yarn-culster模式下,驱动器和客户端在不同的集群上运行,所以在保存在客户端上文件不能通过SparkContext.addJar加入到运行沙盒中。为了让SparkContext.addJar能够使用客户端上的这些文件,需要把他们通过–jar选项加入到启动命令中。

$ ./bin/spark-submit --class my.main.Class \

 --master yarn-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上的大部分配置项和其他部署模式相同,可以在后面配置项一节获得更多关于此的信息,这些配置仅用于在YARN上运行Spark。

用YARN术语来说,执行器、应用Master都在容器(container)内运行。在应用结束后YARN会采用2种方式处理容器日志。如果开启了日志归集(yarn.log-aggregation-enable),日志将被拷到HDFS上,本地文件将被删除。这些日志可以通过’yarn logs’命令在集群的任何节点查看。

yarn logs -applicationId 

上面的命令会打印出应用所有容器的日志文件内容。当然也可以直接在hdfs查看容器日志。存入日志的目录通过yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-dir-suffix配置。同样,也可以在Spark web UI的执行器Tab页下查看相关日志。前提是需要在 yarn-site.xml中配置 yarn.log.server.url,并保证Spark历史服务器和MapReduce历史服务器正常运行。Spark历史服务器UI上的log连接会重定向到MapReduce历史服务器来显示归集的日志。

如果没有开启日志归集,日志会保存在各个机器的YARN_APP_LOGS_DIR下,根据Hadoop版本或安装的不同一般是/tmp/logs 或 $HADOOP_HOME/logs/userlogs。需要登录到各台机器上去查看日志,这些日志会按应用id和容器id的结构来分子目录保存。同样可以通过Spark Web Ui来查看日志,而不需要MapReduce历史服务器。

通过增加yarn.nodemanager.delete.debug-delay-sec,如36000,可以在容器启动的各个节点yarn.nodemanager.local-dirs目录保留的应用缓存中查看每个容器的启动环境。这个目录下保存了启动脚本、Jar包、启动是的环境变量等信息。这对调试,特别是Classpath问题很有用。注,这些设置需要集群管理员权限,并且要重启所有的节点管理器,所以在托管集群上很难完成。

有几种可选方式给应用Master和执行器配置定制化的log4j配置:

1.通过在上传应用的时候(spark-submit),在-file里增加log4j.properties文件 2.在执行器的spark.driver.extraJavaOptions,或在驱动器的spark.executor.extraJavaOptions 选项,增加-Dlog4j.configuration=;。注,如果使用文件,需要明确指定,并且需要在所有节点存在。 3. 更新$SPARK_CONF_DIR/log4j.properties文件,此配置会和其他配置一起自动上传。注:如果指定了多个选项,另外2个选项的优先级高于本配置。

如果采用第一个方式,需要注意的是,执行器和应用Master使用同一个log4j配置,当他们跑在同一个节点的时候会有问题(如,尝试写同一个日志文件)。

如果需要在YARN上显示、汇聚日志,需要通过在log4j.properties用spark.yarn.app.container.log.dir配置相对路径。例如,log4j.appender.file_appender.File=${spark.yarn.app.container.log.dir}/spark.log
对于streaming应用,配置configuring RollingFileAppender并把路径设置到YARN目录里,可以避免由于日志过大而硬盘空间不够的问题。同时这些log还可以用YARN日志工具访问。

在YANR上,大部分的配置和其他部署方式相同。可以参考http://spark.apache.org/docs/latest/configuration.html
但是下列是在YARN环境特有的配置项


在终端模式下YARN应用Master使用的内存总量,和JVM配置的格式一样(如,512m、2g)在集群模式下,用spark.driver.memory设定
在YARN集群模式下,驱动器使用的内核数。集群模式下,驱动器与YARN应用Master运行在同一个JVM中,所以这个参数还限定了应用Master使用的内核数。在终端摩梭下,用spark.yarn.am.cores设定应用Master使用的内核数
在YARN集群模式下,代表应用Master等待SparkContxt进行初始化的时间。在YARN终端模式下,代表应用Master等待驱动器连接的时间
HDFS 默认副本数(一般是3) 应用上次文件到HDFS时使用的HDFS复制数量。包括Spark jar、应用Jar,或者其他任意分布式缓存文件或归档。
Spark 应用Master与YARN资源管理器保持心跳的周期,单位为毫秒(ms)。上限是YARN失效周期(yarn.am.liveness-monitor.expiry-interval-ms)的一半
200ms 当有未处理的容器分配请求时,Spark应用master与YARN资源管理器间的心跳周期。不能大于spark.yarn.scheduler.heartbeat.interval-ms。如果未处理的容器分配请求持续存在,这个周期将会加倍,一直达到spark.yarn.scheduler.heartbeat.interval-ms。
numExecutors * 2,至少3 当失败的执行器数大于spark.yarn.max.executor.failures,应用将被标记为失败
Spark 历史服务器地址(例如, host.com:18080),不需要包好http://。默认为空,历史服务器是可选的。当应用结束时,Spark资源管理器将应用的连接从资源管理器UI转换到Spark历史服务器UI。这个参数是可变的,可以在Spark运行期间调整。例如,如果历史服务器和YARN管理器运行在一个节点上,可以设置为`${hadoopconf-yarn.resourcemanager.hostname}:18080`.
在idea里面怎么远程提交spark任务到yarn集群 很久没有更新了,因为最近一段时间有点小忙,最近也是有同学问我说自己在idea里面写spark程序测试,每次都要打包然后上传到集群,然后spark-submit提交很麻烦,可不可以在idea里面直接远程提交到yarn集群呢? 当然是可以的,今天就给大家分享一下具体的操作过程. 那先来说一下spark任务运行的几种模式: 1,本地模式,在idea里面写完代码直接运行.
spark on yarn模式安装和配置carbondata 前置条件 Hadoop HDFS 和 Yarn 需要安装和运行。 Spark 需要在所有的集群节点上安装并且运行。 CarbonData 用户需要有权限访问 HDFS. 以下步骤仅针对于 Driver 程序所在的节点. (Driver 节点就是启动 SparkContext 的节点)
11月14日Spark社区直播【 Spark on Kubernetes & YARN】 本次直播将讨论:以Kubernetes为代表的云原生技术越来越流行起来,spark是如何跑在Kubernetes之上来享受云原生技术的红利?Spark跑在Kubernetes之上和跑在Hadoop YARN上又有什么区别?以及Kubernetes 和YARN的差异点是什么。
基于Yarn API的Spark程序监控 一.简述 通过对Yarn ResourceManager中运行程序的状态(RUNNING、KILLED、FAILED、FINISHED)以及ApplicationMaster中Application的Job执行时长超过批次时间的监控,来达到对Spark on Yarn程序的失败重启、超时重启等功能
Hadoop大数据平台实战(05):深入Spark Cluster集群模式YARN vs Mesos vs Standalone vs K8s Hadoop大数据平台实战(05):Spark Cluster集群模式YARN, Mesos,Standalone和K8s深入对比。监控,调度,监控,安全机制,特性对比,哪个才是最好的Spark集群管理工具。
大数据分布式架构单点故障详解(Hdfs+Yarn+HBase+Spark+Storm)构建HA高可用架构 本文梳理了常见的hadoop生态圈中的组件:Hdfs+Yarn+HBase+Spark+Storm的单点故障问题,出现原因以及单点故障的原理和解决方案(构建HA(High Available)高可用架构)。阅读本文之前,最好了解清楚各组件的架构原理。