一、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 动态资源配置相关推荐

  1. Spark On K8S与Spark On YARN方案相比之劣势

    目前,存算分离的方案相对已经比较成熟,容器化方案还处于探索和小规模应用阶段,以 Spark 为例,方案大体上分为 2 种: 一种是 Spark Standalone,该方案仅对大数据系统做容器化部署改 ...

  2. spark on yarn 完全分布式_Apache Spark探秘:三种分布式部署方式比较

    [本文详细介绍了Spark的三种部署方式及其比较,欢迎读者朋友们阅读.转发和收藏!] 目前Apache Spark支持三种分布式部署方式,分别是 standalone . spark on mesos ...

  3. kerberos体系下的应用(yarn,spark on yarn)

    kerberos 介绍 阅读本文之前建议先预读下面这篇博客 kerberos认证原理---讲的非常细致,易懂 Kerberos实际上一个基于Ticket的认证方式.Client想要获取Server端的 ...

  4. spark视频-Spark on Yarn

    第十期Spark亚太研究院决胜大数据时代公益大讲坛:Spark on Yarn,视频地址:http://pan.baidu.com/share/link?shareid=3629554384& ...

  5. Spark优化-开启动态资源分配

    文章目录 Spark-开启动态资源分配 1:为什么要开启动态资源分配 2 如何在cloudera(CDH)平台开启动态资源分配 第⼀步:确认spark-defaults.conf中添加了如下配置: 第 ...

  6. spark on yarn启用动态分配

    spark on yarn 支持资源的动态分配.           资源请求策略:     一个spark程序使用轮询来请求资源.具体过程如下: 1.如果程序中有任务在等待,超过spark.dyna ...

  7. 2021年大数据Spark(九):Spark On Yarn两种模式总结

    目录 Spark On Yarn两种模式 引入 一.当一个MR应用提交运行到Hadoop YARN上时 二.当一个Spark应用提交运行在集群上时 注意 client 模式 cluster 模式 总结 ...

  8. Apache Spark源码走读之8 -- Spark on Yarn

    欢迎转载,转载请注明出处,徽沪一郎. 概要 Hadoop2中的Yarn是一个分布式计算资源的管理平台,由于其有极好的模型抽象,非常有可能成为分布式计算资源管理的事实标准.其主要职责将是分布式计算集群的 ...

  9. spark on yarn 完全分布式_Spark编程笔记(1)-架构基础与运行原理

    引言 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一 次重大变革 .当前我们正处于第三次信息浪潮(2010年前后),物联网.云计算和大数据技术突飞猛进. 信息爆炸是我们当前所需要解决 ...

最新文章

  1. Switch入门第一讲
  2. Unreachable code
  3. C++False position求根的实现算法(附完整源码)
  4. 将VMware Workstation 12 Pro的虚拟网卡修改为自己希望的IP网段
  5. 王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)
  6. OpenCV中绘制外围矩形框和圆框
  7. 古根海姆CIO Scott Minerd:加密货币为 “郁金香狂热“
  8. 阿里的技术绝境与飞天之路
  9. 自然语言理解发展历程
  10. Python实现云词图效果
  11. OGG故障集锦(一)
  12. MOS管当开关控制时,为什么一般用PMOS做上管NMOS做下管?
  13. 天猫双十一自动刷喵币
  14. 纸短情长用计算机破出来的数字,纸短情长简谱数字大全 一看就会的简谱
  15. 【PAT甲级】1142 Maximal Clique
  16. 3 个节省时间的 Python 技巧!
  17. 计算机维修志愿活动策划书,家电义务维修志愿者活动项目策划书.docx
  18. Java毕设项目电力公司员工安全培训系统计算机(附源码+系统+数据库+LW)
  19. (Halcon应用系列)Halcon+C#联合编程
  20. Ngnix 之父突然离职,程序员巅峰一代落幕

热门文章

  1. (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结
  2. python基础7--socket
  3. 项目需求:基于微信平台的拼团活动系统
  4. Linux Buffers和Cached的区别(转)
  5. [置顶]c# 设计模式(2)结构型
  6. 自动驾驶算法-滤波器系列(三)——不同运动模型(CV、CA、CTRV、CTRA)的建模和推导
  7. LabView学习笔记(十):条件结构
  8. java反射获取注解id,通过反射获取注解(Annotation)
  9. 正弦函数_傅里叶为什么会想到把函数展开为正弦波
  10. linux根据端口号找目录,Linux通过程序端口寻找程序路径