zoukankan      html  css  js  c++  java
  • flink笔记(三) flink架构及运行方式

    架构图

    image-20191112214746910

    Job Managers, Task Managers, Clients

    • JobManager(Master)
      • 用于协调分布式执行。它们用来调度task,协调检查点,协调失败时恢复等。
      • Flink运行时至少存在一个JobManager。
      • 一个高可用的运行模式会存在多个JobManager,它们其中有一个是leader,而其他的都是standby。
    • TaskManager(Worker)
      • 用于执行一个dataflow的task(或者特殊的subtask)、数据缓冲和data stream的交换。
      • Flink运行时至少会存在一个TaskManager。
    • TaskManager连接到JobManager,告知自身的可用性进而获得任务分配。
    • 客户端不是运行时和程序执行的一部分。但它用于准备并发送dataflow给master,然后户端断开连接或者维持连接以等待接收计算结果。
    • JobManager和TaskManager可以以如下方式中的任意一种启动:
      • Standalone cluster
      • Yarn
      • Mesos
      • Container(容器, 如 由K8S管理的Docker集群)

    Standalone 模式

    • 流程如上所示
    • 任务提交命令:
      • bin/flink run -c mainclass jar_path
      • webui 提交(傻瓜式)

    On Yarn 模式

    • 两种运行模式

      • Yarn-session 模式

        • 该模式是预先在yarn上面划分一部分资源给flink集群用,flink提交的所有任务,共用这些资源。
        • 示意图
        • 任务提交
          • 先启动一个yarn-session,并指明分配的资源。
          • 命令:
            • ./yarn-session.sh -n 3 -jm 1024 -tm 1024 /opt/sxt/flinkTest.jar
            • -n 容器个数
            • -jm jobmanager 进程内存大小
            • -tm 指明每个 taskmanager 的进程内存大小
          • 启动yarn-session后,就可以提交任务了
          • . /flink run -m 节点:端口 jar 文件目录
          • 停止yarn上的 flink 集群
            • 先找到 application_id
            • 然后执行命令:
              • yarn application -kill application_id
      • Single job 模式

        • 该模式是每次提交任务,都会创建一个新的flink集群

        • 任务之间互相独立,互不影响,方便管理

        • 任务执行完成之后,flink集群也会消失

        • 示图:

          image-20191112220952782

        • 任务提交命令:

          • ./flink rum -m yarn-cluster -yn 并行度 jar文件路径
            • -m:
              • 后面跟的是yarn-cluster,不需要指明地址。
              • 这是由于Single job模式是每次提交任务会新建flink集群,所以它的jobmanager是不固定的。
            • -yn:
              • 指明taskmanager个数。
              • 其余参数可使用:./flink -h 来查看
    • 运行原理

      • flink on yarn 内部实现图

        image-20191112221348426

      • 步骤1

        • 当启动一个新的 Flink YARN Client会话,客户端首先会检查所请求的资源(容器和内存)是否可用。
        • 之后,它会上传包含了 Flink 配置文件和 jar包到 HDFS.
      • 步骤2

        • 客户端的请求一个container资源去启动 ApplicationMaster 进程
      • 步骤3

        • ResourceManager选一台NodeManager机器启动AM。
        • 注意点1:
          • 因为客户端已经将配置文件和jar包作为容器的资源注册了,所以 NodeManager 会负责准备容器做一些初始化工作(例如,下载文件)。
          • 一旦这些完成了,ApplicationMaster (AM) 就启动了。
        • 注意点2:
          • JobManager 和 AM 运行在同一个容器中。
          • 一旦它们成功地启动了,AM 知道 JobManager 的地址(它自己)。
          • 它会为 TaskManager 生成一个新的 Flink 配置文件(这样它们才能连上 JobManager)。
          • 该文件也同样会上传到 HDFS。另外,AM 容器同时提供了 Flink 的 Web 界面服务。
      • 步骤4

        • AM 开始为 Flink 的 TaskManager 分配容器(container),在对应的nodemanager上面启动taskmanager
      • 步骤5

        • 初始化工作,从 HDFS 下载 jar 文件和修改过的配置文件。
        • 一旦这些步骤完成了,Flink 就安装完成并准备接受任务了。
  • 相关阅读:
    基于NodeJS的全栈式开发
    Android 反编译apk 详解
    AngularJS 中文资料+工具+库+Demo 大搜集
    Mongodb集群搭建的三种方式
    Ubuntu下解决bash 没有那个文件或目录的方法
    ubuntu12.04 安装配置jdk1.7
    CentOS怎样查看系统信息
    Ubuntu 安装 Redis
    Redis快速入门
    js去掉双引号
  • 原文地址:https://www.cnblogs.com/ronnieyuan/p/11845817.html
Copyright © 2011-2022 走看看