zoukankan      html  css  js  c++  java
  • Flink-基础概念

    flink入门

    1.有状态流式处理引擎的基石

    流式处理:每条流数据都经过你编写的代码进行处理

    分散式流式处理:保证流式数据相同的key到同一个计算实例上

    有状态分散式流式处理:状态会跟着流数据把相同的key分到同一个计算实例上,并且会对状态进行叠加,

    当key非常多的时候,状态可能会非常大,所以需要一个状态后端来维护状态。

    有状态流式处理面临的挑战:

    1⃣️状态容错:

    首先需要考虑到精确一次exactly-once的状态容错。

    简单场景的容错方法:

    有无界数据流从消息队列中输入进来,会把每个状态都保存下来,每个状态都对应一个保存的状态值。

    分散式场景下保证全域一致的快照,并且保证不中断运算:

    全域一致快照global consistent snapshot:

    检查点checkpoint:

    会周期性的产生

    分散式快照方法(基于chaling-lanbort算法):

    先由jobmanager生成一个checkpoint barrier n,类似于一条标记

    当我的source遇到这个barrier的时候就会把当前的状态保存到

    checkpoint n中,如果source是kafka,那么其实这次保存的状态就是在kafka中消费的偏移量

    当checkpoint barrier n流到下一个算子1的时候,下一个算子1就会把状态保存到checkpoint n中

    到算子2遇到barrier的时候把状态保存到表格checkpoint n中,jobmanager可以同时保存多个checkpoint,所以不会影响运算的速率

    2⃣️状态维护

    jvm heap状态后端:

    这种状态后端适用于内存比较小的情况,其实就是保存在内存中,只是在分散式

    快照的时候需要序列化

    rockdb状态后端:

    状态可以维护在磁盘中,状态每次维护都需要序列化到磁盘中,

    在分散式的情况不需要序列化

    3⃣️event-time处理

    事件时间event-time:数据流本身的时间

    ingestion-time:数据进入flink的时间

    window-processing-time:数据在flink中处理的时间

    watermarks水位线:

    水位线类似于flink中的一条标记,比如一条数据是4点的,如果设了5分钟的wateramrk,

    那么这条数据就会等到5分钟之后才开始计算

    watermark=当前最大的时间戳-延迟时间(当前最大的时间时间戳maxTS-)

    如果watermark>= 窗口的结束时间,这个窗口就会触发关闭操作。

    延迟时间的设置:

    根据数据的乱序的最大时间来确定延迟时间,延迟时间越大结果越准确但是计算结果出的越慢,延迟时间越小结果越不准确但计算结果出的快。

    watermark的传递:

    allowlateness

    当watermark到的时候,窗口触发计算,输出统计结果,但是窗口不会关闭,等到watermark涨到allowlateness的延迟才会关闭,

    比如allowlateness设置了1分钟,watermark到达时这个窗口触发计算,只有等watermark又涨了1分钟才会真正把窗口丢弃。

    sideoutputlatedata:

    可以把数据放入到侧输出流中,但是放入到侧输出流中的数据不会再叠加了,需要之后再把数据拿出来处理。

    4.状态保存和迁移

    savepoint保存点:其实就是一个手动产生的检查点

    在执行停止之前,比如升级flink,修改flink中的代码这种停止flink应用的时候,就需要

    产生一个保存点,最后通过保存点恢复数据追上当前的数据

    inputData1 = getRuntimeContext.getState(
              new ValueStateDescriptor[String]("in1",classOf[String])) 
    //在classof这里可以传入case类,或者其他类型,flink就是通过这里的类型来生成序列化器,然后在状态checkpoint的时候根据这里的序列化器做序列化的工作
    可以在恢复数据的时候通过flink的schema,恢复的时候可以更改schema改变数据结构
  • 相关阅读:
    Begin Example with Override Encoded SOAP XML Serialization
    State Machine Terminology
    How to: Specify an Alternate Element Name for an XML Stream
    How to: Publish Metadata for a WCF Service.(What is the Metadata Exchange Endpoint purpose.)
    Beginning Guide With Controlling XML Serialization Using Attributes(XmlSerializaiton of Array)
    Workflow 4.0 Hosting Extensions
    What can we do in the CacheMetaData Method of Activity
    How and Why to use the System.servicemodel.MessageParameterAttribute in WCF
    How to: Begin Sample with Serialization and Deserialization an Object
    A Test WCF Service without anything of config.
  • 原文地址:https://www.cnblogs.com/javazyh/p/13035686.html
Copyright © 2011-2022 走看看