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

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

批处理架构(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. Polly 熔断策略

    熔断策略主要以 CircuitBreaker 来完成. 工作原理 熔断器可以被看作为一个主要含有三个状态的状态机 如果以电路开关来看: 开关闭合对应 CLOSED 状态, 开关打开对应 OPEN 状态 ...

  2. 容器中的诊断与分析3——live diagnosis——lldb

    windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg .net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分析呢?今天介 ...

  3. mysql查询表是否存在

    查询表是否存在 SHOW TABLES LIKE "表名" tp5查询表是否存在 Db::query('SHOW TABLES LIKE "表名"');

  4. Python玩转Arduino——简单介绍

    关于Python语言的介绍安装请参考廖雪峰的Python教程 Python是一门解释型语言,虽然不能够像c语言一样编译上传到Arduino--什么你说MicroPython,我们再说Arduino呢- ...

  5. Oracle 创建,查询,删除 job

    一 . 创建job 1. 通过创建存储过程的方式创建job 调用该存储过程使其开始执行  call PRO_DSJ_XJTJ_JOB(); create or replace procedure PR ...

  6. HADOOP高可用机制

    HADOOP高可用机制 HA运作机制 什么是HA HADOOP如何实现HA HDFS-HA详解 HA集群搭建 目标: 掌握分布式系统中HA机制的思想 掌握HADOOP内置HA的运作机制 掌握HADOO ...

  7. poj3162

    这题卡常数了,nlogn链式前向星过了,用vector的O(n)没过. #include <iostream> #include <cstdio> #include <c ...

  8. MVC与MVVM关系图解

  9. JSON的新方法--parse()和stringify()

    // eval 可以解析任何字符串变成js var str = 'function show() {console.log(1)}'; eval(str); show(); // parse 只能解析 ...

  10. vmware虚拟机安装vmware tools

    为了在主机与虚拟机之间共享文件,需要安装vmware tools.在安装vmware tools的过程中遇到了几个坑,在此记录一下. 一.虚拟机关机情况下进行设置.虚拟机->设置->CD/ ...