优化阅读格式
This commit is contained in:
@ -16,11 +16,11 @@
|
||||
|
||||
#### 1.1 简介
|
||||
|
||||
Storm 是一个开源的分布式实时计算框架,可以以简单、可靠的方式进行大数据流的处理。通常用于实时分析,在线机器学习、持续计算、分布式RPC、ETL等场景。Storm具有以下特点:
|
||||
Storm 是一个开源的分布式实时计算框架,可以以简单、可靠的方式进行大数据流的处理。通常用于实时分析,在线机器学习、持续计算、分布式 RPC、ETL 等场景。Storm 具有以下特点:
|
||||
|
||||
+ 支持水平横向扩展;
|
||||
+ 具有高容错性,通过ACK机制每个消息都不丢失;
|
||||
+ 处理速度非常快,每个节点每秒能处理超过一百万个tuples ;
|
||||
+ 具有高容错性,通过 ACK 机制每个消息都不丢失;
|
||||
+ 处理速度非常快,每个节点每秒能处理超过一百万个 tuples ;
|
||||
+ 易于设置和操作,并可以与任何编程语言一起使用;
|
||||
+ 支持本地模式运行,对于开发人员来说非常友好;
|
||||
+ 支持图形化管理界面。
|
||||
@ -29,30 +29,30 @@ Storm 是一个开源的分布式实时计算框架,可以以简单、可靠
|
||||
|
||||
#### 1.2 Storm 与 Hadoop对比
|
||||
|
||||
Hadoop采用MapReduce处理数据,而MapReduce主要是对数据进行批处理,这使得Hadoop更适合于海量数据离线处理的场景。而Strom的设计目标是对数据进行实时计算,这使得其更适合实时数据分析的场景。
|
||||
Hadoop 采用 MapReduce 处理数据,而 MapReduce 主要是对数据进行批处理,这使得 Hadoop 更适合于海量数据离线处理的场景。而 Strom 的设计目标是对数据进行实时计算,这使得其更适合实时数据分析的场景。
|
||||
|
||||
|
||||
|
||||
#### 1.3 Storm 与 Spark Streaming对比
|
||||
|
||||
Spark Streaming并不是真正意义上的流处理框架。 Spark Streaming接收实时输入的数据流,并将数据拆分为一系列批次,然后进行微批处理。只不过 Spark Streaming 能够将数据流进行极小粒度的拆分,使得其能够得到接近于流处理的效果,但其本质上还是批处理(或微批处理)。
|
||||
Spark Streaming 并不是真正意义上的流处理框架。 Spark Streaming 接收实时输入的数据流,并将数据拆分为一系列批次,然后进行微批处理。只不过 Spark Streaming 能够将数据流进行极小粒度的拆分,使得其能够得到接近于流处理的效果,但其本质上还是批处理(或微批处理)。
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/streaming-flow.png"/> </div>
|
||||
|
||||
#### 1.4 Strom 与 Flink对比
|
||||
|
||||
storm和Flink都是真正意义上的实时计算框架。其对比如下:
|
||||
storm 和 Flink 都是真正意义上的实时计算框架。其对比如下:
|
||||
|
||||
| | storm | flink |
|
||||
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 状态管理 | 无状态 | 有状态 |
|
||||
| 窗口支持 | 对事件窗口支持较弱,缓存整个窗口的所有数据,窗口结束时一起计算 | 窗口支持较为完善,自带一些窗口聚合方法,<br>并且会自动管理窗口状态 |
|
||||
| 消息投递 | At Most Once<br/>At Least Once | At Most Once<br/>At Least Once<br/>**Exactly Once** |
|
||||
| 容错方式 | ACK机制:对每个消息进行全链路跟踪,失败或者超时时候进行重发 | 检查点机制:通过分布式一致性快照机制,<br/>对数据流和算子状态进行保存。在发生错误时,使系统能够进行回滚。 |
|
||||
| 容错方式 | ACK 机制:对每个消息进行全链路跟踪,失败或者超时时候进行重发 | 检查点机制:通过分布式一致性快照机制,<br/>对数据流和算子状态进行保存。在发生错误时,使系统能够进行回滚。 |
|
||||
|
||||
|
||||
> 注 : 对于消息投递,一般有以下三种方案:
|
||||
> + At Most Once : 保证每个消息会被投递0次或者1次,在这种机制下消息很有可能会丢失;
|
||||
> + At Most Once : 保证每个消息会被投递 0 次或者 1 次,在这种机制下消息很有可能会丢失;
|
||||
> + At Least Once : 保证了每个消息会被默认投递多次,至少保证有一次被成功接收,信息可能有重复,但是不会丢失;
|
||||
> + Exactly Once : 每个消息对于接收者而言正好被接收一次,保证即不会丢失也不会重复。
|
||||
|
||||
@ -62,7 +62,7 @@ storm和Flink都是真正意义上的实时计算框架。其对比如下:
|
||||
|
||||
#### 2.1 静态数据处理
|
||||
|
||||
在流处理之前,数据通常存储在数据库或文件系统中,应用程序根据需要查询或计算数据,这就是传统的静态数据处理架构。Hadoop采用HDFS进行数据存储,采用MapReduce进行数据查询或分析,这就是典型的静态数据处理架构。
|
||||
在流处理之前,数据通常存储在数据库或文件系统中,应用程序根据需要查询或计算数据,这就是传统的静态数据处理架构。Hadoop 采用 HDFS 进行数据存储,采用 MapReduce 进行数据查询或分析,这就是典型的静态数据处理架构。
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/01_data_at_rest_infrastructure.png"/> </div>
|
||||
|
||||
@ -72,7 +72,7 @@ storm和Flink都是真正意义上的实时计算框架。其对比如下:
|
||||
|
||||
而流处理则是直接对运动中数据的处理,在接收数据的同时直接计算数据。实际上,在真实世界中的大多数数据都是连续的流,如传感器数据,网站用户活动数据,金融交易数据等等 ,所有这些数据都是随着时间的推移而源源不断地产生。
|
||||
|
||||
接收和发送数据流并执行应用程序或分析逻辑的系统称为**流处理器**。流处理器的基本职责是确保数据有效流动,同时具备可扩展性和容错能力,Storm和Flink就是其代表性的实现。
|
||||
接收和发送数据流并执行应用程序或分析逻辑的系统称为**流处理器**。流处理器的基本职责是确保数据有效流动,同时具备可扩展性和容错能力,Storm 和 Flink 就是其代表性的实现。
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/02_stream_processing_infrastructure.png"/> </div>
|
||||
|
||||
@ -95,4 +95,4 @@ storm和Flink都是真正意义上的实时计算框架。其对比如下:
|
||||
## 参考资料
|
||||
|
||||
1. [What is stream processing?](https://www.ververica.com/what-is-stream-processing)
|
||||
2. [流计算框架Flink与Storm的性能对比](http://bigdata.51cto.com/art/201711/558416.htm)
|
||||
2. [流计算框架 Flink 与 Storm 的性能对比](http://bigdata.51cto.com/art/201711/558416.htm)
|
||||
|
Reference in New Issue
Block a user