zoukankan      html  css  js  c++  java
  • Flink开发-Flink的计算模型和接口

    Flink的计算模型和接口

    开发模型

      开发步骤: 数据输入 数据转换 数据输出
       1.数据输入- DataSource
       第三方数据源 数据源连接器
         内置数据源:集合数据源 文件数据源  Socket数据源
      2.DataStream 转换操作 Transformation Operator
       01.Single-DataStream
          filter  map
       02.Multi-DataStream
         流合并
          Union 需要保证两个数据集的格式一致,输出和输入格式一致
    	  Connect 合并两种或多种不同类型的数据集-合并后混合数据类型保留了数据集的数据类型
          Join
    	    滑动窗口关联 滚动窗口关联 会话窗口关联 间隔关联
         流拆分:
           Split 算子 + select
    	03.物理分区操作
    	    Random Partitioning
    		Roundobin Partitioning
    		Rescaling Partitioning 
    		Custom Partitioning
    	    BroadCasting
      3.DataSinks数据输出
           基本数据输出
    	   第三方数据输出
    

    执行过程

      1.组件
      Flink中Job的提交、调度和执行流程
        各个组件(client JobMaster TaskManager Dispatcher ) 
        01.Client:Flink 作业在哪台机器上面提交,那么当前机器称之为Client
        02.Dispatcher. The dispatcher accepts job submissions from clients and starts the jobs on their behalf on a cluster manager.
       Dispatcher(Application Master)提供REST接口来接收client的application提交,它负责启动JM和提交application,同时运行Web UI
        03.ResourceManager:一般是Yarn,当TM有空闲的slot就会告诉JM,没有足够的slot也会启动新的TM。kill掉长时间空闲的TM。
      
       2.执行过程
       Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager
          01.Jobs
          02.JobManager :
        接收任务,手机任务状态
    	管理TaskManger
    	调度Task
       JobManager的High Availability:
       使用JobManager High Availability,可以从JobManager的故障中恢复,从而消除单点故障SPOF
         HighAvailabilityMode有三个枚举,分别是NONE、ZOOKEEPER、FACTORY_CLASS;
    	 这些枚举有一个属性haActive,用于表示是否支持HighAvailability;
    	 HighAvailabilityOptions定义了前缀为high-availability.zookeeper的配置项
          03.TaskManager
        执行计算逻辑
    	TaskManager 负责做数据传输。TaskManager的网络组件首先从缓冲buffer中收集records,然后再发送
          04.TaskSlots
       Slot槽位(Slot)
       Task :task是最基本的调度单位,由一个线程执行,里面包含一个或多个operator
      抽象图
          Flink总共提供了三种图的抽象, StreamGraph  JobGraph ExecutionGraph
       01.生成 StreamGraph 。StreamNode和 StreamEdge,代表程序的拓扑结构,是从用户代码直接生成的图。
           02.生成 JobGraph 。 JobGraph表示由算子(JobVertex)和中间结果(IntermediateDataSet)组成的数据流
                以及JobEdge代表了job graph中的一条数据传输通道
                JobGraph是要交给flink去生成task的图。
           03.ExecutionGraph,是用于调度的基本数据结构
             ExecutionJobVertex  ExecutionVertex IntermediateResult IntermediateResultPartition ExecutionEdge Execution
    根据 StreamGraph 生成 JobGraph ,然后将JobGraph发送到server端进行ExecutionGraph的解析,-> 物理执行
    

    DataFlow设计理念:

      0. 架构:消息传输层-流处理层
      1.消息传输层:
            Kafka 的出现,直接解决了replayable的数据框架的问题。建造和分析分布式数据处理系统的思维体系 持久化:kafka文件存储
            Pulsar 是pub-sub模式的分布式消息平台:为了解决吞吐等问题,Pulsar和Kafka一样,采用了分区(Partition)的机制
            持久化-Pulsar通过 BookKeeper 来存储消息,保证消息不会丢失-服务和数据是分离的
            Broker:提供发布和订阅的服务(Pulsar的组件)
                 Bookie:提供存储能力(BookKeeper的存储组件)
    	 Time-to-Live(TTL)
      2.流处理层:Flink SparkStreaming
  • 相关阅读:
    第七届蓝桥杯javaB组真题解析-煤球数目(第一题)
    考生须知
    2016年12月1日
    蓝桥网试题 java 基础练习 矩形面积交
    蓝桥网试题 java 基础练习 矩阵乘法
    蓝桥网试题 java 基础练习 分解质因数
    蓝桥网试题 java 基础练习 字符串对比
    个人银行账户管理程序
    new和delete的三种形式详解
    C++的六个函数
  • 原文地址:https://www.cnblogs.com/ytwang/p/13665258.html
Copyright © 2011-2022 走看看