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
posted @ 2020-09-22 12:51  辰令  阅读(452)  评论(0编辑  收藏  举报