AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

SparkStreaming

SparkStreaming

是什么

是Spark的一个模块,用于构建高吞吐高容错的分布式流式计算程序

  • 特点

    1. 简单易用
      SparkStreaming包含并扩展了SparkCore的算子操作
      可以使用类似RDD的操作来对流式数据进行处理

    2. 高容错
      SparkStreaming提供与SparkCore类似的容错机制
      可以保证在高速的流式计算中,每条数据恰好执行一次
      还通过窗口机制,允许为同一个流设置多个批间隔

    3. 兼容Spark的其他模块
      SparkStreaming兼容RDD和DF、DSapi
      可以在同一个程序中融合流式计算、批处理和结构化运算

离线计算和流式计算

离线计算 流式计算
别名 批处理 实时计算
处理延迟 低(毫秒级、秒级)
常用框架 MR、SaprkCore、SparkSQL Storm、SparkStreaming、Flink
  • Storm是Hadoop生态流式计算框架的鼻祖

    • Storm将计算任务抽象为一个topology

    • topology包含两类组件

    • spout :从数据源读取数据,并将每条数据封装为一个tuple发送给下游的bolt

    • bolt :接到上游的tuple,将tuple中的数据处理完,将结果封装为另一个tuple发送到下游bolt

    • Storm的开发流程

      1. 编写Spout类
      2. 编写Bolt类
      3. 编写主程序用于组装组件
   TopologyBuilder
   .setSpout(new 自定义spout)
   .setBolt(new 自定义Bolt).(设置接收的数据上游)
   .setBolt(new 自定义Bolt).(设置接收的数据上游)
   ...
   提交topology到集群

对比流式计算框架

Storm SparkStreaming Flink
缓存 基于内存 基于内存和磁盘 基于内存和磁盘
实时性 毫秒级 秒级 毫秒级
原理 基于tuple的流式计算 微批处理 流式计算
吞吐量 百万级 无穷大 无穷大
编程语言 clojure,java java,scala,python java,scala