Yarn基础知识(个人总结)

    声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

Yarn架构:

在这里插入图片描述

​ Yarn集群有一个ResourceManager, 每台服务器有一个NodeManager;

​ 每个NodeManager上有一堆Container(资源),

​ 每个Container间相互隔离, 是一台独立的小电脑, 可以运行ApplicationMaster, MapTask等

​ ApplicationMaster是负责申请Container资源的, 和监控运行的任务(如MR任务)

Yarn工作机制(作业提交全流程):

在这里插入图片描述

一, 作业提交 & 运行MRAppMaster

  1. MR程序提交到客户端所在的节点
  2. YarnRunner向ResourceManager申请一个Application
  3. RM返回给YarnRunner一个HDFS路径和ApplicationId
  4. 该程序将运行所需的数据资源(.split, .xml, .jar)提交到这个HDFS路径上
  5. 程序的数据资源提交完毕后, 申请运行MRAppMaster

二, 作业初始化

  1. RM将用户的请求初始化成一个Task, 放到调度队列中
  2. 其中一个NodeManager从调度队列中领取到Task任务
  3. 该NodeManager创建容器Container
  4. Container从HDFS上下载作业的数据资源(.split, .xml, .jar)到本地

三, 任务分配

  1. MRAppMaster向RM申请运行MapTask程序

  2. RM将运行MapTask任务分配给另外两个NodeManager, 另两个NodeManager分别领取任务并创建Container

四, 任务运行

  1. NodeManager启动MapTask

  2. MRAppMaster等待所有MapTask运行完毕后, 向RM申请Container 运行ReduceTask程序

  3. ReduceTask拉取MapTask的计算结果数据

  4. 程序运行完毕后, MRAppMaster向RM申请注销自己

资源调度器:

  1. FIFO

    • 单队列
    • 先到先服务
  2. Capacity Scheduler(Apache默认)

    • 相当于多个FiFO队列, 但默认只有一个default队列
    • 先到先服务
    • 可以对同一用户提交作业资源进行下载限制
    • 可以借调别的队列的闲置资源, 但等人家索要回来的时候必须立刻偿还
  3. Fair Scheduler(CDH默认)

    • 多队列, 且可以单独配置每个对列

    • 优先满足缺额(实际资源与应获资源的差值)大的, 每个任务都能分到资源

    • 可以设置job所需资源的下限

公平调度器一般大公司用, 并发量最高, 要求机器性能较好

在生产环境下队列怎么创建?

  • 按照框架名称:hive、spark、flink

  • 按照业务名称:登录、购物车、支付模块、部门1、部门2 (居多)

    好处:解耦、降低风险、可以实现任务降级(双十一, 降级不重要的功能, 节省下的资源给支付模块用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值