Spark Streaming资源动态申请和动态控制消费速率剖析

本期内容 :

  • Spark Streaming资源动态分配
  • Spark Streaming动态控制消费速率

 

  为什么需要动态处理 :

    Spark 属于粗粒度资源分配,也就是在默认情况下是先分配好资源然后再进行计算,粗粒度有个好处,因为资源是提前给你分配好,当有计算任务的时候直接使用就可以了,

  粗粒度不好的方面就是从Spark  Streaming角度讲有高峰值、低峰值,在高与低峰值时候需要的资源是不一样的,如果资源分配按照高峰值考虑的话,在低峰值就是对资源的浪费,

  随着Spark Streaming程序本身不断的运行对资源的消耗与管理也是需要考虑的因素。

 

一、 Spark Streaming资源动态分配  :

  动态资源分配源码 :

    

  在SparkConf中进行Set其配置 

    

     

     

  

    以定时器的频率来不断的扫描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流入更多的数据或者更少的数据。

 

转载于:https://www.cnblogs.com/yinpin2011/p/5540147.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值