第17课Spark Streaming资源动态申请和动态控制消费速率原理剖析
2016-05-31 20:50
330 查看
为什么需要动态?Spark默认情况下粗粒度的,先分配好资源再计算。而Spark Streaming有高峰值和低峰值,但是他们需要的资源是不一样的,如果按照高峰值的角度的话,就会有大量的资源浪费。
Spark Streaming不断的运行,对资源消耗和管理也是我们要考虑的因素。
Spark Streaming资源动态调整的时候会面临挑战:Spark Streaming是按照Batch Duration运行的,Batch Duration需要很多资源,下一次Batch Duration就不需要那么多资源了,调整资源的时候还没调整完Batch Duration运行就已经过期了。这个时候调整时间间隔。
场景:数据量变大,资源很少
数据量变小,资源很多
直接源码入手:Spark Streaming资源动态申请
定时线程以固定频率来不断的扫描Executor,正在运行的Scheduler是要运行在不同的Executor中,需要动态的增加Executor或者减少Executor ,例如判断一个60秒为时间间隔 的Executor一个任务都没有运行,就会把Executor删除掉。怎么会减少Executor,是因为当前应用程序中运行的Executor在Driver中会有数据结构对其保持引用,每次任务调度 的时候都会循环遍历Executor的列表,然后查询列表的可用资源,根据这个类中的时钟会不断循环查看是否满足添加或者删除Executor的条件,如果满足添加或者删除的条件就 触发Executor进行添加与删除。
从Spark Streaming的角度考虑,Spark Streaming要处理的动态资源调整就是Executor的资源动态调整,其最大的挑战是什么? Spark Streaming是按照BachDuration的方式运行的,可能这个BachDuration需要很多资源,下一个又不用那么多资源,当前BachDuration的资源还没有等调整完成其运行已经过期了。 二、动态控制消费速率: Spark Streaming弹性机制,可以查看流进来的数据是如何处理的,处理的速度之间的关系是否能够来得及进行处理,如果来不及进行处理的话,会动态的进行控制数据流进来的速度。 Spark Streaming本身有个rate的控制,这个控制一般可以使用手动的方式进行控制调整他的速度,手动控制是需要对Spark Streaming的处理速度有一种感知,根据BachDuration 流进来的数据进行控制其速度,可以调整BachDuration流入更多的数据或者更少的数据。新浪微博:http://weibo.com/ilovepains微信公众号:DT_SparkYY课堂:每天20:00免费现场授课频道68917580本文转自:http://my.oschina.net/corleone/blog/685099?fromerr=AWwub0hV
Spark Streaming不断的运行,对资源消耗和管理也是我们要考虑的因素。
Spark Streaming资源动态调整的时候会面临挑战:Spark Streaming是按照Batch Duration运行的,Batch Duration需要很多资源,下一次Batch Duration就不需要那么多资源了,调整资源的时候还没调整完Batch Duration运行就已经过期了。这个时候调整时间间隔。
场景:数据量变大,资源很少
数据量变小,资源很多
直接源码入手:Spark Streaming资源动态申请
定时线程以固定频率来不断的扫描Executor,正在运行的Scheduler是要运行在不同的Executor中,需要动态的增加Executor或者减少Executor ,例如判断一个60秒为时间间隔 的Executor一个任务都没有运行,就会把Executor删除掉。怎么会减少Executor,是因为当前应用程序中运行的Executor在Driver中会有数据结构对其保持引用,每次任务调度 的时候都会循环遍历Executor的列表,然后查询列表的可用资源,根据这个类中的时钟会不断循环查看是否满足添加或者删除Executor的条件,如果满足添加或者删除的条件就 触发Executor进行添加与删除。
从Spark Streaming的角度考虑,Spark Streaming要处理的动态资源调整就是Executor的资源动态调整,其最大的挑战是什么? Spark Streaming是按照BachDuration的方式运行的,可能这个BachDuration需要很多资源,下一个又不用那么多资源,当前BachDuration的资源还没有等调整完成其运行已经过期了。 二、动态控制消费速率: Spark Streaming弹性机制,可以查看流进来的数据是如何处理的,处理的速度之间的关系是否能够来得及进行处理,如果来不及进行处理的话,会动态的进行控制数据流进来的速度。 Spark Streaming本身有个rate的控制,这个控制一般可以使用手动的方式进行控制调整他的速度,手动控制是需要对Spark Streaming的处理速度有一种感知,根据BachDuration 流进来的数据进行控制其速度,可以调整BachDuration流入更多的数据或者更少的数据。新浪微博:http://weibo.com/ilovepains微信公众号:DT_SparkYY课堂:每天20:00免费现场授课频道68917580本文转自:http://my.oschina.net/corleone/blog/685099?fromerr=AWwub0hV
相关文章推荐
- 动态规划总结
- osgAnimation之动画基础篇
- 阿里中间件招聘
- HUD 2444 The Accomodation of Students (二分图染色+最大匹配)
- 图片圆角弧度
- requests模拟登录
- 将一个整数拆分使其乘积最大
- ubuntu 下关闭apache服务自动启动
- 将数据转换为caffe可用的lmdb格式(convert_data_lmdb.sh 解析)
- C#之三十七 实体类
- BZOJ 2818: Gcd区间内最大公约数 为素数的对数(欧拉函数的应用)
- jQuery.param自动将键值对转换为请求传递的参数
- C#之三十七 实体类
- C#之三十七 实体类
- iOS开发UI篇—transframe属性(形变)
- 让程序可以在断开ssh连接后接着运行 screen
- quick-cocos 3.5 lua banding c++
- Windows中命令行收集
- TCP 客户端 服务端详细代码
- 五月英语-新的开始