Spark小课堂Week2 Hello Streaming
2016-07-24 08:28
232 查看
Spark小课堂Week2 Hello Streaming
我们是怎么进行数据处理的?
批量方式处理目前最常采用的是批量方式处理,指非工作时间运行,定时或者事件触发。这种方式的好处是逻辑简单,不影响联机业务,但是性能不行。
理想方式
对于数据处理的问题,我们的最终理想解,应该是满足业务规则正确的情况下,实时的完成处理。
平衡点
理想方式难度比较高,批量方式往往又不给力,我们可以在批量方式和理想方式中间,找到一个平衡点,就是流处理。
流处理
我们的理想情况是当不断有数据进来,就不断的进行处理。这样处理未必是效率最优,所以我们可以抽象出一个Batch的概念,Batch是指以某种方式切分出了的一块块的数据。
流处理是基于Batch来处理的,而在SparkStreaming中切分Batch的依据是时间。
![](http://o6jujlzry.bkt.clouddn.com/2016-07-24-streaming-flow.png)
Batch变大,计算成本会降低,但是延时会提高,所以在流处理中有一个核心问题是需要选择最合适的Batch粒度,目标是整体的处理时间最优。
相比于批量处理,流处理下我们会碰到一些问题:
由于持续不断的进行处理,可能会出现瞬时流量过大的情况。
涉及到多个环节,环节之间可能会丢失数据。
因为工作时间变长,服务程序异常产生的风险也变大。
这些问题都是通过分布式技术来解决的。
所以在实际应用中,流处理一定是分布式的,从批量处理进行改造会分为下面两个步骤:
将每个环节的处理分布式。
将整块的流处理切分为非常多小块的处理。
问题:
我想知道流处理追求快速的代价是什么?相比于批量处理方式,流处理可靠性会降低,并且对于算法有一定的抽象难度,所以设计和开发复杂度会提高,增加的是智力成本。
想知道:spark streaming 是否在计算和流数据接收上都是分布式的?
Streaming实际是包含了两个流式处理,一个是持续不断的接收数据,一个把接收完的数据持续不断的进行处理,其中接收数据采用的是主从模式,不是分布式的,只有处理数据是分布式的。
spark平台可以处理非结构化数据和结构化数据的时候有什么不同的机制吗?配置平台上需要做什么变动?
Steaming目前在业界也已经被大量使用在非结构化的处理场景下,因为从Streaming中的数据就是对象,本身是数据无关的,对于非结构化数据,只要序列化成对象就可以处理。
关于
小课堂是在公司进行内部交流的一系列主题,偏基础,但是比较零散,持续更新中。相关文章推荐
- 从《BLAME!》说开去——新一代生产级卡通真实感混合的渲染方案Maneki
- HDU1062 Text Reverse【水题】
- 如何查看linux版本 如何查看LINUX是多少位
- sqlserver+asp.net+devextreme从零开始(2)
- IO —— 标准输入流和标准输出流
- "Start Ruble bundle manager". java.lang.NullPointerException
- Backbone视图渲染React组件
- poj1979 Red and Black
- CSS——选择器
- 对HashMap对象的键值对内容进行排序
- mybaits逆向工程
- 2048小游戏开发过程以及感想
- Java千百问_09基础类库(002)_util包有什么功能
- HDU1969 Pie
- 二进制文件与文本文件的区别
- 声笔码7.00正式发布
- BZOJ1002: [FJOI2007]轮状病毒
- LeetCode[357] Count Numbers with Unique Digits
- mysql启动问题access denied for user 'root'@'localhost'(using password:YES)
- 模板-欢迎使用CSDN-markdown编辑器