一文带你了解BAT,TMD都在用的实时计算引擎Flink
截止到11月12日00:00,2020年天猫双十一全球狂欢节结束。整体交易额是4982亿元。在整个双十一中,通过Dashboard实时数据综合股价,可以了解每分钟的成交额、订单数量、爆炸商品、爆炸商品销售地区等。这个Dashboard背后的技术是数据实时计算和流程计算。所谓实时计算,可以得到实时想要的数据。例如,我想查一下今年双十一的购买金额。输入名字和时间后可以马上统计数据。所谓流式计算,就是我每次买都买一个。购买量会自动增加一个,订单金额会自动增加。实时计算和流式计算都是比较离线计算的改善,离线计算有一定的延迟,将数据从记忆中取出进行统计,最后再次出现。我们在双十一成交额的综合股价上看到的是实时计算和流式计算的结合。storm、spark、flink等实现流量计算的技术有很多。Flank是对流数据、批数据进行处理的分布式处理引擎,是有界限的数据(数据量有限制,不变的数据集,例如双十一当日的数据量)、无界限的数据(例如由淘宝用户生成的实时的相互数据,股票市场的实时交易记录)。Flink的架构包括Deploy展开层、Core核心层、API接口层、Lib扩展库层4个层。展开层主要是Flank的配置模式,支持Local的本地化配置,可以在IDE代码编辑器中直接执行程序。也支持聚类配置。使用Kubbergnetes和Hadoop的Yarn来创建集群时间表。也支持云上的配置。通过弹性主机实现自动扩展容量。核心层主要是分布式流处理引擎,支持分布式stream处理,支持从jobgraph到execution的映射时间表,支持上级API接口的任务。API层主要是为开发者提供API的分布式任务,包括数据Set API、数据Stream API两个API,数据Stream API主要用于处理对流数据。这是一个抽象的流数据分布公式的数据流,开发者正在方便地处理分布式数据流。有限的数据抽象分布式的数据集处理。在Lib库层中,主要通过扩展库方式向开发者提供场景,例如CEP复杂事件处理、Table将结构化数据抽象到关系表中,SQL文查询、FlinkML支持机器学习、Gelly库支持图处理。
了解了Flink的基本框架后,Flink的基本编程模式怎么样?在Flank中,主要以三个步骤进行数据输入、数据转换、数据输出,开发者可以通过API接口将数据库数据或自己的本地文件数据或消息队列Kafka的数据传递给Flank,Flank处理引擎可以进行解将数据按时间窗口顺序排序,或按最受欢迎的顺序排序,或按地区汇总等数据,最后请通过Sink。在信息队列或数据大盘中输出数据进行展示。
在Flank的处理引擎中,数据是这样流动的。开发者创建Fink应用程序代码,通过Celient转发给JobManager。JobManager是Flank的主节点。在Task Manager上执行任务的安排。同时管理Task Manager节点的调度状况。点。Taskmanager主要接受JobManager的任务。一个Taskmanager占用了JVM内存。TaskManager还包含Tasky Slot的概念。为了管理内存分配,一个Slot表示其分配100%的内存空间。两个表示各分配50%的空间。每个Slot占用一个线程,具体执行任务。
在DevOps工程师文化、Kubergnetes容器技术盛行的互联网上,Flank也可以进行同样的工作。特别是在大工厂,基本上是这样的架构运行原理。开发者创建Flank任务代码,通过Gight的push事件提交代码,触发对应的Jenkins集群,在Kubbergnetes上配备JobManager、Tasmanager,JobManager和TaskyManager占据一个以上POD,实现自动弹性伸缩,开发者和操作员基于Kubbergnets也可以根据需要管理Flank系统。
本文介绍了Flink的基本架构、编程模型和运行原理。还有很多应用场景。我们抽象地从3次元看。1、基于事件驱动,开发者收集的事件将不断地放入消息队列,Flank将不断地进行信息队列数据消耗,每消耗一个数据就会触发一个动作。基于欺诈检测、异常检测、规则警告、业务流程监视可使用此特性。2、分析场景。开发者将数据实时或周期性地写入消息队列,Flink不断地实时计算应用源数据,更新数据库或HFS,最后在大屏幕上创建展示或数据报告,并举例说明例如,双十一DashBoard;3、将管路ETL即数据提取到数据库或文件系统。下图是Flink在阿里巴巴内部的主要应用场景。
除了蚂蚁以外,在百度、腾讯、美团、滴滴、头条、京东、拼多等公司,Flink的应用也非常普及。在网络流量王时代,需要基于大数据的离线分析、实时分析,数据开发工程师的报酬也非常高,要掌握Flank的基本使用知识,需要一定的技能。如果对大数据开发有兴趣的话,就早点学习Flank吧。