栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Flink笔记

Flink笔记

文章目录

Flink简介

是什么?为什么要用?哪些要用流数据?架构演变Flink特点Flink和Spark Streaming的区别 部署

配置Standalone模式Yarn模式

Session-cluster模式Per-Job-Cluster模式 Flink运行时的组件

任务提交流程任务调度原理专业术语

并行度Slots

Flink简介 是什么?

Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数

据流进行状态计算。

为什么要用?
    低延迟(来一个就处理一个)高吞吐(能抵挡大量的数据,需要分布式)结果的准确性和良好的容错性(分布式的话传输过程和数据处理的过程可能会出现乱序;一个挂了之后,回滚到非常近的状态,再跟着处理)
哪些要用流数据?

数据报表广告投放 架构演变

事务处理

用户请求=》后台业务=》查询数据库

优点:实时性好

不足:数据量大后高并发难以支撑

分析处理

先把数据整理放到一个数仓,再进行分析和查询

优点:能支持高并发

不足:实时性不好

有状态的流处理

把数据不放在关系数据库,而放在本地内存,设置一个本地状态,相当于用本地内存中的状态代替了关系数据库中的表。这样的好处就是速度会快很多,在高并发时用集群做扩展。

改进

把数据从查数据库改为直接查内存,放到内存宕机了数据会丢失,所以需要定期去保存数据,(Periodic Checkpoint)出错了可以恢复。这样做好处就是速度快,但是如果在分布式下,数据的处理顺序会出现乱序。

lambda架构

保持低延迟和结果准确用了两套系统:Batch Layer进行批处理,保证了数据的准确性。Speed Layer进行快速处理,保证了低延迟。不足就是用了两套系统,复杂度高,占用系统资源

Flink出现

低延迟高吞吐数据准确不乱序

Flink特点

支持事件时间和处理时间语义精确一次的状态保证低延迟,每秒处理百万个事件,毫秒级延迟与众多常用存储系统的连接高可用,动态扩展,实现7*24小时全天运行

事件驱动

和传统的架构类似,数据到到flink,会在内存中进行处理,同时会定期存盘。当数据处理完后会写入事件日志中。

无界流和有界流

无界流:没有边界,代表数据不断地在产生,是实时的数据。

有界流:有边界,比如离线的数据,不会再产生了。

分层API

表级别的API(简单的操作)数据流级别的API(实时计算时用DataStream,离线用DataSet)事件状态级别的API

Flink和Spark Streaming的区别

底层架构不一样,Flink是以流的方式,Spark Streaming把数据分的很细,但底层还是以批处理的方式。

部署 配置

# jobManager 的IP地址
jobmanager.rpc.address: localhost
# JobManager 的端口号
jobmanager.rpc.port: 6123
# JobManager JVM heap 内存大小
jobmanager.heap.size: 1024m
# TaskManager JVM heap 内存大小
taskmanager.heap.size: 1024m
# 每个 TaskManager 提供的任务 slots 数量大小
taskmanager.numberOfTaskSlots: 1
# 程序默认并行计算的个数
parallelism.default: 1
# 文件系统来源
# fs.default-scheme

Standalone模式

启动:./start-cluster.sh并行度优先级:代码层面>界面配置>默认配置文件配置

用命令方式执行:

…/flink run -c kmoon.zhu.StreamWordCount –p 2

FlinkTutorial-1.0-SNAPSHOT-jar-with-dependencies.jar --host lcoalhost –port 7777

Yarn模式

要求Flink具有Hadoop支持的版本,Hadoop环境要在2.2以上,并且集群中安装有HDFS服务。

Session-cluster模式

需要先启动集群,然后再提交作业。向Yarn请求资源空间后,资源不变。资源满了,其他作业需要等待适合小规模执行时间短的作业所有作业共享Dispatch和ResourceManager

Per-Job-Cluster模式

每个Job对应每个集群

每提交一个作业都会单独向yarn申请资源

作业之间相互不影响

适合大规模长时间运行的作业

所有作业独享Dispatcher和ResourceManager

Flink运行时的组件

作业管理器(JobManager)

让TaskManager干活向管理器(ResourceManage)申请资源协调检查点(checkpoints)进行数据存盘

任务管理器(TaskManager)

负责为JobManager干活一个JobManager负责多个TaskManager,1个TaskManager包含多个插槽,插槽多少个代表并行度多少TaskManager会向资源管理器注册它的插槽,收到资源管理器指令后,TaskManager会把插槽提供给JobManager调用,JobManager就可以向插槽分配任务来执行

资源管理器(ResourceManager)

负责管理插槽(slot),插槽在flink中是最小的处理资源单元。不同的环境和资源管理工具有不同的资源管理器,比如YARN、Mesos、K8s、standalone部署当JobManager申请插槽资源时,如果ResourceManager没有足够的插槽,它则会向资源提供平台发起会话。

分发器Dispatcher)

可以跨作业运行,为应用提供了Rest接口提供WebUI界面,方便展示和监控Flink 任务提交流程

YARN

任务调度原理

怎样进行并行计算?
每一个任务,每一步操作,都可以设置并行度,然后拆成并行的几个task,几个任务,就可以完成并行计算。
设置并行任务,分配到不同的slot上,多线程就可以执行起来。

并行的任务,需要占用多少slot?

一个流处理程序,到底包含多少个任务?

专业术语 并行度

特定算子的子任务的个数整条流Stream的并行度是指当前所有并行度中最大的那个

Slots

执行一个独立任务/线程所需要的最小单元默认按照CPU的核心数来分配资源,每个slots的内存是隔离的,但是CPU可以共享的。TaskManager对应一个进程,Slots对应一个线程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/701666.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号