大规模数据处理实战
蔡元楠
硅谷资深工程师
41608 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
大规模数据处理实战
15
15
1.0x
00:00/00:00
登录|注册

06 | 如何区分批处理还是流处理?

流数据(Streaming Data)
Apache Samza
Apache Storm
Apache Flink
Apache Kafka
销售终端(POS)系统
实时商业智能
实时监控
无边界数据
Apache Spark
Apache Hadoop
数据仓库
计费应用程序
日志分析
有边界数据
有边界数据
有边界数据
无边界数据
延迟性
架构
应用场景
事件时间和处理时间
输入数据
延迟性
架构
应用场景
输出数据
输入数据
事件时间和处理时间
无边界数据和有边界数据
思考题
小结
流处理
批处理
如何区分批处理还是流处理?

该思维导图由 AI 生成,仅供参考

你好,我是蔡元楠。
今天,我将会带领你一起学习在进行大规模数据处理时,无论如何也绕不开的两个处理模式:批处理(Batching Processing)和流处理(Streaming Processing)。
在我看来,大规模的视频流系统、大规模物联网(IoT)数据监控系统等各种现代大规模数据系统的出现,已经成为了一种必然的历史潮流。
无论你是在从事哪一种开发方向,都不可避免地要与这些海量数据打交道。如何能既满足实际应用场景的需求,又高效地处理好大规模数据,在整个项目开发架构中都是非常重要的一个环节。
在开始讲解批处理和流处理之前,我想先介绍一下几个必要的背景知识。

无边界数据和有边界数据

这个世界上的数据可以抽象成为两种,分别是无边界数据(Unbounded Data)和有边界数据(Bounded Data)。
顾名思义,无边界数据是一种不断增长,可以说是无限的数据集。
这种类型的数据,我们无法判定它们到底什么时候会停止发送。
例如,从手机或者从传感器发送出来的信号数据,又比如我们所熟知的移动支付领域中的交易数据。因为每时每刻都会有交易产生,所以我们不能判定在某一刻这类数据就会停止发送了。
在国外的一些技术文章上,有时候我们会看到“流数据(Streaming Data)”这一说法,其实它和无边界数据表达的是同一个概念。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了大规模数据处理中的两种处理模式:批处理和流处理。首先介绍了无边界数据和有边界数据的概念,以及事件时间和处理时间的区别。批处理模式适用于不需要实时分析结果的情况,处理有边界数据,通常具有高延迟性;而流处理模式适用于需要实时分析处理的情况,处理无边界数据,具有高吞吐量和低延迟。文章通过实际例子和技术概念深入浅出地介绍了这两种处理模式的特点和应用场景,为读者提供了清晰的认识。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(40)

  • 最新
  • 精选
  • 孙稚昊
    我们的用户画像本质还是批处理,还不能做到实时更新每个人的 profile,但对用户的每次电机有一个实时的劣化推荐版本,就是根据session中点的几个item的click,找到它们的simiiar item,这个是通过cache 和API实现的,并不是实时数据处理

    作者回复: 谢谢你的分享!

    2019-04-29
    14
  • hua168
    老师,上面说流数据是在没到达磁盘之前就处理了,所以速度很快,但是如果那处软件挂了,那部分流数据不是丢失了吗?是不是不能处理重要的数据? 如果我的数据很重要,但是又想像流那样处理的快速怎办?像redis那样,使用持久化,边处理写延迟写及磁盘这种处理思想吗?还是其它?

    作者回复: 谢谢你的提问!数据如果没有保存到磁盘的话,确实整个软件挂了所有数据就丢失了。不过流处理一样可以处理重要数据的。一般即使数据存在内存中,有的软件会定时将数据的snapshot保存到磁盘中,以防软件全部挂掉。而很多软件都会有data replica,而且会有N+1或者N+2的policy,以此来保证如果有其中一台机器上的软件挂了,另外一台机器可以顶替它。 一般全部机器都挂的情况非常少见,这就如同存在磁盘上的数据被人运行“rm -fR /”一样,所以在采用流处理的时候不必过于担心。

    2019-04-30
    9
  • xzy
    既有批处理也有流处理,生产环境利用elasticsearch来存储监控数据、日志数据等。为了降低成本和查询速度,会按照小时、天粒度对历史数据做预聚合,这应该属于批处理。其次,es作为搜索引擎,用户也有实时查询的需求,这块应该属于流处理。 谢谢

    作者回复: 谢谢你的分享!

    2019-04-30
    3
    9
  • yangs
    老师您好,之前看到网上说flink实现的流处理和spark streaming不一样,是因为spark使用了微批处理模拟流处理,可是我觉得flink实现的原理也像是用批处理模拟流处理,将一段一段数据包裹在时间窗口里来实现,这个时间窗口的数据处理,可不可以也理解成为是批处理?

    作者回复: 可以

    2019-04-29
    3
    8
  • 邱从贤※klion26
    有限流是无限流的一个特例,所以一直在想是不是未来不再需要批处理,所有的都可以流处理,从而达到真正的流批一体。 从现在的情况看,批处理主要用于分析,用 sql 较多,且会对多个表进行处理,是不是意味着流上的 sql 也是刚需。 线下批处理能够不停重算的特性,应该可以让流处理不停做 checkpoint 来支持,这样是不是就和 db 的 backup 就有点像了,那是不是最后流处理,批处理,数据库也会统一起来呢?

    作者回复: 谢谢你的留言!我很认同你的观点,关于流处理和批处理未来应该会统一起来。数据库作为存储系统的话还是会单独存在的吧。

    2019-04-29
    3
    4
  • 在实际工作中数据仓库的数据处理使用的是批处理,根据需要大多数据是日处理,个别数据是一天处理几次,但都是批处理。在做核心业务系统时使用的是流数据处理,通常用消息中间件来传递事件,接收到事件时即开始处理。一直想尝试的是通过日志信息抽取业务信息,实现对业务信息的实时分析,例如当日的实时交易笔数,交易额等,无需侵入核心业务系统,通过日志即可以流数据的形式实时传递给数据平台。了解过splunk,elasticsearch都可以做,但是不清楚哪个更好,或者有其他更好的选择。

    作者回复: 谢谢你的经验分享!赞一个!

    2019-04-29
    3
  • slowforce
    我们接收现场设备发回来的数据,数据以email或者sftp的形式上传 或者以自定义的格式通过socket直接传。对于前一种情况,我们采取批处理的方式 定时去处理,而对于第二种情况 我认为就是流处理

    作者回复: 谢谢你的分享!

    2019-05-09
    1
  • CoderLean
    Flink的本质就是流处理,而里面的批处理api底层是将时间或者个数设定在某个区域里面,可以认为在这个架构中批处理是流处理的一个特例,我看有的评论说反了。说明还没好好掌握flink

    作者回复: 赞一个大牛的留言啊!

    2019-05-04
    1
  • 每天晒白牙
    产生特定格式和维度的报表数据一般是批处理,但实时报表是流处理,需要低延迟

    作者回复: 谢谢你的分享!

    2019-04-29
    1
  • peter
    老师在谈流处理框架时没有说spark,难道spark不是流处理框架吗?(spark streaming也是流处理呀)

    作者回复: 谢谢你的留言!没错,Spark也是支持流处理的。现在数据处理的Framework太多了,可能没有面面俱到描述到。

    2019-04-29
    1
收起评论
显示
设置
留言
40
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部