Flink系列之流式

本文仅是自己看书、学习过程中的个人总结,刚接触流式,视野面比较窄,不喜勿喷,欢迎评论交流。



1、为什么是流式?

  为什么是流式而不是流式系统这样的词语?流式系统在我的印象中是相对批处理系统而言的,用来处理流数据,实现数据处理功能的一个系统,而流式一词提醒我要以数据产生的方式去看待数据和以及处理过程,即在现实生活中,数据是以流的形式不断产生的,处理的过程应贴近数据产生的方式。

2、流与批

  在处理数据时,对数据而言有:无界和有界之分。无界可以理解为不知道数据产生的停止时间,在数学上可以用前闭后开( [ ) )的一个区间表示;有界则可以对应的理解为一个闭区间,即知道数据产生的起、止时间。其实这里的有界和无界也只是一个相对概念,某一时间段数据还在产生,则可以认为是无界的。

  在过去进行大规模数据分析时,是以批量的形式收集和分析数据的。什么意思了?就是收集一段时间内的数据或者一定量的数据了拿去分析,统一返回一个结果后,然后处理下一批的数据,每次处理的是有界数据,比如每天都处理前一天的数据,对数据进行分析后应用到各种场景中。在这个过程涉及到了数据的抽取、转换、加载(ETL)了,且该过程中需要人为的干预,才能连续的执行。从之前的描述其实就可以了解到,在批处理中,当我们面临立马得到数据处理结果的场景时,是有点束手无策的。与批处理相对应的是流处理,流处理可以理解是拿到数据后立马处理然后返回一个结果,当然也可以返回一个结果集。目前流处理主要应用在有实时需求的场景中,比如数据的实时监控、天猫的双十一不停刷新成交金额等等。

  关于流过程和批过程的区别,在《流式架构》一书中有这样的一段话,比较好理解:


将数据比作水,批过程和流过程分别相当于用桶装水后交付给用户以及用水管让水流向用户。可以在水管上加个阀门,关闭水龙头的时候水流被周期性截断。有了水管和阀门,用户就可以选择截断水还是让水继续流--能够同时应对两种交付方式。反之,即使使用桶运水的速度足够快,这种桶(批)的交付也永远不可能是连续的。

3、流处理工具简介

  那既然以流的方式处理数据更贴合数据的产生本质,那为什么要需要批处理?其实对于这个问题我目前也不是很清楚,据了解,在技术的发展过程,流处理的难度更大,更多原因后期会以专门的一小节补上,借用一句名言对付此刻的自己:存在即合理。哈哈!(换句话说,我就是不懂)

  目前用于流处理的工具,我了解的右storm、sparkstreaming、flink,关于三者的区别,大伙都是可以百度得到的。此外,虽然都是用于流处理,sparkstreaming,是用桶装水给用户,Flink则感觉是修水管。

  Flink号称是目前唯一实现高并发、高性能、低延时的开源组件,也想解决目前Lambada架构带来的一些维护、开发困难等问题,其具有很多优点也是该系列博客的主角,在这里我就不提了,后面会重点的分析。

  最后需要说一点的是,流处理工具功能的实现,其实离不开消息系统的如kafka、MapR Stream所具备的持久性、容错性、生产消费解耦等诸多优点。

原文地址:https://www.cnblogs.com/love-yh/p/11123882.html

时间: 2024-10-05 09:41:55

Flink系列之流式的相关文章

「Flink」理解流式处理重要概念

什么是流式处理呢? 这个问题其实我们大部分时候是没有考虑过的,大多数,我们是把流式处理和实时计算放在一起来说的.我们先来了解下,什么是数据流. 数据流(事件流) 数据流是无边界数据集的抽象 我们之前接触的数据处理,大多都都是有界的.例如:处理某天的数据.某个季度的数据等 无界意味着数据是无限地.持续增长的 数据流会随着时间的推移,源源不断地加入进来 数据流无处不再 信息卡交易 电商购物 快递 网络交换机的流向数据 设备传感器发出的数据 - 这些数据都是无穷无尽的 每一件事情,都可以看成事件序列

Demo:基于 Flink SQL 构建流式应用

Flink 1.10.0 于近期刚发布,释放了许多令人激动的新特性.尤其是 Flink SQL 模块,发展速度非常快,因此本文特意从实践的角度出发,带领大家一起探索使用 Flink SQL 如何快速构建流式应用. 本文将基于 Kafka, MySQL, Elasticsearch, Kibana,使用 Flink SQL 构建一个电商用户行为的实时分析应用.本文所有的实战演练都将在 Flink SQL CLI 上执行,全程只涉及 SQL 纯文本,无需一行 Java/Scala 代码,无需安装 I

奇点云数据中台技术汇(四)| DataSimba系列之流式计算

你是否有过这样的念头:如果能立刻马上看到我想要的数据,我就能更好地决策? 市场变化越来越快,企业对于数据及时性的需求,也越来越大,另一方面,当下数据容量呈几何倍暴增,数据的价值在其产生之后,也将随着时间的流逝,逐渐降低.因此,我们最好在事件发生之后,迅速对其进行有效处理,实时,快速地处理新产生的数据,帮助企业快速地进行异常管理和有效决策,而不是待数据存储在一起之后,再进行批量处理. 一:sparkStreaming+hbase整合应用,助力企业实时运营监控 对于不作更新的数据,可以通过datax

数据中台技术汇 | DataSimba系列之流式计算

你是否有过这样的念头:如果能立刻马上看到我想要的数据,我就能更好地决策? 市场变化越来越快,企业对于数据及时性的需求,也越来越大,另一方面,当下数据容量呈几何倍暴增,数据的价值在其产生之后,也将随着时间的流逝,逐渐降低.因此,我们最好在事件发生之后,迅速对其进行有效处理,实时,快速地处理新产生的数据,帮助企业快速地进行异常管理和有效决策,而不是待数据存储在一起之后,再进行批量处理. 一:sparkStreaming+hbase整合应用,助力企业实时运营监控 对于不作更新的数据,可以通过datax

流式计算(五)-Flink核心概念

一手资料,完全来自官网,直接参考英文过来的,并加了一些自己的理解,希望能让看官君了解点什么,足矣. 环境:Flink1.9.1 难度:新手--战士--老兵--大师 目标: 理解Flink的计算模型 认识各重要组件 说明: 本篇作为前两篇的补充内容,算是理论篇 步骤: 01-Flink编程模型 Flink的流计算整体来看都是按照Source -> Transformation -> Sink三步走,即获取流源 -> 进行转换 -> 汇聚(Sink),但“转换 (Transformat

从零开始搭建django前后端分离项目 系列五(实战之excel流式导出)

项目中有一处功能需求是:需要在历史数据查询页面进行查询字段的选择,然后由后台数据库动态生成对应的excel表格并下载到本地. 如果文件较小,解决办法是先将要传送的内容全生成在内存中,然后再一次性传入Response对象中: 如果文件较大时,我们可以考虑向HttpResponse传递一个迭代器,流式的向客户端传递数据. view.py视图 @csrf_exempt def exportData(request): format = request.GET.get('format') pk = re

流式处理框架对比

分布式流处理是对无边界数据集进行连续不断的处理.聚合和分析的过程,与MapReduce一样是一种通用计算框架,期望延迟在毫秒或者秒级别.这类系统一般采用有向无环图(DAG).DAG是任务链的图形化表示,用它来描述流处理作业的拓扑.在选择不同的流处理系统时,通常会关注以下几点: 运行时和编程模型:平台框架提供的编程模型决定了许多特色功能,编程模型要足够处理各种应用场景. 函数式原语:流处理平台应该能提供丰富的功能函数,比如,map或者filter这类易扩展.处理单条信息的函数;处理多条信息的函数a

流式计算(一)-Java8Stream

大约各位看官君多少也听说了Storm/Spark/Flink,这些都是大数据流式处理框架.如果一条手机组装流水线上不同的人做不同的事,有的装电池,有的装屏幕,直到最后完成,这就是典型的流式处理.如果手机组装是先全部装完电池,再交给装屏幕的组,直到完成,这就是旧式的集合式处理.今天,就来先说说JDK8中的流,虽然不是很个特新鲜的话题,但是一个很好的开始,因为——思想往往比细节重要! 准备: Idea2019.03/Gradle5.6.2/JDK11.0.4/Lambda 难度:新手--战士--老兵

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的