• Fllink学习


    1、Apache Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。

    现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型,因为他们所提供的SLA(Service-Level-Aggreement,服务等级协议) 是完全不相同的:

    (1)、流处理一般需要支持低延迟、Exactly-once 保证

    (2)、批处理需要支持高吞吐、高效处理。

    Flink 从另一个视角看待流处理和批处理,将二者统一起来:

    (1)、Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的

    (2)、批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。

    flink的一些实现细节和原理相关


    两个分类:

    1、flink的架构分析

    standalone:

    YARN;
    resourcemanager
    nodemanager

    mareduce v1:
    jobtracker
    tasktracker

    spark:
    master
    worker

    flink
    jobmanager
    taskmanager

    以上这些集群都是属于管理资源和分配资源给对应的提交的应用程序执行的

    所有的主节点都是:(管理者)
    管理所有从节点的状态
    分配对应的资源给应用程序去执行

    所有的从节点都是:(工作者)
    提供资源,然后汇报自己的状态给主节点
    派发任务下来,由每个从节点执行

    主管资源 Resouce...
    主管调度 Scheduler
    关于主控程序管理相关
    ApplicationMaster
    ....


    hadoop能否被取代?

    hdfs
    yarn
    mapreduce 太慢,功能上有一定的缺陷
    执行效率低,编码复杂,只能做离线批处理

    hive-2.x
    mapreduce
    tez
    spark

    一个分布式计算引擎是一定要去考虑shuffle的
    但是不是说,所有的应程序都一定会要进行shuffle


    spark各模块的依赖关系:
    spark core: 核心实现
    sparksql: 处理结构化数据, 基于spark core
    sparkstreaming: 构建流式应用程序,基于spark core
    structured streaming: 构建流式应用程序,基于spark sql

    YARN:
    资源单位:container 默认1G

    Flink
    资源单位:slot
    根据两个因素来决定slot的内存多大:

    一个taskamanager的内存:a
    一个taskmanager的slot数量: b

    一个slot的内存: a/b

    由每隔slot占用多少内存来倒推应该设置a和b是多少

    64G 8G内操作系统
    4G 其他程序

    52G:
    每个slot: 1G内存
    taskManager 的slot数量: 52个


    ChainOperator

    backend
    pressure

    反压

    JobGraph

    2、flink的四大特性

    flink:有状态的分布式计算引擎

    checpoint
    保存状态 到 HDFS
    分布式快照
    snapshot id 管理者:jobmanager去管理
    barriers 屏障

    state
    ValueState
    ListState
    MapState
    快照

    window

    滚动窗口: 没有数据被重复消费
    每隔4s钟统计过去4s内数据的xx结果
    滑动窗口
    每隔4s钟统计过去6s内数据的xx结果
    会话窗口
    碰到有相邻两条数据超过指定的某个时间差距,就切开形成两个不同的会话

    时间 time
    数量 count

    spark窗口计算的重点:

    基于时间的滑动窗口

    需求:
    每隔4s钟统计过去6s内数据的xx结果

    new StreamingContext(2s)
    window(windowTime, slideTime)
    6 4

    车流量

    time

    event time 事件时刻:当前这个日志生成的时刻
    ingest time 进入flink应用程序的时刻
    process time 计算的时刻


    watermark
    水位线

    主要用来计算无序的,延迟抵达的数据

    aggregateByKey(状态)((旧状态,值) => 新状态, (状态,状态) => 状态)
    aggregateByKey(C)((C,V) => C, (C,C) => C)


    state

    窗口计算

    updateStateByKey

    window


    ValueState 存储一个值
    ListState 存储一堆值
    MapState 存储一堆key-vlaue类型的值

    服务降级:

    at least once

  • 相关阅读:
    各数据库连接maven配置
    在 windows 下配置 git 公共库
    java笔记2(观察者模式、内部类、输入输出)
    linux 常用命令的应用笔记
    Setting Up Google Code And Github With Git
    java笔记3(单元测试中的模式)
    Apache的配置
    Ubuntu安装常用工具
    MongoDB笔记1(安装配置、用户管理、查询与SQL比较)
    Redis的安装与配置
  • 原文地址:https://www.cnblogs.com/ssqq5200936/p/11644996.html
Copyright © 2020-2023  润新知