1 yarn 基本架构
yarn是一个资源管理与调度平台,不仅hadoop跑在上面,flink也可以直接向yarn申请资源并运行上去。
- yarn使用cgroup隔离资源,实现了container。
- Resource Manager组件管理集群资源。
- Node Manager组件管理1台机器,在上面运行Container。
- Container是一个具体容器,分配一定的CPU、内存、磁盘资源,在上面运行具体的任务
2 向yarn提交应用
向yarn提交应用的交互过程,大体如下
3 Flink on Yarn
3.1 涉及的组件
- ResourceManager
- NodeManager
- AppMater(jobmanager和它运行在一个Container中)
- Container(taskmanager运行在上面)
flink由JobManager和TaskManager组成。
- JobManager负责调度,只需要启动1个,它也就是yarn的Application Master角色。
- TaskManager是执行计算的进程,可以启动多个来分担计算任务
3.2 flink 与yarn的交互
- flink client上传flink jar、应用jar 和配置文件到HDFS上
- client向Yarn ResourceManager提交任务并申请资源
- ResourceManager分配Container资源并启动ApplicationMaster, 然后AppMaster加载Flink的Jar包和配置构建环境,启动JobManager
- JobManager和ApplicationMaster运行在同一个container上
- 一旦他们被成功启动,AppMaster就知道JobManager的地址(AM它自己所在的机器)。
- JobManager 为TaskManager生成一个新的Flink配置文件,这个配置文件也被上传到HDFS上,AppMaster容器也提供了Flink的web服务接口。
- YARN所分配的所有端口都是临时端口,这允许用户并行执行多个Flink
- ApplicationMaster向ResourceManager申请工作资源,NodeManager加载Flink的Jar包和配置构建环境并启动TaskManager
- TaskManager启动后向JobManager发送心跳包,并等待JobManager向其分配任务
3.3 Flink On Yarn的好处
- yarn的资源能按需使用,可以提高集群的资源利用率
- yarn的任务有优先级,根据优先级运行作业
- 一套yarn集群,可以执行MR任务,spark任务,flink任务等…,不用维护多套计算集群
- 基于yarn调度系统,能够自动化地处理各个角色的 Failover(容错)
- JobManager 进程和 TaskManager 进程都由 Yarn NodeManager 监控
- 如果 JobManager 进程异常退出,则 Yarn ResourceManager 会重新调度 JobManager 到其他机器
- 如果 TaskManager 进程异常退出,JobManager 会收到消息并重新向 Yarn ResourceManager 申请资源,重新启动 TaskManager
|