1.定义
核心是用java和scala编写的框架和分布式处理引擎java api scala api,用于对无界(实时流数据)和有界数据流(离线数据也称为批量数据处理)进行有状态计算
2.数据过程
处理数据过程抽象为三个过程:source ->Transform -> Sink
3.架构设计
4.相关术语
物理部署层-deploy层:负责解决Flink的部署模式问题, Runtime核心层:是Flink分布式计算框架的核心实现层,负责对上层不同接口提供基础服务。将DataStream和DataSet转成统一的可执行的Task Operator,达到在流式计算引擎下同时处理批量计算和流式计算的目的 API & Libraries层:负责更好的开发用户体验,包括易用性、开发效率、执行效率、状态管理等方面,Flink同时提供了支撑流计算和批处理的接口,同时在这基础上抽象出不同的应用类型的组件库,
5.运行模式
三种运行模式区分点:集群生命周期和资源隔离保证,应用程序的main()方法是在客户端还是在集群上执行 本地运行模式::一个机器启动一个进程的多线程来模拟分布式计算。 standalone模式:运行过程:完全独立的Flink集群的模式,各个环节均Flink自己搞定。并没有yarn、mesos的统一资源调度平台。 集群运行模式:Flink Session 集群(会话模式)、Flink Job 集群(per-job模式)、Flink Application 集群(应用模式) 三种运行模式: Flink Session 集群(会话模式): 集群生命周期:在 Flink Session 集群中,客户端连接到一个预先存在的、长期运行的集群,该集群可以接受多个作业提交。 资源隔离:TaskManager slot 由 ResourceManager 在提交作业时分配,并在作业完成时释放。如果 TaskManager 崩溃,则在此 TaskManager 上运行 task 的所有作业都将失败,隔离性差。
Flink Job 集群(per-job模式): 集群生命周期:在这里客户端首先从集群管理器请求资源启动 JobManager,然后将作业提交给在这个进程中运行的 Dispatcher。然后根据作业的资源请求惰性的分配 TaskManager。一旦作业完成,Flink Job 集群将被拆除。 资源隔离:JobManager 中的致命错误仅影响在 Flink Job 集群中运行的一个作业 工作流程说明:多个不同的FlinkJob向各自由统一资源管理器(Yarn)生成的专用Flink Session会话上提交作业,由作业所属的FlinkSession管理自己的Flink作业。
Flink Application 集群(应用模式): 集群生命周期:集群是与Flink作业执行直接相关的运行模式,并且 main()方法在集群上而不是客户端上运行。 提交作业是单步骤过程: 无需先启动 Flink 集群,然后将作业提交到现有的 session 集群。 而是,将应用程序逻辑和依赖打包成一个可执行的作业 JAR 中,由入口机客户端提交jar包和相关资源到hdfs当中。 然后由调度启动的集群当中JobManager来拉取已由上一步上传完成的运行代码所需要的所有资源。如果有JobManager HA设置的话,将会同时启动多个JobManager作HA保障,此时将面临JobManager的选择,最终由一个胜出的JobManager作为Active进程推进下边的执行。 并由运行JobManager进程的集群入口点节点机器,负责调用 main()方法来提取 JobGraph,即作为用户程序的解析和提交的客户端程序与集群进行交互,直到作业运行完成。 另外,如果一个main()方法中有多个env.execute()/executeAsync()调用,在Application模式下,这些作业会被视为属于同一个应用,在同一个集群中执行 该模式也允许我们像在 Kubernetes 上部署任何其他应用程序一样部署 Flink 应用程序。 资源隔离:在 Flink Application 集群中,ResourceManager 和 Dispatcher 作用于单个的 Flink 应用程序,相比于 Flink Session 集群,它提供了更好的隔离。 总结: 本地布署模式:demo、代码测试场景。 Session模式:集群资源充分、频繁任务提交、小作业居多、实时性要求高的场景。(该模式较少) Per-Job模式:作业少、大作业、实时性要求低的场景。 Application模式:实时性要求不太高、安全性有一定要求均可以使用,普遍适用性最强
6.运行流程
由两种类型的进程组成,一个 JobManager 和一个或者多个 TaskManager。
7.yarn模式提交任务的工作流程
|