1. Standalone 模式
      1. 安装

解压缩flink-1.10.1-bin-scala_2.12.tgz, 进入 conf 目录中。

        1.  

第三章 Flink 部署

修改 flink/conf/flink-conf.yaml 文件:

        1. 修改 /conf/slaves 文件:

第三章 Flink 部署

 

        1.  

第三章 Flink 部署

分发给另外两台机子:

        1. 启动:

第三章 Flink 部署

 

访问 http://localhost:8081 可以对 flink 集群和任务进行监控管理。

 

第三章 Flink 部署

 

      1. 提交任务
  1. 准备数据文件(如果需要)

第三章 Flink 部署

 

  1.  

第三章 Flink 部署

把含数据文件的文件夹,分发到taskmanage 机器中

如果从文件中读取数据, 由于是从本地磁盘读取, 实际任务会被分发到

taskmanage 的机器中, 所以要把目标文件分发。

  1.  

第三章 Flink 部署

执行程序

  1. 到目标文件夹中查看计算结果

注意: 如果计算结果输出到文件, 会保存到 taskmanage 的机器下, 不会在

jobmanage 下。

第三章 Flink 部署

 

  1. 在webui 控制台查看计算过程

 

 

 

    1. Yarn 模式

以 Yarn 模式部署 Flink 任务时, 要求 Flink 是有 Hadoop 支持的版本, Hadoop 环境需要保证版本在 2.2 以上, 并且集群中安装有 HDFS 服务。

      1. Flink on Yarn

Flink 提供了两种在 yarn 上运行的模式,分别为 Session-Cluster 和 Per-Job-Cluster

模式。

  1.  

第三章 Flink 部署

Session-cluster 模式:

Session-Cluster 模式需要先启动集群, 然后再提交作业, 接着会向 yarn 申请一块空间后, 资源永远保持不变。如果资源满了, 下一个作业就无法提交, 只能等到yarn 中的其中一个作业执行完成后, 释放了资源, 下个作业才会正常提交。所有作业共享 Dispatcher 和 ResourceManager; 共享资源; 适合规模小执行时间短的作业。

在 yarn 中初始化一个 flink 集群, 开辟指定的资源, 以后提交任务都向这里提交。这个 flink 集群会常驻在 yarn 集群中, 除非手工停止。

  1. Per-Job-Cluster 模式:

第三章 Flink 部署

 

一个 Job 会对应一个集群,每提交一个作业会根据自身的情况,都会单独向 yarn 申请资源, 直到作业执行完成, 一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享 Dispatcher 和 ResourceManager,按需接受资源申请;适合规模大长时间运行的作业。

每次提交都会创建一个新的 flink 集群,任务之间互相独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。

      1. Session Cluster
  1. 启动hadoop 集群(略)
  2. 启动yarn-session

其中:

-n(--container): TaskManager 的数量。

-s(--slots): 每个 TaskManager 的 slot 数量,默认一个 slot 一个 core,默认每个taskmanager 的 slot 的个数为 1, 有时可以多一些 taskmanager, 做冗余。

-jm: JobManager 的内存( 单位 MB)。

-tm: 每个 taskmanager 的内存( 单位 MB)。

-nm: yarn 的 appName(现在 yarn 的 ui 上的名字)。

-d: 后台执行。

第三章 Flink 部署

 

  1. 执行任务
  2. 去yarn 控制台查看任务状态

第三章 Flink 部署

 

  1. 取消yarn-session

 

      1. Per Job Cluster
        1. 启动hadoop 集群(略)
        1. 不启动yarn-session,直接执行job
    1. Kubernetes 部署

容器化部署时目前业界很流行的一项技术,基于 Docker 镜像运行能够让用户更加方便地对应用进行管理和运维。 容器管理工具中最为流行的就是 Kubernetes

( k8s), 而 Flink 也在最近的版本中支持了 k8s 部署模式。

  1. 搭建Kubernetes 集群(略)
  2. 配置各组件的yaml 文件

在 k8s 上构建 Flink Session Cluster,需要将 Flink 集群的组件对应的 docker 镜像分别在 k8s 上启动, 包括 JobManager、TaskManager、JobManagerService 三个镜像服务。每个镜像服务都可以从中央镜像仓库中获取。

  1. 启动Flink Session Cluster
  2. 访问Flink UI 页面

集群启动后,就可以通过 JobManagerServicers 中配置的 WebUI 端口,用浏览器输入以下 url 来访问 Flink UI 页面了:

http://{JobManagerHost:Port}/api/v1/namespaces/default/services/flink-jobmanage r:ui/proxy

相关文章: