java spark yarn_《Spark官方文档》在YARN上运行Spark
原文链接
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日志工具访问。
配置项
名称
默认值
说明
spark.yarn.am.memory
512m
在终端模式下YARN应用Master使用的内存总量,和JVM配置的格式一样(如,512m、2g)在集群模式下,用spark.driver.memory设定
spark.driver.cores
1
在YARN集群模式下,驱动器使用的内核数。集群模式下,驱动器与YARN应用Master运行在同一个JVM中,所以这个参数还限定了应用Master使用的内核数。在终端摩梭下,用spark.yarn.am.cores设定应用Master使用的内核数
spark.yarn.am.cores
1
在终端模式下,YARN应用Master使用的内核数
spark.yarn.am.waitTime
100s
在YARN集群模式下,代表应用Master等待SparkContxt进行初始化的时间。在YARN终端模式下,代表应用Master等待驱动器连接的时间
spark.yarn.submit.file.replication
HDFS 默认副本数(一般是3)
应用上次文件到HDFS时使用的HDFS复制数量。包括Spark jar、应用Jar,或者其他任意分布式缓存文件或归档。
spark.yarn.preserve.staging.files
false
如果设置为true,在任务结束时保留中文件,Spark Jar,App Jar,分布式缓存文件等。
spark.yarn.scheduler.heartbeat.interval-ms
3000
Spark 应用Master与YARN资源管理器保持心跳的周期,单位为毫秒(ms)。上限是YARN失效周期(yarn.am.liveness-monitor.expiry-interval-ms)的一半
spark.yarn.scheduler.initial-allocation.interval
200ms
当有未处理的容器分配请求时,Spark应用master与YARN资源管理器间的心跳周期。不能大于spark.yarn.scheduler.heartbeat.interval-ms。如果未处理的容器分配请求持续存在,这个周期将会加倍,一直达到spark.yarn.scheduler.heartbeat.interval-ms。
spark.yarn.max.executor.failures
numExecutors * 2,至少3
当失败的执行器数大于spark.yarn.max.executor.failures,应用将被标记为失败
spark.yarn.historyServer.address
Spark 历史服务器地址(例如, host.com:18080),不需要包好http://。默认为空,历史服务器是可选的。当应用结束时,Spark资源管理器将应用的连接从资源管理器UI转换到Spark历史服务器UI。这个参数是可变的,可以在Spark运行期间调整。例如,如果历史服务器和YARN管理器运行在一个节点上,可以设置为`${hadoopconf-yarn.resourcemanager.hostname}:18080`.
spark.yarn.dist.archives
逗号分隔的列表,用于存放从执行器工作目录提取的归档文件
java spark yarn_《Spark官方文档》在YARN上运行Spark相关推荐
- Spark利用(idea+maven+scala)创建wordcount打包jar并在spark on yarn上运行——Spark的开发
今天的你不付昨天的辛苦,今天的辛苦定会拥抱明日的幸福, 每一次的成长,都要给自己以鼓励,每一次的突破,都给自己以信心,万花丛中我不是最美,但我有我的自信 ------------送给一直努力的你 今天 ...
- spark官方文档_这些未在 Spark SQL 文档中说明的优化措施,你知道吗?
本文来自上周(2020-11-17至2020-11-19)举办的 Data + AI Summit 2020 (原 Spark+AI Summit),主题为<Spark SQL Beyond O ...
- Spark官方文档——本地编写并运行scala程序
快速开始 本文将介绍如何用scala.java.python编写一个spark单击模式的程序. 首先你只需要在一台机器上成功建造Spark:做法: 进入Spark的根目录,输入命令:$ sbt/sbt ...
- linkerd mysql_《Linkerd官方文档》在本地运行Linkerd
本地运行 本指南将引导您完成本地下载和运行Linkerd所需的步骤. 为了在本地运行Linkerd,您必须安装Java 8.您可以运行以下命令来检查您的Java版本: $ java -version ...
- kal8linux密码,KAL1 LINUX 官方文档之arm上的ka1i---树莓派全盘加密
以下文档尚不可用.在以下链接中关注状态:https://gitlab.com/ka1ilinux/documentation/ka1i-docs/issues/49 译者注:以下文章有操作有问题,因此 ...
- spark之4:基础指南(源自官方文档)
spark之4:基础指南(源自官方文档) @(SPARK)[spark, 大数据] spark之4基础指南源自官方文档 一简介 二接入Spark 三初始化Spark 一使用Shell 四弹性分布式数据 ...
- 【甘道夫】Spark1.3.0 Running Spark on YARN 官方文档精华摘要
引言 由于工作需要,即将拥抱Spark,曾经进行过相关知识的学习,现在计划详细读一遍最新版本Spark1.3的部分官方文档,一是复习,二是了解最新进展,三是为公司团队培训做储备. 欢迎转载,请注明出处 ...
- hadoop官方文档_hadoop体系简介
hadoop核心 Apache Hadoop 项目有两个核心组件,被称为 Hadoop 分布式文件系统 (Hadoop Distributed File System, HDFS) 的文件存储,以及被 ...
- 《Log4j 2 官方文档》多余性(Additivity)
如果我们希望输出com.foo.Bar的TRACE等级的日志,而不像影响其他日志的输出.简单的改变日志等级是不能达到我们想要的目的:但是修改也很简单,只要我们添加一个新的Logger定义就可以达到目标 ...
最新文章
- Linux服务器上监控网络带宽的18个常用命令
- 173. Binary Search Tree Iterator
- 安装Pod时提示ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod...
- 文巾解题 1035. 不相交的线
- 80端口攻击_内网端口转发工具的使用总结
- 发生TM锁争用的情况
- pythontab_PythonTab 中文网简介
- SpringBoot项目防止Sql注入
- 高数——八种求极限方法总结
- 基于Dlib库构建人脸识别数据集
- 国庆头像生成器小程序源码
- Docker可视化工具——Portainer全解
- Oracle的 IT 世界观
- 微软Visio流程图软件,Visio流程图制作工具下载安装教程(1)
- 职称有哪些意义?如何提升职称?
- Unity中的矩阵含义
- 小米手环NFC 模拟门禁卡 不买东西最简解决方案(100字)
- Java 如何查询当前项目Spring和SpringBoot的版本号
- LSTM的数据集准备
- 【数据结构】图的基本操作
热门文章
- 【三】Jmeter:测试片段
- linux generic什么意思_Linux下ps aux中进程状态为Ss,S+, Rs,Ds是什么意思?
- ios浏览器居然不支持yyyy-MM-dd HH:mm:ss格式
- Vue中如何实现代码高亮功能?
- SpringBoot maven项目如何打包进行发布?
- 普联技术java工程师_【普联技术(TP-LINK)工资】java开发工程师待遇-看准网
- 程序员合同日期不到想辞职_辞职报告怎么写最简单?写清楚理由和时间,签上姓名就OK了...
- 计算机博士一年看多少篇文献,博士生真的要一天看20篇文献吗?
- mysql sakila world_MySQL 安装示例数据库(employee、world、sakila、menagerie 等)
- poj3233(矩阵快速幂的和)