Flink-core小总结

Flink-core小总结

1. 实时计算和离线计算

1.1 离线计算

  • 离线计算的处理数据是固定的
  • 离线计算是有延时的,T+1
  • 离线计算是数据处理完输出结果,只是输出最终结果
  • 离线计算相对可以处理复杂的计算

1.2 实时计算

  • 实时计算是实时的处理数据,数据从流入到计算出结果延迟低
  • 实时计算是输出连续的结果
  • 做的计算相对来讲比较简单

1.3 数据时效性越高,价值就越高

2. flink和sparkstreaming

2.1sprk streaming

  • 微批处理,一次处理少量的数据
  • 时间驱动,每隔一段时间计算一次
  • 底层是MapReduce模型,现执行map端,后执行reduce端,优点就是可以在map端做预聚合,缺点就是延迟高
  • 粗粒度的资源调度
  • 实时处理,每一条数据处理一次
  • 事件驱动,每条数据处理一次
  • 底层是持续流模型,上游task和下游task同时启动一起运行,等待数据流入
  • 粗粒度资源调度
  • flink的功能更强大,窗口,事件时间,状态,sql api,cep

3. flink代码

3.1 source

读取文件,读取socket,基于集合,自定义source(SourceFunction|KafkaSource),kafkaSource

3.2 transformation算子

map,flatmap.filter,union,key

  1. 可以用于DataStream
  2. 可以用于keyBy之后,可以对于同一个可key的数据做处理
  3. 可以用于window之后,可以对一个窗口内地数据做处理

3.3 sink

print,写入文件,写入socket(测试),自定义sink(SinkFunction,Rich function),kafkaSink

4. 架构

4.1 jobManager

  • 将task发送到taskmanager中执行
  • 监控taskmanager的状态,task的状态
  • 定时触发任务的checkpoint

4.2 taskManager

  • 执行task
  • 将数据发送到下游的task
  • 构建数据流程图,将任务提交到jobManager中

5. 环境搭建

5.1 local

5.2 独立集群

  • 为flink搭建一个独立的集群,和hadoop没关系,但是公司中一般已经有了yarn资源调度框架,不需要搞两个资源调度框架
  • application-为每一个任务单独在yarn中启动一个flink的集群(jobmanager,taskmanager),数据流程图在jobmanager中构建

  • per job-为每个任务单独在yarn中启动一个flink集群(jobmanager,taskmanager),数据流程图在本地中构建

    在提交到jobmanager

  • yarn session-现在yarn集群中启动一个flink的集群(jobmanager),所有的使用session模式提交的任务共用一个jobmanager,但是任务之间会有影响,一般用于测试。在提交任务的时候在动态的申请taskmanager,任务结束后就会释放taskmanager。提交方式:页面提交,命令行提交,远程rpc提交

6. 并行度

6.1 共享资源

  • flink不是每一个task占用一个资源,而是一个并行度占用一个资源
  • 上游和下游的task可以共享一个slot

6.2 并行度的设置

  • 每一个算子单独设置,优先级最高
  • 在env中统一设置
  • 提交任务的时候试着,优先级最低(推荐使用)

7. 事件时间

  1. 数据中自带了一个时间
  2. 使用数据中的时间字段进行计算,可以反应数据真实发生的情况
  3. 使用事件时间存在乱序的解决办法:flink通过将水位线前移,避免数据乱序导致数据丢失

8. 窗口

8.1 时间窗口

  • 滑动的处理时间窗口
  • 滑动的事件时间窗口
  • 滚动的处理时间窗口
  • 滚动的事件时间窗口

8.2 会话窗口

  • 处理时间的会话时间窗口
  • 事件时间的的会话时间窗口

8.3 统计窗口

  • 滑动的统计窗口
  • 滚动的统计窗口

9. checkpoint

checkpoint时flink的容错机制

flink通过checkpoint将计算过程的状态持久化到外部系统中,如果任务执行失败,可以从checkpoint的位置恢复保证数据的完整性

checkpoint流程:

  • Jobmanager会定时的向source task 发送trigger
  • source task 在数据流中安插barrier
  • source task 将barrier 向下游传递,同时自己会同步做快照,并异步将状态持久化到hdfs中
  • 将下游task收到上游所有的实例的barrier后就会作快照
  • 当所有的task处理完同一次的checkpoint之后,一次checkpoint完成
  • jobmanager会删除掉旧的checkpoint文件,保留最新的

10. state状态

可以理解为flink计算过程中产生的中间结果

  • valueState
  • listState
  • mapState
  • reducingState aggState

状态会被checkpoint持久滑倒hdfs中,如果任务执行失败,还可以挥复

11. exactly once

11.1 kafka端

  • kafka的副本机制,每一个分区有多个副本,可以保证数据不会丢失

  • 生产者的等幂性,同一条数据由于各种原因重试多次,不会导致数据的重复

  • ack机制

    1. acks=0, 生产者只负责生产数据,不管kafka是否保存成功, 会丢失数据,生产效率高

    2. acks=1 (默认),生产者会等待第一个副本数据保存成功,再返回数据发生成功,如果这个时间第-个副本所在的节点挂了,会导致数据丢失

    3. acks=-1, 生产者需要等待所有的副本数据都保存成功才返回成功,不会丢失数据,效率低

      事务

    11.2 flink消费端

    • flink会将kafka的消费偏移量和中间计算结果保存在状态中,如果任务执行失败,可以恢复,在进行聚合计算的情况下,可以保证数据的最终一致性
    • 如果作数据的清洗过滤,会出现重复的数据
    • 为了解决清洗过滤任务中的出现数据重复出现的问题,flink在sink到Kafka的时候可以开启事务
    • 在上次checkpoint完成之后开启事务,在一次checkpoint完成之后提交事务,事务未提交不会出现重复
    • 但是会增加数据的延迟

原文地址:https://www.cnblogs.com/atao-BigData/p/16530848.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Flink-core小总结1.实时计算和离线计算1.1离线计算离线计算的处理数据是固定的离线计算是有延时的,T+1离线计算是数据处理完输出结果,只是输出最终结果离线计算相对可以处理复杂的计算1.2实时计算实时计算是实时的处理数据,数据从流入到计算出结果延迟低实时计算是输
2022年7月26日,Taier1.2版本正式发布!本次版本发布更新功能:新增工作流新增OceanBaseSQL新增Flinkjar任务数据同步、实时采集支持脏数据管理HiveUDF控制台UI升级租户绑定简化新版本的使用文档已在社区中推送,大家可以随时下载查阅,欢迎大家体验新版本功能
关于Flink相关的概念性东西就不说了,网上都有,官网也很详尽。本文主要记录一下Java使用Flink的简单例子。首先,去官网下载Flink的zip包(链接就不提供了,你已经是个成熟的程序员了,该有一定的搜索能力了),解压后放到你想放的地方。进入主目录后,是这样子的 image.png你可以简
最近准备用flink对之前项目进行重构,这是一个有挑战(但我很喜欢)的工作。几个月过去了,flink社区比起我做技术调研那阵发生了很多变化(包括blink的版本回推),我这边的版本也由1.4->1.7.2。现在网上有很多大方向的解析(阿里的几次直播),也有大神对框架的深入解析。我准备实际使用中mark一些
Thispostoriginallyappearedonthe ApacheFlinkblog.Itwasreproducedhereunderthe ApacheLicense,Version2.0.ThisblogpostprovidesanintroductiontoApacheFlink’sbuilt-inmonitoringandmetricssystem,thatallowsdeveloperstoeffectively
Flink配置文件对于管理员来说,差不多经常调整的就只有conf下的flink-conf.yaml:经过初步的调整,大约有以下模块的参数(未优化)LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTICEfiledistributedwiththis
1.mac平台安装flink(默认最新版)brewinstallapache-flink安装结果:Version1.7.1,commitID:89eafb42.jdk版本,我尝试使用了Java8和Java11,都能兼容3.在flink的安装目录下,启动flink目录一般默认在/usr/local/Cellar/apache-flink/1.7.1/(查找flink安装目录:find/-name
课程目标:学完该课程大家会对Flink有非常深入的了解,同时可以体会到Flink的强大之处,以及可以结合自己公司的业务进行使用,减少自己研究和学习Flink的时间。适合人群:适合有大数据开发基础和flink基础的同学。在开始学习前给大家说下什么是Flink? 1.Flink是一个针对流数据和批数据的
本文主要研究一下flink的NetworkEnvironmentConfigurationNetworkEnvironmentConfigurationflink-1.7.2/flink-runtime/src/main/java/org/apache/flinkuntimeaskmanager/NetworkEnvironmentConfiguration.javapublicclassNetworkEnvironmentCon
January22,2019 UseCases, ApacheFlinkLasseNedergaard   Recentlytherehasbeensignificantdiscussionaboutedgecomputingasamajortechnologytrendin2019.Edgecomputingbrings computingcapabilitiesawayfromthecloud,andrathercloset
1DataStreamAPI1.1DataStreamDataSources   source是程序的数据源输入,你可以通过StreamExecutionEnvironment.addSource(sourceFunction)来为你的程序添加一个source。   flink提供了大量的已经实现好的source方法,可以自定义source   通过实现sourceFunction接口来
基于Flink流处理的动态实时亿级全端用户画像系统课程下载:https://pan.baidu.com/s/1YtMs-XG5-PsTFV9_7-AlfA提取码:639m项目中采用到的算法包含LogisticRegression、Kmeans、TF-IDF等,Flink暂时支持的算法比较少,对于以上算法,本课程将手把手带大家用Flink实现,并且结合真实场景,
最近准备用flink对之前项目进行重构,这是一个有挑战(但我很喜欢)的工作。几个月过去了,flink社区比起我做技术调研那阵发生了很多变化(包括blink的版本回推),我这边的版本也由1.4->1.7.2。现在网上有很多大方向的解析(阿里的几次直播),也有大神对框架的深入解析。我准备实际使用中mark一些
 flink集群安装部署 standalone集群模式 必须依赖必须的软件JAVA_HOME配置flink安装配置flink启动flink添加Jobmanageraskmanager实例到集群个人真实环境实践安装步骤 必须依赖必须的软件flink运行在所有类unix环境中,例如:linux、mac、或
1Flink的前世今生(生态很重要)很多人可能都是在2015年才听到Flink这个词,其实早在2008年,Flink的前身已经是柏林理工大学一个研究性项目,在2014被Apache孵化器所接受,然后迅速地成为了ASF(ApacheSoftwareFoundation)的顶级项目之一。   ApacheFlinkisanopensource
序本文主要研究一下flink的CsvTableSourceTableSourceflink-table_2.11-1.7.1-sources.jar!/org/apache/flinkable/sources/TableSource.scalatraitTableSource[T]{/**Returnsthe[[TypeInformation]]forthereturntypeoft
原文链接JobManager高可用性(HA)  作业管理器JobManager协调每个Flink部署组件,它负责调度以及资源管理。  默认情况下,每个Flink集群只有一个独立的JobManager实例,因此可能会产生单点故障(SPOF)。  使用JobManagerHighAvailability,可以从JobManager的故障中恢复,从而消除SPOF。
一、背景在flink本地环境安装完成之后,就想着怎么能调试和运行一个flink示例程序,本文记录下过程。二、获取flink源码通过如下命令,获取flink源码,在源码中有flink-examples模块,该模块中包含简单的SocketWindowWordCount.java示例程序。gitclonehttps://github.com/apache/
作为一家创新驱动的科技公司,袋鼠云每年研发投入达数千万,公司80%员工都是技术人员,袋鼠云产品家族包括企业级一站式数据中台PaaS数栈、交互式数据可视化大屏开发平台Easy[V]等产品也在迅速迭代。在进行产品研发的过程中,技术小哥哥们能文能武,不断提升产品性能和体验的同时,也把这些提
在阅读本文之前,请先阅读Flink原理与实现:Window机制,这篇文章从用户的角度,对Window做了比较详细的分析,而本文主要是从Flink框架的实现层面,对Window做另一个角度的分析。首先看一个比较简单的情况,假设我们在一个KeyedStream上做了一个10秒钟的tumblingprocessingtimewindow