数据架构设计领域发生了重大的变化,基于流的处理是变化的核心。

分布式文件系统用来存储不经常更新的数据,他们也是大规模批量计算所以来的数据存储方式。

批处理架构(lambda架构)实现计数的方式:持续摄取数据的管道(flume)每小时创建一个文件,由调度程序安排批处理作业分析最近生成的文件,然后输出计数结果。

该架构缺点:1.组件多,设计管道、调度、作业程序,学习成本、管理成本大 2.修改分析时间周期不方便,涉及工作流调度逻辑 3.实现计数预警功能需要引入流处理系统,流处理做近似计算,批处理做准确计数。4.事件可能是乱序的,上一批事件可能混入当前批次。

5.事件窗口是短板,不灵活。例如不能满足登录登出计数的需求。

flink可以同时满足计数和预警的功能,flink速度减慢只会导致数据在传输系统如kafka中堆积。

flink以时间为单位把事件流分割为一个个任务(称为窗口)。

由固定时间分组改为根据事件产生的时间分组,只需要在flink中修改时间窗口的定义即可。

如果flink的代码有改动,只需要重播kafka主题。

和lambda架构相比,flink不需要以时间为单位生成额外的文件,同时时间的定义被代码明确定义。而不是摄取,调度,计算扯不清。

时间的概念:事件时间(时间发生的时候),处理时间(事件被处理的时间),摄入时间(进入流处理系统的时间)。很多情况下事件时间和处理时间是不一致的,即事件以乱序的方式进入系统。

有些需求要求尽快处理得到结果,即使有小的误差也无所谓,这种场景适合采用处理时间。

有些需求要求只是统计特定时间发生的事件,这种场景适合采用事件时间。

flink支持的窗口:

时间窗口:flink支持2种时间窗口:滚动时间窗口(没周期),滑动时间窗口(每周期,滑动步长值)

计数窗口:分组依据不再是时间窗口,而是根据元素的数量。同时也支持滚动和滑动2种方式。计数窗口需要谨慎使用,场景如下:假设事件窗口大小是100,达到90后事件停止,则窗口永远不能关闭,该窗口占用的内存也浪费了。一种解决方式是通过超时触发。

会话窗口:会话窗口是指活动阶段,其前后都有非活动阶段。在flink种,会话窗口由超时时间决定,即希望多久认为会话已经结束。

触发器:触发器控制生成结果的时间,即核实聚合窗口内容并返回给用户。(收到水印触发,自定义触发*1秒1次*)

编程模型:

maven:mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.6.0 -DgroupId=com.test -DartifactId=flink -Dversion=1.0.0 -Dpackage=com.test -DinteractiveMode=false

flink基础教程读书笔记的更多相关文章

  1. SQL Server2012 T-SQL基础教程--读书笔记(1-4章)

    SQL Server2012 T-SQL基础教程--读书笔记(1-4章) SqlServer T-SQL 示例数据库:点我 Chapter 01 T-SQL 查询和编程背景 1.3 创建表和定义数据的 ...

  2. SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

    SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...

  3. SQL Server2012 T-SQL基础教程--读书笔记(5-7章)

    SQL Server2012 T-SQL基础教程--读书笔记(5-7章) SqlServer T-SQL 示例数据库:点我 Chapter 05 表表达式 5.1 派生表 5.1.1 分配列别名 5. ...

  4. 【索引】Objective-C基础教程-读书笔记

    第1章 启程 http://www.cnblogs.com/duxiuxing/p/5492219.html 第2章 对C的扩展 第3章  面向对象编程的基础知识 第4章 继承 第5章 复合 第6章 ...

  5. SQL基础教程读书笔记-1

    查询基础 2.2 算数运算符和比较运算符 2.2.1算数运算符 + - * / 需要注意NULL 5 + NULL 10 - NULL 1 * NULL 4 / NULL NULL / 9 NULL ...

  6. 《Python基础教程读书笔记》

    第1章 快速构造:基础知识 1.2交互式构造器 不强制分号,一行就是一行.可以加上分号 1.4数字和表达式 加.减.乘.除.整除.求余.指数.取反(-例如-2**2,**的优先级比-大) from _ ...

  7. 【Objective-C基础教程-读书笔记】第1章 启程

    在第1章里面,作者主要以一种站在世界中心呼唤爱的姿态,给读者们打打鸡血洗洗脑,鼓励大家,投入时间学习Objective-C,值得啊! 首先,Objective-C既能用来开发OS X平台上的APP,又 ...

  8. Objective-C基础教程读书笔记(6)

    第6章 源文件组织 到目前为止,我们讨论过的所有项目都是把源代码统统放入main.m文件中.类的main()函数,@interface和@implementation部分都被塞入同一个文件里.这种结构 ...

  9. Objective-C基础教程读书笔记(7)

    第7章 深入了解Xcode Xcode是一个很好用的工具,有很多强大的功能,不过并不是所有的功能都易于发现.如果你打算长期使用这个强大的工具,就肯定要尽可能多了解它.本章将介绍一些Xcode编辑器的使 ...

随机推荐

  1. 【新特性】JDK11

    随着JDK11正式发布,带来了许多新的特性.本文主要介绍JDK11的部分新特性和新的API. 一.Local Var 在Lambda表达式中,可以使用var关键字来标识变量,变量类型由编译器自行推断. ...

  2. javascript 之 面向对象【继承】

    继承:函数没有签名,无法实现接口继承.ECMAScript只支持实现继承 1/原型链 回顾:构造函数.原型和实例的关系? 回:每个构造函数都有一个原型对象.原型对象都包含一个指向构造函数的指针.实例都 ...

  3. [Java]先有Class还是先有Object?

    先有鸡还是先有蛋 这个问题让我想到了一个古老的问题,先有鸡还是先有蛋. 回到本题 下面让我们详细看一下这个问题: 在Java的对象模型中: 所有的类都是Class类的实例,Object是类,那么Obj ...

  4. Django使用redis实现缓存

    实现缓存的方式,有多种:本地内存缓存,数据库缓存,文件系统缓存.这里介绍使用Redis数据库进行缓存. 配置 CACHES = { "default": { "BACKE ...

  5. 【python 3】 字符串方法操作汇总

    基础数据类型:str 1.1  字符串大小写转换 所有字母大写 : string.upper() 所有字母小写 : string. lower() 第一个单词的第一个字母大写,其他字母小写 :  st ...

  6. krpano生成全景图

    1.下载krpano工具 第一次我下载的有水印,但是第二次下载的便没了,原因我也不清楚.下载好后不要急着打开.exe程序 2.生成全景图 将全景图拖入MAKE VTUOR (NORMAL) DROPL ...

  7. 爬虫学习笔记(1)-- 利用Python从网页抓取数据

    最近想从一个网站上下载资源,懒得一个个的点击下载了,想写一个爬虫把程序全部下载下来,在这里做一个简单的记录 Python的基础语法在这里就不多做叙述了,黑马程序员上有一个基础的视频教学,可以跟着学习一 ...

  8. ERROR:scala:Error:Object scala.runtime in compiler mirror not found

    我的项目是sbt项目,今天早晨的时候还好好的,结果中午吃了个饭回来就特么的编译就报错了,真是闹心 报错截图: 解决方案: 删除idea的缓存文件 然后重新启动idea,重新下载jia包,在进行编译,就 ...

  9. 8.2 GOF设计模式一: 单实例模式 SingleTon

    GOF设计模式一: 单实例模式 SingleTon  整个美国,只有一个“现任美国总统”  比如,在学校,“老师”,有数百个:“校长”,只有一个  系统运行时,如何保证某个类只允许实例化一个对象 ...

  10. CycleGan论文笔记

    原文地址:https://arxiv.org/abs/1703.10593 背景——风格迁移 图片生成领域是GAN网络的天下,最近很多人将GAN网络应用到了图像风格迁移领域.这篇论文也是做image ...