Flink日记

编程入门 行业动态 更新时间:2024-10-07 00:26:38

Flink<a href=https://www.elefans.com/category/jswz/34/1768372.html style=日记"/>

Flink日记

Flink简介
    Flink是什么
    为什么选择Flink
    哪些行业需要处理流数据
        电商和市场营销
        物联网(IoT)
        电信业
        银行和金融业
    传统数据处理架构
        事务处理(OLTP)
        分析处理(OLAP)
    有状态的流式处理
    流处理的演变
        lambda架构
        Flink
    Flink的主要特点
        事件驱动(Event-driven)
        基于流的世界观
        分层API
        其他特点
        Flink vs Spark Streaming
            流(stream)和微批(micro-batching)
            数据模型
            运行时架构

快速上手
    搭建maven工程
        pom文件
        添加scala框架和scala文件夹
    批处理wordcount
    流处理wordcount
        打印顺序
        并行度及编号
        动态传参方式

Flink部署
    Standalone模式
        安装
            解压编译好的包
            修改配置文件conf/flink-conf.yaml
            修改conf/slaves
            分发配置好的Flink
            启动
        提交任务
            前端页面提交
            后台命令提交
    Yarn模式
        Flink on Yarn
        Session Cluster
            启动hadoop集群
            启动yarn-session
            提交job
            前端页面查看
            取消yarn-session
        Per Job Cluster
            启动hadoop集群
            直接执行job
    Kubernetes部署
        搭建k8s集群
        配置各组件的yaml文件
        启动Flink Session Cluster
        访问Flink UI页面

FLINK运行时架构
    运行时组件
        作业管理器(JobManager)
        任务管理器(TaskManager)
        资源管理器(ResourceManager)
        分发器(Dispatcher)
    任务提交流程
        通用流程
        YARN提交流程(per-job)
            per-job
            yarn-session
    任务调度原理
        TaskManager和Slots
            不共享slot
            共享slot
            并行详解
                
                
        程序和数据流(DataFlow)
            图片1
            图片2
        执行图(ExecutionGraph)
            图片
        并行度(Parallelism)
            图片1
            图片2
        任务链(Operator Chains)
    扩展
        slot共享组
        拒绝合并

状态编程和容错机制
    状态管理
        算子状态(Operator State)
            列表状态(List state)
            联合列表状态(Union list state)
            广播状态(Broadcast state)
        键控状态(Keyed State)
            值状态(Value state)
            列表状态(List state)
            映射状态(Map state)
            聚合状态(Reducing state & Aggregating State)
        状态后端(State Backends)
            MemoryStateBackend
            FsStateBackend
            RocksDBStateBackend
    容错机制
        一致性检查点(Checkpoints)
        从检查点恢复状态
        检查点的实现算法
        Flink 检查点算法
        Savepoint
        重启策略
            fixedDelayRestart
            failureRateRestart
            fallbackRestart
            noRestart
    状态一致性
        分类
            AT-MOST-ONCE(最多一次)
            AT-LEAST-ONCE(至少一次)
            EXACTLY-ONCE(精确一次)
        一致性检查点
        端到端状态一致性
        端到端exactly-once
            内部保证
            source 端
            sink 端
                幂等写入
                事务写入
                    预写日志
                    两阶段提交
            不同 Source 和 Sink 的一致性保证
                图片
            Flink+Kafka 端到端状态一致性的保证

ProcessFunction API(底层API)
    KeyedProcessFunction
    TimerService 和 定时器(Timers)
    侧输出流
    CoProcessFunction

时间语义与Watermark
    时间语义
        Event Time
        Ingestion Time
        Processing Time
    EventTime的引入
    Watermark
        基本概念
        Watermark的引入

Window API
    Window
        Window概述
        Window类型
            时间窗口
                滚动时间窗口
                    图片
                滑动时间窗口
                    图片
                会话窗口
                    图片
            计数窗口
                滚动计数窗口
                滑动计数窗口
    Window API
        TimeWindow
            滚动时间窗口
            滑动时间窗口
            会话窗口
        CountWindow
            滚动计数窗口
            滑动计数窗口
        window function
            增量聚合函数
            全窗口函数
        其他可选API
            trigger
            evictor
            allowedLateness
            sideOutputLateData
            getSideOutput
        API总览
            图片

FLINK流处理API
    Environment
        getExecutionEnvironment
            批:val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
            流:val env = StreamExecutionEnvironment.getExecutionEnvironment
        createLocalEnvironment
            val env = StreamExecutionEnvironment.createLocalEnvironment(1)
        createRemoteEnvironment
            val env = ExecutionEnvironment.createRemoteEnvironment("jobmanage-hostname", 6123,"YOURPATH//wordcount.jar")
    Source
        从集合读取数据
        从文件读取数据
        以kafka消息队列的数据作为来源
        自定义source
    Transform
        map
        flatMap
        Filter
        KeyBy
        滚动聚合算子
        Reduce
        Split和Select
        Connect和CoMap
        Union
    支持的数据类型
        基础数据类型
        Java和Scala元组(Tuples)
        Scala样例类(case class)
        Java简单对象(POJOs)
        其他
    实现UDF函数(Arrays, Lists, Maps, Enums等)
        函数类(Function Classes)
        匿名函数(Lambda Functions)
        富函数(Rich Functions)
    Sink
        Kafka
        Redis
        ElasticSearch
        JDBC自定义sink
 

更多推荐

Flink日记

本文发布于:2024-02-27 18:31:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765573.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:日记   Flink

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!