Spark streaming动态调整资源调研报告

一、需求背景:

我们希望spark streaming根据不同时间段的数据量不同(例如高峰期和低谷期),自动调整spark的计算资源(包含CPU和memory大小)。从而,可以在高峰期自动增加计算资源以提升处理能力,在数据量低谷时候自动缩减所需资源量,减少资源浪费。

二、 调研情况:

2.1 spark on mesos的资源伸缩原理

spark 1.5开始为standalone模式和mesos的粗粒度模式提供了executor的动态管理,具体表现为:如果executor在一段时间内空闲就会移除这个executor。

动态申请executor
如果有新任务处于等待状态,并且等待时间超过Spark.dynamicAllocation.schedulerBacklogTimeout(默认1s),则会依次启动executor,每次启动1,2,4,8…个executor(如果有的话)。启动的间隔由spark.dynamicAllocation.sustainedSchedulerBacklogTimeout控制(默认与schedulerBacklogTimeout相同)。
动态移除executor
executor空闲时间超过spark.dynamicAllocation.executorIdleTimeout设置的值(默认60s ),该executor会被移除,除非有缓存数据。
(参考资料:http://blog.chinaunix.net/uid-29038263-id-5765593.html)

(参考文献:https://www.cnblogs.com/zlslch/p/6945177.html?utm_source=itdadao&utm_medium=referral)

2.2 配置项修改操作

开启Spark动态资源分配的两个必要条件:
(1)代码中要有两个属性

.config("spark.dynamicAllocation.enabled", "true")
.config("spark.shuffle.service.enabled", "true")

(2)Spark的Worker要有如下配置:
打开worker的$SPARK_HOME/conf/spark-defaults.conf
添加:

spark.shuffle.service.enabled true

1启动Spark集群(StandAlone模式)
调用spark job,当任务执行完成后,等待60s,你会发现任务申请的资源(Executor)都自动释放了!

PS:一些有用的参数:

spark.dynamicAllocation.executorIdleTimeout 默认60s,如果executor超过这个时间未执行任务,则自动释放资源
spark.dynamicAllocation.initialExecutors    spark.dynamicAllocation.minExecutors 默认0,JOB申请的executor最小个数,默认是0个
spark.dynamicAllocation.maxExecutors 默认infinite,JOB申请的executor最大个数,默认是无限个
spark.dynamicAllocation.minExecutors 默认等于最小个数

【参考文献:https://blog.csdn.net/gx304419380/article/details/79402113】

三、实操技术路线

3.1当前状态

当前,spark的版本为:spark:2.4.0-2.2.1-3-hadoop-2.6 ,spark运行依赖于mesos作为资源调度框架;
因此,如果改为弹性资源伸缩的方式,只需要修改相应的配置即可。

3.2 技术路线

需要在集群上模拟测试。
第一步
在业务的detect-trialproduction.json配置文件中,或者jenkins中修改相应的配置参数,重新将业务程序1的spark streaming模拟测试程序运行;
具体改变参数,在json中添加

"env": {  "default.parallelism": "50",  "dynamicAllocation.enabled": "true", "shuffle.service.enabled": "true", "dynamicAllocation.executorIdleTimeout": "60", "dynamicAllocation.initialExecutors": "1", "dynamicAllocation.maxExecutors": "6","dynamicAllocation.minExecutors": "1","dynamicAllocation.schedulerBacklogTimeout": "120",
}

附件1 常见参数列表

参考资料:http://blog.chinaunix.net/uid-29038263-id-5765593.html

注意事项】:关于参数设置
关于spark程序动态资源分配的一些理解
https://blog.csdn.net/xiao_jun_0820/article/details/54927159
修改完参数之后,需要将ML部署在dcos上的spark集群中。

第二步:运行之后,查看初始化的executor的数量是否为给定的数量(做好记录);
首先给定小的数据量,保证spark(ML)按时处理完成,查看此时executor数量,待稳定处理一段时间之后(期间做好executor数量记录),增加spark的数据量用来模拟高峰期的数据(通过增加给kafka实时发送的数据量),此时查看executor的数量,并做好记录。

第三步:减少spark摄入的kafka实时数据量,查看executor的数量是否相应的缩小。验证资源在小数据量时候的弹性缩容情况;

总结:通过最终的报告情况,验证spark steaming的弹性资源调整情况;

Spark streaming动态调整资源-调研报告相关推荐

  1. 全球及中国重型设备备件行业发展动态及未来趋势调研报告2021年版

    2020年,全球重型设备备件市场规模达到了 百万美元,预计2027年将达到 百万美元,年复合增长率(CAGR)为 % (2021-2027).中国市场规模增长快速,预计将由2020年的 百万美元增长到 ...

  2. 第15课:Spark Streaming源码解读之No Receivers彻底思考

    通常我们使用kafka direct的方式使用的是没有自定offset的构造函数 val kc = new KafkaCluster(kafkaParams) 完完全全就是kafka的操作了 我们看看 ...

  3. 用 Flink 取代 Spark Streaming,知乎实时数仓架构演进【推荐】

    "数据智能" (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务.从智能商业的角 ...

  4. 用Flink取代Spark Streaming!知乎实时数仓架构演进

    作者 | 知乎数据工程团队 "数据智能" (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的 ...

  5. 用Flink取代Spark Streaming,知乎实时数仓架构演进

    "数据智能" (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务.从智能商业的角 ...

  6. 中国冶金工业节能减排行业十四五投资动态与运营方向调研报告2022-2027年

    中国冶金工业节能减排行业十四五投资动态与运营方向调研报告2022-2027年 ··························· <修订日期>:2022年1月 <专员对接> ...

  7. 中国文化地产行业运行动态及未来市场可行性调研报告2021年版

    中国文化地产行业运行动态及未来市场可行性调研报告2021年版 详情内容请咨询鸿晟信合研究院! [全新修订]:2022年2月 [撰写单位]:鸿晟信合研究研究 第1章:文化地产行业基本概述1.1 文化地产 ...

  8. 全球及中国血液透析行业发展规模与前景动态调研报告2022版

    全球及中国血液透析行业发展规模与前景动态调研报告2022版 -------------------------------------  <出版单位>:鸿晟信合研究院[专员客服对接] &l ...

  9. 全球及中国甲醇催化剂行业前景动态与市场需求调研报告2022版

    全球及中国甲醇催化剂行业前景动态与市场需求调研报告2022版 --------------------------------------- <修订日期>:2021年12月 <报告价 ...

最新文章

  1. MATLAB 练习题 金币
  2. 使用Maven构建Dubbo服务的可运行jar包
  3. php计算波动率,单向波动率差值研究:单向波动差值实现绝对收益
  4. 轻量级ORM框架Dapper应用四:使用Dapper返回多个结果集
  5. 多线程与高并发(六):线程池可用的各种高并发容器详解:CopyOnWriteList,BlockingQueue等
  6. [20131014] 出现错误,显示事务没有回滚
  7. Spring学习笔记--自动装配Bean属性
  8. SpringMVC(2)—SpringMVC整合Spring的HelloWorld
  9. 【转】前端的BFC、IFC、GFC和FFC
  10. python中的 DFS 与 BFS
  11. 【持久化框架】SpringMVC+Spring4+Mybatis3 集成,开发简单Web项目+源码下载
  12. 使用 CSS 模拟鼠标点击交互
  13. PPT:Semi-supervised Classification with Graph Convolutional Networks
  14. 2021湖南高考成绩分段查询,2021年湖南高考成绩排名查询系统,湖南高考位次排名查询...
  15. Js~Boxy中的复杂弹出框
  16. ViewGroup详解
  17. office之自定义尾注样式:中括号的应用
  18. android dbm模式判断,手机信号强弱判断即【dBm/asu】知识普及
  19. CST2019电磁工作室的简单使用
  20. 惠普1000-1408TX拆机换硅脂,清灰

热门文章

  1. html表单的基本结构
  2. 上传下载永不限速之文叔叔
  3. 服务器主体信息截图,puppeteer实现线上服务器任意区域截图
  4. oracle 删除定时任务 、查询定时任务、暂停定时任务、创建定时任务
  5. 评价类模型——层次分析法
  6. 安全集成服务资质是什么都有哪些等级?申请安全集成服务资质认证有什么好处?
  7. 网络技术摘抄(入门需知)
  8. 加餐0 | 前后端快速入门学习路线
  9. C# WinForms窗体淡出效果
  10. 【笔记】在 Windows 中制作 Ubuntu 系统的USB启动盘