From 7e666632222474cc2f767d4124f56c15bce35265 Mon Sep 17 00:00:00 2001 From: luoxiang <2806718453@qq.com> Date: Mon, 15 Apr 2019 22:56:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E5=A4=84=E7=90=86=E7=AE=80=E4=BB=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/流处理.md | 39 ++++++++++++++++++ pictures/01_data_at_rest_infrastructure.png | Bin 0 -> 24900 bytes .../02_stream_processing_infrastructure.png | Bin 0 -> 17202 bytes 3 files changed, 39 insertions(+) create mode 100644 notes/流处理.md create mode 100644 pictures/01_data_at_rest_infrastructure.png create mode 100644 pictures/02_stream_processing_infrastructure.png diff --git a/notes/流处理.md b/notes/流处理.md new file mode 100644 index 0000000..ec7a1c2 --- /dev/null +++ b/notes/流处理.md @@ -0,0 +1,39 @@ +## 二、流处理 + +### 2.1 静态数据架构 + +在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中。应用程序根据需要查询数据或计算数据。这就是传统的静态数据处理架构。Hadoop采用HDFS进行数据存储,采用MapReduce进行数据查询或分析,这就是典型的静态数据处理架构。 + +![01_data_at_rest_infrastructure](D:\BigData-Notes\pictures\01_data_at_rest_infrastructure.png) + + + +### 2.2 流处理 + +而流处理则是直接对运动中的数据的处理,在接收数据时直接计算数据。 + +大多数数据都是连续的流:传感器事件,网站上的用户活动,金融交易等等 ,所有这些数据都是随着时间的推移而创建的。 + +接收和发送数据流并执行应用程序或分析逻辑的系统称为**流处理器**。流处理器的基本职责是确保数据有效流动,同时具备可扩展性和容错能力,Storm和Flink就是其代表性的实现。 + +![02_stream_processing_infrastructure](D:\BigData-Notes\pictures\02_stream_processing_infrastructure.png) + + + +流处理带来了静态数据处理所不具备的众多优点: + + + +- **应用程序立即对数据做出反应**:降低了数据的滞后性,使得数据更具有时效性,更能反映对未来的预期; + +- **流处理可以处理更大的数据量:**直接处理数据流,并且只保留数据中有意义的子集,并将其传送到下一个处理单元,逐级过滤数据,降低需要处理的数据量,从而能够承受更大的数据量; + +- **流处理更贴近现实的数据模型**:在实际的环境中,一切数据都是持续变化的,要想能够通过过去的数据推断未来的趋势,必须保证数据的不断输入和模型的不断修正,典型的就是金融市场、股票市场,流处理能更好的应对这些数据的连续性的特征和及时性的需求; + +- **流处理分散和分离基础设施:**流式处理减少了对大型数据库的需求。相反,每个流处理程序通过流处理框架维护了自己的数据和状态,这使得流处理程序更适合微服务架构。 + + + +## 参考资料 + +1. [What is stream processing?](https://www.ververica.com/what-is-stream-processing) \ No newline at end of file diff --git a/pictures/01_data_at_rest_infrastructure.png b/pictures/01_data_at_rest_infrastructure.png new file mode 100644 index 0000000000000000000000000000000000000000..af3d2ece0e85587da961e4d4382ae7b6a031c7cc GIT binary patch literal 24900 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 s{@KO9>FvKs{xH0+=J3(v%T96F7*7AXN<=0qGs2 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 literal 0 HcmV?d00001