• Flink资料(3)-- Flink一般架构和处理模型


    Flink一般架构和处理模型

    本文翻译自General Architecture and Process Model

    ---------------------------------------------------------------------

    一、处理过程

    Flink系统启动时,首先启动JobManager和一至多个TaskManagerJobManager负责协调Flink系统,TaskManager则是执行并行程序的worker。当系统以本地形式启动时,一个JobManager和一个TaskManager会启动在同一个JVM中。

    当一个程序被提交后,系统会创建一个Client来进行预处理,将程序转变成一个并行数据流的(parallel data flow)形式,交给JobManagerTaskManager执行。图1展示了在系统交互中各个组件的角色。

    1Flink运行时各组件关系

    二、组件栈(Component Stack

    Flink以层级式系统形式组件其软件栈,不同层的栈建立在其下层基础上,并且各层接受程序不同层的抽象形式:

    o   运行时层JobGraph形式接收程序。JobGraph即为一个一般化的并行数据流图(data flow),它拥有任意数量的Task来接收和产生data stream

    o   DataStream APIDataSet API都会使用单独编译的处理方式(Separate compilation process)生成JobGraphDataSet API使用Optimizer来决定针对程序的优化方法,而DataStream API则使用stream builder来完成该任务。

    o   在执行JobGraph时,Flink提供了多种候选部署方案(如localremoteYARN等)

    o   Flink附随了一些产生DataSetDataStream API程序的的类库和API:处理逻辑表查询的Table,机器学习的FlinkML,图像处理的Gelly,事件处理的CEP

    2Flink组件栈

    三、工程和依赖

    Flink系统核心可分为多个子项目。分割项目旨在减少开发Flink程序需要的依赖数量,并对测试和开发小组件提供便捷。

    独立的工程和依赖关系如图3所示

    3Flink子项目和依赖关系

    此外,除了图3列出的项目,Flink当前还包括以下子项目:

    o   Flink-distdistribution项目。它定义了如何将编译后的代码、脚本和其他资源整合到最终可用的目录结构中。

    o   Flink-quick-start:有关quickstart和教程的脚本、maven原型和示例程序

    o   flink-contrib:一系列有用户开发的早起版本和有用的工具的项目。后期的代码主要由外部贡献者继续维护,被flink-contirb接受的代码的要求低于其他项目的要求。

  • 相关阅读:
    vmware 虚拟机共享 windows 目录
    下载 golang.org/x 包出错不用代理的解决办法
    c++小游戏——彩票
    恶意代码要注意
    Pascal到c++,求大佬翻译!
    【CYH-01】小奔的国庆练习赛:赛后标程
    鸽巢原理及其扩展——Ramsey定理
    区块链,你知道多少?
    go语言
    10.2:异或树经验
  • 原文地址:https://www.cnblogs.com/lanyun0520/p/5657697.html
Copyright © 2020-2023  润新知