一、Flink 中的角色
Flink 也遵循主从原则,主节点为JobManager,从节点为TaskManager
1.1. Client
将任务提交到JobManager,并和JobManager进行任务交互获取任务执行状态。
1.2. JobManager
负责任务的调度和资源的管理。负责Checkpoint的协调过程。
获取到客户端的任务后,会根据集群中 TaskManager 上 TaskSlot 的使用情况, 为提交的任务分配相应的 TaskSlots 资源,并命令 TaskManager 启动。 JobManager 在任务执行过程中,会触发 Checkpoints 操作,每个 TaskManager 收到 Checkpoint 指令后,完成 Checkpoint 操作。完成任务后,Flink 会将结果反 馈给客户端,并释放掉 TaskManager 中的资源。
1.3. TaskManager
负责任务的执行。负责对应任务在每个节点上的资源申请与管理。 TaskManager 从 JobManager 接受到任务后,使用 Slot 资源启动 Task,开始接 受并处理数据。
1.4. ResourceManager
ResourceManager 负责 Flink 集群中的资源提供、回收、分配、管理 task slots。 Flink 为不同的环境和资源提供者(例如 YARN、Mesos、Kubernetes 和 standalone 部署)实现了对应的 ResourceManager。在 standalone 设置中,ResourceManager 只能分配可用 TaskManager 的 slots,而不能自行启动新的 TaskManager。
1.5. Dispatcher
Dispatcher 提供了一个 REST 接口,用来提交 Flink 应用程序执行,并为每 个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 用来提供作业执 行信息。
1.6. JobMaster
JobMaster 负责管理单个 JobGraph 的执行。Flink 集群中可以同时运行多个 作业,每个作业都有自己的 JobMaster。
二、Flink 的安装部署
2.1 本地模式
在本地以多线程的方式模拟 Flink 中的多个角色。(开发环境不用)
下载地址:https://flink.apache.org/downloads.html
这里选择下载:flink-1.13.0-bin-scala_2.12.tgz
上传到节点上并解压
tar -zxvf flink-1.13.0-bin-scala_2.12.tgz
启动: 切换到 flink 的 bin 目录下,执行./start-cluster.sh,然后查看进程。
./start-cluster.sh
2.1 Standalone 独立集群模式
1.上传、解压 tar 包
当前使用的版本是基于 Scala2.12 的 Flink1.13 版本。
tar -zxvf flink-1.13.0-bin-scala_2.12.tgz
2.修改配置文件
```java
vi conf/flink-conf.yaml 指定 Flink 集群 JobManager RPC 通信地址。
vi conf/flink-conf.yaml
------------------------------------------
jobmanager.rpc.address: master
----------------------------------