Flink代码阅读之部署方式

本文介绍了Flink中客户端任务提交的多种方式,如命令行、REST接口等,并详细解读了JobManager的ApplicationMode、Per-JobMode和SessionMode。此外,文章探讨了不同部署模式(Standalone、Kubernetes、YARN、Mesos)下的资源管理和高可用性策略,涉及ResourceManager、Dispatcher、JobMaster以及Zookeeper、Kubernetes HA等服务。

![在这里插入图片描述](https://img-blog.csdnimg.cn/202102082012468.png

客户端提交任务的方式主要有以下几种

  • 命令行
  • REST接口
  • SQL
  • python
  • scala

JobManager有三种提交任务的模式

  • Application Mode: runs the cluster exclusively for one application. The job’s main method (or client) gets executed on the JobManager. Calling execute/executeAsync multiple times in an application is supported.
    1.11版本以后才会有的。本文暂不涉及。
  • Per-Job Mode: runs the cluster exclusively for one job. The job’s main method (or client) runs only prior to the cluster creation.
    每一个任务都会启动一个集群。
  • Session Mode: one JobManager instance manages multiple jobs sharing the same cluster of TaskManagers
    集群只有一个JobManager。各个job共享TaskManager
    在这里插入图片描述

部署方式

无论如何部署,都是大概这四种进程。注意图片最下面master/yarn只是代表部署在yarn的AM节点。
在这里插入图片描述
+

对于JM,有三个组成部分

The JobManager has a number of responsibilities related to coordinating the distributed execution of Flink Applications: it decides when to schedule the next task (or set of tasks), reacts to finished tasks or execution failures, coordinates checkpoints, and coordinates recovery on failures, among others. This process consists of three different components:

ResourceManager 注意这个RM和yarn的rm两件事情。

The ResourceManager is responsible for resource de-/allocation and provisioning in a Flink cluster — it manages task slots, which are the unit of resource scheduling in a Flink cluster (see TaskManagers). Flink implements multiple ResourceManagers for different environments and resource providers such as YARN, Mesos, Kubernetes and standalone deployments. In a standalone setup, the ResourceManager can only distribute the slots of available TaskManagers and cannot start new TaskManagers on its own.

Dispatcher

The Dispatcher provides a REST interface to submit Flink applications for execution and starts a new JobMaster for each submitted job. It also runs the Flink WebUI to provide information about job executions.

JobMaster

A JobMaster is responsible for managing the execution of a single JobGraph. Multiple jobs can run simultaneously in a Flink cluster, each having its own JobMaster.

Resorce Provider的不同,部署方式有如下四种
Standalone:最基本模式。
Kubernetes
YARN
Mesos

Flink Standalone

在这里插入图片描述

Kubernetes

https://zhuanlan.zhihu.com/p/108302052?utm_source=wechat_timeline

YARN

在这里插入图片描述
或者是这张超级牛逼的图
在这里插入图片描述

Mesos

外部依赖

高可用服务

主要是避免JobManager崩溃。会有多个备用JobManager在主崩溃后借助高可用服务迅速恢复。主要提供是

  • Zookeeper
  • Kubernetes HA
持久化服务

主要是依赖各种本地或者远程的文件系统

资源提供服务

取决于部署方式。

Metrics Storage
Application-level data sources and sinks

外部输入输出。比如kafka,elasticSearch,Cassandra

### Flink 部署代码示例与指南 Flink 支持多种部署方式,包括本地模式、集群模式(如 YARN, Kubernetes),每种部署方法都有其特定的应用场景和配置需求。 #### 本地环境启动 Flink 对于开发测试目的,在本地环境中运行 Flink 是最简单的方式之一。只需要下载官方发布的二进制文件并解压即可开始使用[^1]: ```bash ./bin/start-cluster.sh ``` 此命令会启动一个本地的 JobManager 和 TaskManager 实例,适合用于初步的学习和实验阶段。 #### 使用 Docker 进行快速部署 为了简化安装过程以及保持环境一致性,Docker 成为了一种流行的解决方案。可以通过拉取官方镜像来迅速搭建起完整的 Flink 环境: ```dockerfile FROM flink:latest COPY ./my-flink-job.jar /opt/flink/usrlib/ CMD ["standalone-job", "--job-classname", "com.example.MyJob"] ``` 上述 Dockerfile 文件定义了一个基于最新版本 Flink 的容器,并指定了要执行的任务类路径。 #### 在 Apache Hadoop YARN 上提交作业 当涉及到生产级别的大规模数据处理时,通常会选择将 Flink 应用程序部署到资源管理平台之上,比如 YARN 或者 K8s。这里给出如何向 YARN 提交任务的例子: ```bash ./bin/flink run -m yarn-cluster -yn 4 -yjm 1024 -ytm 4096 ./examples/batch/WordCount.jar ``` 这条指令告诉 Flink 创建由四个节点组成的临时集群来进行 Word Count 计算,其中每个 JVM 被分配了不同的内存大小给 Master (Yarn ApplicationMaster) 及 Worker(TaskManagers). #### 利用 Kubernetes Operator 自动化运维 随着云原生技术的发展,越来越多的企业倾向于采用Kubernetes作为基础设施即服务(IaaS),因此也出现了专门针对这类场景设计的操作符(operator)。这些工具可以帮助自动化完成诸如创建、扩展甚至销毁整个 Flink Cluster 生命周期内的各项操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值