一、流处理

1.1 静态数据处理

在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中。应用程序根据需要查询数据或计算数据。这就是传统的静态数据处理架构。Hadoop采用HDFS进行数据存储,采用MapReduce进行数据查询或分析,这就是典型的静态数据处理架构。

1.2 流处理

而流处理则是直接对运动中的数据的处理,在接收数据时直接计算数据。

大多数数据都是连续的流:传感器事件,网站上的用户活动,金融交易等等 ,所有这些数据都是随着时间的推移而创建的。

接收和发送数据流并执行应用程序或分析逻辑的系统称为流处理器。流处理器的基本职责是确保数据有效流动,同时具备可扩展性和容错能力,Storm和Flink就是其代表性的实现。

流处理带来了静态数据处理所不具备的众多优点:

  • 应用程序立即对数据做出反应:降低了数据的滞后性,使得数据更具有时效性,更能反映对未来的预期;
  • 流处理可以处理更大的数据量:直接处理数据流,并且只保留数据中有意义的子集,并将其传送到下一个处理单元,逐级过滤数据,降低需要处理的数据量,从而能够承受更大的数据量;
  • 流处理更贴近现实的数据模型:在实际的环境中,一切数据都是持续变化的,要想能够通过过去的数据推断未来的趋势,必须保证数据的不断输入和模型的不断修正,典型的就是金融市场、股票市场,流处理能更好的应对这些数据的连续性的特征和及时性的需求;
  • 流处理分散和分离基础设施:流式处理减少了对大型数据库的需求。相反,每个流处理程序通过流处理框架维护了自己的数据和状态,这使得流处理程序更适合微服务架构。

二、Spark Streaming

2.1 简介

Spark Streaming是Spark的一个子模块,用于快速构建可扩展,高吞吐量,高容错的流处理程序。具有以下特点:

  • 通过高级API构建应用程序,简单易用;
  • 支持多种语言,如Java,Scala和Python;
  • 良好的容错性,Spark Streaming支持快速从失败中恢复丢失的操作状态;
  • 能够和Spark其他模块无缝集成,将流处理与批处理完美结合;
  • Spark Streaming可以从HDFS,Flume,Kafka,Twitter和ZeroMQ读取数据,也支持自定义数据源。

2.2 DStream

Spark Streaming提供称为离散流(DStream)的高级抽象,用于表示连续的数据流。 DStream可以从来自Kafka,Flume和Kinesis等数据源的输入数据流创建,也可以由其他DStream转化而来。在内部,DStream表示为一系列RDD

2.3 Spark & Storm & Flink

storm和Flink都是真正意义上的流计算框架,但 Spark Streaming 只是将数据流进行极小粒度的拆分,拆分为多个批处理,使得其能够得到接近于流处理的效果,但其本质上还是批处理(或微批处理)。

参考资料

  1. Spark Streaming Programming Guide
  2. What is stream processing?

更多大数据系列文章可以参见个人 GitHub 开源项目: 程序员大数据入门指南

最新文章

  1. C++中的事件分发
  2. spark1.5.1环境搭建
  3. Java _Map接口的使用(转载)
  4. Android少量数据保存之SharedPreferences接口实例
  5. css样式写一个三角形
  6. struts2上传下载
  7. oracle数据库连接串格式
  8. 使用echarts水球图
  9. javascript实现图片延迟加载方法汇总(三种方法)
  10. Ionic 2 + 手动搭建开发环境教程 【转】
  11. TCP&UDP&Socket讲解(上)
  12. vue2.0项目实战(2)使用 vue-cli 搭建项目
  13. GPU并行的基础知识
  14. python 常见报错汇总
  15. Java工程师高手之路
  16. Python网络爬虫相关基础概念
  17. PAT B1050 螺旋矩阵 (25 分)
  18. Android Studio编译慢、卡死和狂占内存怎么破?
  19. <二代測序> 批量下载 NCBI sra 文件
  20. 使用ffmpeg合并视频文件的三种方法

热门文章

  1. jquery validate 详细说明
  2. 希尔伯特空间(Hilbert Space)
  3. 使用Qt installer framework制作安装包(不知道是否适合Mac和Linux?)
  4. 潜移默化学会WPF--值转换器
  5. mysql常见操作汇总 专题
  6. Java 知识笔记 - 类、集合、多线程、IO、JVM(最后一次更新,2019年02月17日)
  7. git全程笔记(mac环境) git for mac
  8. linux系统中ls命令的用法
  9. QSS 盒子模型
  10. 了解 XML 数字签名