批计算与流式计算,本质上就是对有界流和无界流的计算

YY-批计算
针对有界流;由于在产出计算结果前可以看到整个(完整)数据集,因而如下计算都可以实现:对数据排序,计算全局统计值,对输入数据的整体产出最终汇总聚合报表;
YY-流计算
针对无界流;由于永远无法看到输入数据的整体(数据的输入永远无法结束),只能每逢数据到达就进行计算,并输出"当时"的计算结果(因而计算结果也不会是一个一次性的最终结果,而是源源不断的无界的结果流);
一个分布式、有状态的实时流式处理系统(编程框架)

flink,主要使用java语言开发而成,但对用户提供了java、scala、python编程api flink,以流处理方式作为基础的世界观,并通过引入有界流来实现批计算,从而实现流批一体
YY-核心架构角色

YY-Flink 集群采取 Master - Slave 架构:
YY-各角色主要职责说明
(1)Client Flink
客户端是 F1ink 提供的 CLI 命令行工具,用来提交 Flink 作业到 Flink 集群,在客户端中负责 StreamGraph (流图)和 Job Graph (作业图)的构建。
(2)JobManager
JobManager根据并行度将Flink客户端提交的Flink应用分解为子任务,从资源管理器 ResourceManager 申请所需的计算资源,资源具备之后,开始分发任务到TaskManager 执行 Task,并负责应用容错,跟踪作业的执行状态,发现异常则恢复作业等。
(3)TaskManager
TaskManager 接收 JobManage 分发的子任务,根据自身的资源情况 管理子任务的启动、 停止、销毁、异常恢复等生命周期阶段。Flink 程序中必须有一个TaskManager。
YY-适用于几乎所有的流式数据处理场景

YY-自带状态管理机制

YY-强大的准确性保证
YY-灵活丰富的多层api

YY-规模弹性扩展

算子粒度的独立并行度灵活配置(集群槽位资源可扩展,算子任务实例可扩展)
YY- 强大的运维能力
YY-优秀的性能