Spark小课堂Week2 Hello Streaming

我们是怎么进行数据处理的?

  • 批量方式处理

目前最常采用的是批量方式处理,指非工作时间运行,定时或者事件触发。这种方式的好处是逻辑简单,不影响联机业务,但是性能不行。

  • 理想方式

对于数据处理的问题,我们的最终理想解,应该是满足业务规则正确的情况下,实时的完成处理。

  • 平衡点

理想方式难度比较高,批量方式往往又不给力,我们可以在批量方式和理想方式中间,找到一个平衡点,就是流处理。

流处理

我们的理想情况是当不断有数据进来,就不断的进行处理。
这样处理未必是效率最优,所以我们可以抽象出一个Batch的概念,Batch是指以某种方式切分出了的一块块的数据。
流处理是基于Batch来处理的,而在SparkStreaming中切分Batch的依据是时间。


Batch变大,计算成本会降低,但是延时会提高,所以在流处理中有一个核心问题是需要选择最合适的Batch粒度,目标是整体的处理时间最优。

相比于批量处理,流处理下我们会碰到一些问题:

  1. 由于持续不断的进行处理,可能会出现瞬时流量过大的情况。
  2. 涉及到多个环节,环节之间可能会丢失数据。
  3. 因为工作时间变长,服务程序异常产生的风险也变大。

这些问题都是通过分布式技术来解决的。
所以在实际应用中,流处理一定是分布式的,从批量处理进行改造会分为下面两个步骤:

  1. 将每个环节的处理分布式。
  2. 将整块的流处理切分为非常多小块的处理。

问题:

  1. 我想知道流处理追求快速的代价是什么?

相比于批量处理方式,流处理可靠性会降低,并且对于算法有一定的抽象难度,所以设计和开发复杂度会提高,增加的是智力成本。

  1. 想知道:spark streaming 是否在计算和流数据接收上都是分布式的?

Streaming实际是包含了两个流式处理,一个是持续不断的接收数据,一个把接收完的数据持续不断的进行处理,其中接收数据采用的是主从模式,不是分布式的,只有处理数据是分布式的。

  1. spark平台可以处理非结构化数据和结构化数据的时候有什么不同的机制吗?配置平台上需要做什么变动?

Steaming目前在业界也已经被大量使用在非结构化的处理场景下,因为从Streaming中的数据就是对象,本身是数据无关的,对于非结构化数据,只要序列化成对象就可以处理。

关于

小课堂是在公司进行内部交流的一系列主题,偏基础,但是比较零散,持续更新中。

最新文章

  1. 匹夫细说C#:从园友留言到动手实现C#虚函数机制
  2. 转载:WinForm中播放声音的三种方法
  3. iOS学习之单例模式
  4. 将一个数组分成奇数部分和偶数部分,并分别排好序 CVTE
  5. jquery的ajax可以传入的三种参数类型
  6. 最简实例说明wait、notify、notifyAll的使用方法
  7. java 13-4 Integer和String、int之间的转换,进制转换
  8. 使用VS连接SQLServe时提示未能载入文件或程序集“System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKey
  9. Codeforces Round #140 (Div. 1) D. The table 构造
  10. C#中调用unmanaged DLL
  11. iOS中的设计模式
  12. GET——token
  13. iOS_17_控制开关_TabBarController_由storyboard道路
  14. 异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
  15. 51nod 1270 数组的最大代价
  16. 平安银行在开源技术选型上的思考和实践 RocketMQ
  17. 错误提示:The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object. Fix the build path then try building this project The type java.lang.Object cannot b
  18. Azure系列2.1.12 —— CloudBlobDirectory
  19. iOS: lame框架将PCM录音转成MP3格式
  20. 【VUE】@click加上v-bind绑定切换类名及动画事件

热门文章

  1. UITableView优化技巧
  2. C++/CLR Sqlite初探
  3. Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)
  4. SSIS 学习(3):数据流任务(下)【转】
  5. Apache服务器中配置虚拟机的方法
  6. 怎么删除远程登录连接的ip
  7. The _imageingft C module is not installed
  8. framework7学习笔记
  9. ActiveMQ(5.10.0) - JNDI Support
  10. Agile.Net 组件式开发平台 - 内核管理组件