Spark Streaming揭秘 Day21

动态Batch size实现初探(下)

接昨天的描述,今天继续解析动态Batch size调整的实现。

算法

动态调整采用了Fix-point迭代算法,其本质是一种回归计算,算法如下:

有点类似机器学习,学习当前SparkStreaming的状况,根据状况把Batch Duration调到最小,来获得最高的稳定性。

下面这张图比较重要,是主要描述了算法的实现思想:

基本思想是按100ms一个小的批次,根据处理情况,Job Generator会调整自己的Batch Duration。 非常关键的就是在处理过程中加入了Controller这个组件,会获取作业的统计信息,动态调整时间窗口

效果

根据测算,动态调整算法效果表现非常的稳定,成功了消除不同算子特性造成的效率波动。

同时,算法也能很好的适应外界的干扰,如下场景是指运行是突然有其他的作业加入,拿走了部分资源,这时,动态调整机制也能够有效进行工作。

实现

文中的算法比较复杂,基于相同的思路,在SparkStreaming中有一个轻量级的实现。

最关键的是Controller组件:

其实现主要包含两个步骤:

  1. 根据历史情况进行新的速率
  2. 发布使新的速率生效

计算代码如下,在每次Job处理完成后,根据收集的信息评估消费数据的能力。

发布代码如下,是直接调用了ReceiverTracker的接口,发送速率调整的通知。

从速率控制的实现来看,可以通过控制最大接收速率,不过这个参数作用不大,不建议设置。

欲知后事如何,且听下回分解

DT大数据每天晚上20:00YY频道现场授课频道68917580

Spark Streaming揭秘 Day21 动态Batch size实现初探(下)的更多相关文章

  1. Spark Streaming揭秘 Day20 动态Batch size实现初探(上)

    Spark Streaming揭秘 Day20 动态Batch size实现初探(上) 今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机 ...

  2. Spark Streaming中动态Batch Size实现初探

    本期内容 : BatchDuration与 Process Time 动态Batch Size Spark Streaming中有很多算子,是否每一个算子都是预期中的类似线性规律的时间消耗呢? 例如: ...

  3. Spark Streaming揭秘 Day33 checkpoint的使用

    Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...

  4. Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕

    Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...

  5. Spark Streaming揭秘 Day17 资源动态分配

    Spark Streaming揭秘 Day17 资源动态分配 今天,让我们研究一下一个在Spark中非常重要的特性:资源动态分配. 为什么要动态分配?于Spark不断运行,对资源也有不小的消耗,在默认 ...

  6. Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期

    Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期 昨天主要介绍了SparkStreaming中对于Receiver的生命周期管理,下面让我们进入到Re ...

  7. Spark Streaming揭秘 Day2-五大核心特征

    Spark Streaming揭秘 Day2 五大核心特征 引子 书接上回,Streaming更像Spark上的一个应用程序,会有多个Job的配合,是最复杂的Spark应用程序.让我们先从特征角度进行 ...

  8. Spark Streaming揭秘 Day34 解析UI监听模式

    Spark Streaming揭秘 Day34 解析UI监听模式 今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式. ...

  9. Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析

    Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...

随机推荐

  1. iOS,面试必看,最全梳理

    序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态 ...

  2. SSIS 学习(0):企业离 BI 还有多远?【转】

    上一篇文章<<企业需要BI吗?>>发表后,有一些网友反应:BI现在还不火:BI仅仅在一些大企业有用武之地,中小型企业只能是望其项背,遥不可及了:BI仅仅是一些花拳秀腿而已,如果 ...

  3. MySQL5.6 linux源码安装

    安装mysql 创建mysql数据目录 mkdir -p /usr/local/mysql --安装目录 mkdir -p /mysql/data ---数据目录 mkdir -p /mysql/lo ...

  4. 基本Linux命令总结

    常用基本Linux命令总结 学习linux/unix之初,你可能会被上百条的各种命令搞的头昏脑涨,虽然可用的命令有很多,但是日常使用的不过那么几条,如果仅仅是DBA角色而非系统管理员,那么就来一起学习 ...

  5. Zabbix Api的使用

    API使用 zabbix官网文档:https://www.zabbix.com/documentation/2.2/manual/api, Zabbix API是基于JSON-RPC 2.0规格,具体 ...

  6. C# 文件的读取、写入和删除

    class Program { static void Main(string[] args) { EmployeeDAL DAL = new EmployeeDAL(); List<Sys_E ...

  7. nmap命令-----基础用法

    系统漏洞扫描之王-nmap   NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包.   其基本功能有三个: (1)是扫描主机端口,嗅探所提供的网络服务 (2)是探测一 ...

  8. 学习css简单内容

    Css的class,ID和上下文选择符 Class选择符. Class选择符用来配置某一类css规则,将其应用到网页中一个或多个区域.配置一类样式时,要将选择符配置成类名.在类名前加(.).类名必须以 ...

  9. Java Concurrency - ReadWriteLock & ReentrantReadWriteLock

    锁所提供的最重要的改进之一就是 ReadWriteLock 接口和它的实现类 ReentrantReadWriteLock.这个类提供两把锁,一把用于读操作和一把用于写操作.同一时间可以有多个线程执行 ...

  10. HDOJ2017字符串统计

    字符串统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...