Spark on yarn 动态资源配置
一、YARN的配置
首先需要对YARN进行配置,使其支持Spark的Shuffle Service。
修改每台集群上的yarn-site.xml
:
- 修改
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle,spark_shuffle</value>
</property>
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
- 增加
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
<property>
<name>spark.shuffle.service.port</name>
<value>7337</value>
</property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
将$SPARK_HOME/lib/spark-1.5.2-yarn-shuffle.jar
拷贝到每台NodeManager的${HADOOP_HOME}/share/Hadoop/yarn/lib/
下。
重启所有修改配置的节点。
二、Spark的配置
配置$SPARK_HOME/conf/spark-defaults.conf
,增加以下参数:
spark.shuffle.service.enabled true //启用External shuffle Service服务
spark.shuffle.service.port 7337 //Shuffle Service默认服务端口,必须和yarn-site中的一致
spark.dynamicAllocation.enabled true //开启动态资源分配
spark.dynamicAllocation.minExecutors 1 //每个Application最小分配的executor数
spark.dynamicAllocation.maxExecutors 30 //每个Application最大并发分配的executor数
spark.dynamicAllocation.schedulerBacklogTimeout 1s
spark.dynamicAllocation.sustainedSchedulerBacklogTimeout 5s
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
动态资源分配策略:
开启动态分配策略后,application会在task因没有足够资源被挂起的时候去动态申请资源,这种情况意味着该application现有的executor无法满足所有task并行运行。spark一轮一轮的申请资源,当有task挂起或等待spark.dynamicAllocation.schedulerBacklogTimeout
(默认1s)`时间的时候,会开始动态资源分配;之后会每隔spark.dynamicAllocation.sustainedSchedulerBacklogTimeout(默认1s)时间申请一次,直到申请到足够的资源。每次申请的资源量是指数增长的,即1,2,4,8等。
之所以采用指数增长,出于两方面考虑:其一,开始申请的少是考虑到可能application会马上得到满足;其次要成倍增加,是为了防止application需要很多资源,而该方式可以在很少次数的申请之后得到满足。
资源回收策略:
当application的executor空闲时间超过spark.dynamicAllocation.executorIdleTimeout(默认60s)
后,就会被回收。
使用spark-sql On Yarn执行SQL,动态分配资源
以yarn-client模式启动ThriftServer
cd $SPARK_HOME/sbin/
./start-thriftserver.sh \
--master yarn-client \
--conf spark.driver.memory=10G \
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.dynamicAllocation.minExecutors=1 \
--conf spark.dynamicAllocation.maxExecutors=300 \
--conf spark.dynamicAllocation.sustainedSchedulerBacklogTimeout=5s
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
启动后,ThriftServer会在Yarn上作为一个长服务来运行:
Spark on yarn 动态资源配置相关推荐
- Spark On K8S与Spark On YARN方案相比之劣势
目前,存算分离的方案相对已经比较成熟,容器化方案还处于探索和小规模应用阶段,以 Spark 为例,方案大体上分为 2 种: 一种是 Spark Standalone,该方案仅对大数据系统做容器化部署改 ...
- spark on yarn 完全分布式_Apache Spark探秘:三种分布式部署方式比较
[本文详细介绍了Spark的三种部署方式及其比较,欢迎读者朋友们阅读.转发和收藏!] 目前Apache Spark支持三种分布式部署方式,分别是 standalone . spark on mesos ...
- kerberos体系下的应用(yarn,spark on yarn)
kerberos 介绍 阅读本文之前建议先预读下面这篇博客 kerberos认证原理---讲的非常细致,易懂 Kerberos实际上一个基于Ticket的认证方式.Client想要获取Server端的 ...
- spark视频-Spark on Yarn
第十期Spark亚太研究院决胜大数据时代公益大讲坛:Spark on Yarn,视频地址:http://pan.baidu.com/share/link?shareid=3629554384& ...
- Spark优化-开启动态资源分配
文章目录 Spark-开启动态资源分配 1:为什么要开启动态资源分配 2 如何在cloudera(CDH)平台开启动态资源分配 第⼀步:确认spark-defaults.conf中添加了如下配置: 第 ...
- spark on yarn启用动态分配
spark on yarn 支持资源的动态分配. 资源请求策略: 一个spark程序使用轮询来请求资源.具体过程如下: 1.如果程序中有任务在等待,超过spark.dyna ...
- 2021年大数据Spark(九):Spark On Yarn两种模式总结
目录 Spark On Yarn两种模式 引入 一.当一个MR应用提交运行到Hadoop YARN上时 二.当一个Spark应用提交运行在集群上时 注意 client 模式 cluster 模式 总结 ...
- Apache Spark源码走读之8 -- Spark on Yarn
欢迎转载,转载请注明出处,徽沪一郎. 概要 Hadoop2中的Yarn是一个分布式计算资源的管理平台,由于其有极好的模型抽象,非常有可能成为分布式计算资源管理的事实标准.其主要职责将是分布式计算集群的 ...
- spark on yarn 完全分布式_Spark编程笔记(1)-架构基础与运行原理
引言 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一 次重大变革 .当前我们正处于第三次信息浪潮(2010年前后),物联网.云计算和大数据技术突飞猛进. 信息爆炸是我们当前所需要解决 ...
最新文章
- Switch入门第一讲
- Unreachable code
- C++False position求根的实现算法(附完整源码)
- 将VMware Workstation 12 Pro的虚拟网卡修改为自己希望的IP网段
- 王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)
- OpenCV中绘制外围矩形框和圆框
- 古根海姆CIO Scott Minerd:加密货币为 “郁金香狂热“
- 阿里的技术绝境与飞天之路
- 自然语言理解发展历程
- Python实现云词图效果
- OGG故障集锦(一)
- MOS管当开关控制时,为什么一般用PMOS做上管NMOS做下管?
- 天猫双十一自动刷喵币
- 纸短情长用计算机破出来的数字,纸短情长简谱数字大全 一看就会的简谱
- 【PAT甲级】1142 Maximal Clique
- 3 个节省时间的 Python 技巧!
- 计算机维修志愿活动策划书,家电义务维修志愿者活动项目策划书.docx
- Java毕设项目电力公司员工安全培训系统计算机(附源码+系统+数据库+LW)
- (Halcon应用系列)Halcon+C#联合编程
- Ngnix 之父突然离职,程序员巅峰一代落幕
热门文章
- (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结
- python基础7--socket
- 项目需求:基于微信平台的拼团活动系统
- Linux Buffers和Cached的区别(转)
- [置顶]c# 设计模式(2)结构型
- 自动驾驶算法-滤波器系列(三)——不同运动模型(CV、CA、CTRV、CTRA)的建模和推导
- LabView学习笔记(十):条件结构
- java反射获取注解id,通过反射获取注解(Annotation)
- 正弦函数_傅里叶为什么会想到把函数展开为正弦波
- linux根据端口号找目录,Linux通过程序端口寻找程序路径