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流入更多的数据或者更少的数据。

    备注:
    • 资料来源于:王家林(Spark发行版本定制)
    • 新浪微博:http://www.weibo.com/ilovepains
时间: 05-29

Spark Streaming资源动态申请和动态控制消费速率剖析的相关文章

(版本定制)第17课:Spark Streaming资源动态申请和动态控制消费速率原理剖析

本期内容: 1.Spark Streaming资源动态分配 2.Spark Streaming动态控制消费速率 为什么需要动态? a)Spark默认情况下粗粒度的,先分配好资源再计算.对于Spark Streaming而言有高峰值和低峰值,但是他们需要的资源是不一样的,如果按照高峰值的角度的话,就会有大量的资源浪费. b) Spark Streaming不断的运行,对资源消耗和管理也是我们要考虑的因素. Spark Streaming资源动态调整的时候会面临挑战: Spark Streaming

第17课:Spark Streaming资源动态申请和动态控制消费速率原理剖析

本期内容: Spark Streaming资源动态分配 Spark Streaming动态控制消费速率 为什么需要动态? Spark默认情况下粗粒度的,先分配好资源再计算.而Spark Streaming有高峰值和低峰值,但是他们需要的资源是不一样的,如果按照高峰值的角度的话,就会有大量的资源浪费. Spark Streaming不断的运行,对资源消耗和管理也是我们要考虑的因素. Spark Streaming资源动态调整的时候会面临挑战: Spark Streaming是按照Batch Dur

Spark Streaming发行版笔记17:资源动态分配和动态控制消费速率

本篇从二个方面讲解: 高级特性: 1.Spark Streaming资源动态分配 2.Spark Streaming动态控制消费速率 原理剖析,动态控制消费速率其后面存在一套理论,资源动态分配也有一套理论. 先讲理论,后面讨论. 为什么要动态资源分配和动态控制速率? Spark默认是先分配资源,然后计算:粗粒度的分配方式,资源提前分配好,有计算任务提前分配好资源: 不好的地方:从Spark Streaming角度讲有高峰值和低峰值,如果资源分配从高峰值.低峰值考虑都有大量资源的浪费. 其实当年S

Spark Streaming中动态Batch Size深入及RateController解析

本期内容 : BatchDuration与 Process Time 动态Batch Size Spark Streaming中有很多算子,是否每一个算子都是预期中的类似线性规律的时间消耗呢? 例如:join操作和普通Map操作的处理数据的时间消耗是否会呈现出一致的线性规律呢,也就是说,并非数据量规模越大就是简单加大BatchDuration 就可以解决问题的,数据量是一个方面,计算的算子也是一个考量的因素. 使用BatchSize来适配我们的流处理程序 : 线上的处理程序越来越重要,流入的数据

4. Spark Streaming解析

4.1 初始化StreamingContext import org.apache.spark._ import org.apache.spark.streaming._ val conf = new SparkConf().setAppName(appName).setMaster(master) val ssc = new StreamingContext(conf, Seconds(1)) // 可以通过 ssc.sparkContext 来访问 SparkContext // 或者通过已

Spark Streaming性能优化: 如何在生产环境下应对流数据峰值巨变

1.为什么引入Backpressure 默认情况下,Spark Streaming通过Receiver以生产者生产数据的速率接收数据,计算过程中会出现batch processing time > batch interval的情况,其中batch processing time 为实际计算一个批次花费时间, batch interval为Streaming应用设置的批处理间隔.这意味着Spark Streaming的数据接收速率高于Spark从队列中移除数据的速率,也就是数据处理能力低,在设置

Spark Streaming编程指南

本文基于Spark Streaming Programming Guide原文翻译, 加上一些自己的理解和小实验的结果. 一.概述 Spark Streaming是基于Core Spark API的可扩展,高吞吐量,并具有容错能力的用于处理实时数据流的一个组件.Spark Streaming可以接收各种数据源传递来的数据,比如Kafka, Flume, Kinesis或者TCP等,对接收到的数据还可以使用一些用高阶函数(比如map, reduce, join及window)进行封装的复杂算法做进

Spark Streaming Backpressure分析

---恢复内容开始--- 1.为什么引入Backpressure 默认情况下,Spark Streaming通过Receiver以生产者生产数据的速率接收数据,计算过程中会出现batch processing time > batch interval的情况,其中batch processing time 为实际计算一个批次花费时间, batch interval为Streaming应用设置的批处理间隔.这意味着Spark Streaming的数据接收速率高于Spark从队列中移除数据的速率,也

Spark Streaming实时流处理项目实战

第1章 课程介绍   1-1 -导学-   1-2 -授课习惯和学习建议   1-3 -OOTB环境使用演示   1-4 -Linux环境及软件版本介绍   1-5 -Spark版本升级第2章 初识实时流处理   2-1 -课程目录   2-2 -业务现状分析   2-3 -实时流处理产生背景   2-4 -实时流处理概述   2-5 -离线计算和实时计算对比   2-6 -实时流处理框架对比   2-7 -实时流处理架构及技术选型   2-8 -实时流处理在企业中的应用第3章 分布式日志收集框