zoukankan      html  css  js  c++  java
  • Spark Streaming揭秘 Day21 动态Batch size实现初探(下)

    Spark Streaming揭秘 Day21

    动态Batch size实现初探(下)

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

    算法

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

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

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

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

    效果

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

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

    Snip20160606_7

    实现

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

    最关键的是Controller组件:
    Snip20160606_9

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

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

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

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

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

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

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

  • 相关阅读:
    python开发_html_html处理
    python开发_logging_日志处理
    IIS 7 应用程序池自动回收关闭的解决方案
    C#流水号生成汇总(四)
    通过内存盘提高MSMQ的消息吞吐能力
    c#分页工具类,完美实现List分页
    IIS 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral,
    win7电脑遇到端口被占用的情况该如何查看并将其关闭
    如何创建内存盘
    IP地址便捷修改器 V3.5 绿色版
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5565442.html
Copyright © 2011-2022 走看看