最近在学习flink相关的知识,数据加智能持续看好,也是接下来自己的重点。 开始记录自己的学习过程,希望可以坚持下来。 言归正传,本篇内容主要讲三块,一块是flink是什么,第二块是flink可以用来干什么,第三块是flink的整体技术架构。 一、flink是什么 这里我们取自flink官网的定义,flink是一个针对数据流和批处理数据的分布式处理计算引擎和框架。被设计成支持内存计算和运行在常用的集群环境,并具备扩展性。 二、flink应用场景 1、实时数据存储:微聚合、过滤,数据脱敏,组建数据仓库 2、实时数据分析:引入机器学习框架动态给出商品推荐广告推荐 3、实时数据报表:大屏TOPN商品 4、实时监控告警:风控、车流量预警、服务器监控告警、应用日志告警等 三、flink技术架构 flink的核心技术架构主要由下面三部分组成,Deploy(Local、Cluster)、Core(Runtime)、APISLibraries(DataStream、DataSet、CEP),具体如下图 flink技术架构 从下至上: 1、部署:flink支持本地运行、独立集群(Standalone)或者YARN、Mesos、K8s管理的机器上,也能部署在云上。 2、运行:Flink的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理。 3、API:DataStream、DataSet、Table、SQLAPI 4、扩展库:CEP(复杂事件处理)、机器学习、图形处理等场景 分布式运行的关键组件 1、ProgramCode:flink的应用程序代码 2、JobClient:任务执行的起点负责接受用户的程序代码创建数据流将数据流提交给jobmanager以便进一步执行执行完成后将结果返回给用户 3、JobManager:主进程(作业管理器)协调和管理程序的执行;主要职责(安排任务 、管理checkpoint、故障恢复) 4、TaskManager:从JobManager处接收需要部署的T主要职责(在jvm中一个或多个线程中执行任务的工作节点、任务并行性由TaskManager上可用的插槽数(Slot)决定,一个Slot代表一个线程) 资料来源: 大数据实时计算引擎Flink实战与性能优化专栏 ApacheFlink:WhatisApacheFlink?Architecture