大数据hadoop之yarn学习

先讲背景故事

假设你有一个巨型数据工厂(Hadoop集群),早期版本中只有一种车间(MapReduce车间),这个车间既要搬货(资源管理)又要加工零件(数据处理)。结果出现两个问题:

  1. 车间主任同时管搬运工和技工,效率低下
  2. 只能生产一种产品(无法运行Spark等其他程序)

于是Hadoop在2012年升级时,把这个工厂改造成了:

原工厂 → 拆分成两个部门:
- 仓储部(HDFS存数据)
- 新成立的YARN调度中心(专职管理资源)

YARN核心架构(工厂流程图)

flowchart TB CEO[ResourceManager] -->|下达指令| 厂长1(NodeManager) CEO -->|下达指令| 厂长2(NodeManager) 厂长1 -->|汇报| CEO 厂长2 -->|汇报| CEO subgraph 车间1 厂长1 --> 包工头1(ApplicationMaster) 包工头1 --> 工人1-1(Container) 包工头1 --> 工人1-2(Container) end subgraph 车间2 厂长2 --> 包工头2(ApplicationMaster) 包工头2 --> 工人2-1(Container) end 客户(客户端) -->|提交订单| CEO

关键角色解释

角色 实际对应 功能
CEO
(ResourceManager)
集群老大 1. 掌握全厂机器名单
2. 给各车间分配基础物资(CPU/内存)
厂长
(NodeManager)
单台服务器管家 1. 监控本机资源
2. 给包工头发具体工具
包工头
(ApplicationMaster)
程序代理人 1. 为某个程序(如MapReduce)打工
2. 向CEO申请资源,管理本程序的任务
工人
(Container)
资源容器 装着一份资源包(比如"2核CPU+4G内存")

工作流程示例(客户要处理数据)

  1. 接订单:客户提交一个MapReduce任务
  2. 找包工头:CEO先创建一个MapReduce专用包工头(AM)
  3. 谈判资源
    • 包工头找CEO:"我要10个工人,每个要1核CPU+2G内存"
    • CEO查看各厂长(服务器)的剩余资源,批准请求
  4. 派发任务
    • 包工头联系对应厂长:"在3号机启动2个工人,5号机启动3个工人..."
    • 工人们(Container)开始处理数据分片
  5. 全程监控
    • 工人定期向包工头汇报进度
    • 包工头向CEO汇报整体进度
    • 如果有工人宕机,包工头会申请替补

YARN的三大优势

  1. 多类型车间共存:可以同时运行MapReduce、Spark、Flink等不同程序
  2. 弹性伸缩:资源按需分配,不像以前固定划分
  3. 故障隔离:一个程序的崩溃不会拖垮整个集群

举个实际例子:双十一期间,某电商的YARN集群可能同时运行着:

  • 实时计算用户点击数据的Spark任务
  • 生成报表的MapReduce任务
  • 训练推荐模型的TensorFlow任务
    所有任务都通过YARN动态分配资源,互不干扰。
posted @ 2025-02-13 15:29  -dokingone-  阅读(45)  评论(0)    收藏  举报