博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark Streaming揭秘 Day20 动态Batch size实现初探(上)
阅读量:6686 次
发布时间:2019-06-25

本文共 1023 字,大约阅读时间需要 3 分钟。

Spark Streaming揭秘 Day20

动态Batch size实现初探(上)

今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机制,因为比较偏理论,么有代码演示。

缘起

从目前的业务发展来看,线上处理目前来看已经越来越重要,而一个突出的矛盾就是,传统框架Oracle+j2ee的框架下,存在一个致命的问题,就是无法突破单台机器的局限,可能容纳此刻流入的数据,于是分布式流处理程序越来越火热。

流处理的核心是追求更快的处理速度。但是以目前的技术现状来看,还无法达到最快,所以容错问题也非常的重要。目前主流的框架,都会使用MapReduce思想对流入的数据不断进行处理,MapReduce最大的优势是在于自身带有完备的容错机制。

挑战

流处理系统最大的挑战是在于,可能会面对突然来临的波峰,流处理系统必须能应对这种情况。

过去的系统的解决方式:

  1. 丢弃数据:只能在一些特殊场景使用,对业务会有影响。

  2. 动态调整资源:很多时候,资源和数据的增长不是线性关系,很难根据数据的趋势来调整资源。

在SparkStreaming中,使用了第三种方案,就是动态调整Batch size。

一般来说,Batch size越小就越快,越快就越安全,低延时是首要的目标。

但在指定时间窗口限制下,对于Batch size调整幅度来说,是一个很综合的课题,数据量是一个方面,计算内部的算子也是非常重要的方面,某些算子下在数据量规模大的情况下,Batch Duration和延时之间的关系会很复杂。

Snip20160604_5

从Join的时间曲线可以看到,当数据流速增加到2.4MB/s时,处理速度恶化明显加快,而在Reduce中,表现完全不同。

算法要求

如何调整,需要一个算法的支持。

因为不同的算子下,处理延时并不是呈现线性规律,随着吞吐量的变化,很难用静态模型预测实际情况的。

对于这个算求在要求拥有更低的延时的同时,必须能能适配不同算子带来的变化。

Snip20160604_6

同时,在设计时还需要有一些其他的难点考虑:

  1. 能对workload的非线性表现进行适配。
  2. 能消除干扰因素影响。
  3. 能平衡计算精确性和灵活性之间的矛盾。

具体算法,我们将在明天展开。

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

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

转载于:https://www.cnblogs.com/dt-zhw/p/5559866.html

你可能感兴趣的文章
饿了么预点单是不是营业时间开始后5分钟内不接单,订单就自动取消
查看>>
1.3 简单的操作符
查看>>
13机器学习实战之PCA(1)
查看>>
tf.argmax()以及axis解析
查看>>
android使用Pull解析来自服务器的xml文件时出现错误以及解决方案
查看>>
C#_delegate - 调用列表 计算阶乘
查看>>
xib下这种方式创建cell
查看>>
BZOJ2940 条纹
查看>>
Scala入门教程---《chang哥教你一天搞定Scala》
查看>>
当view为wrap_conten时获取一个view的具体宽高
查看>>
第三篇 - int内置函数
查看>>
c强制类型转换
查看>>
开发vue插件并发布到npm包管理工具的流程
查看>>
Python_字典
查看>>
vs.net2010 操作 Excel2003 与 Excel2007
查看>>
Java核心技术及面试指南 面向对象部分的面试题总结以及答案
查看>>
jquery 总体架构
查看>>
CSharp设计模式读书笔记(23):模板方法模式(学习难度:★★☆☆☆,使用频率:★★★☆☆)...
查看>>
CSharp设计模式读书笔记(7):适配器模式(学习难度:★★☆☆☆,使用频率:★★★★☆)...
查看>>
CLR Via CSharp读书笔记(12):泛型
查看>>