大数据hadoop之yarn学习
先讲背景故事
假设你有一个巨型数据工厂(Hadoop集群),早期版本中只有一种车间(MapReduce车间),这个车间既要搬货(资源管理)又要加工零件(数据处理)。结果出现两个问题:
- 车间主任同时管搬运工和技工,效率低下
- 只能生产一种产品(无法运行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内存") | 
工作流程示例(客户要处理数据)
- 接订单:客户提交一个MapReduce任务
- 找包工头:CEO先创建一个MapReduce专用包工头(AM)
- 谈判资源:
- 包工头找CEO:"我要10个工人,每个要1核CPU+2G内存"
- CEO查看各厂长(服务器)的剩余资源,批准请求
 
- 派发任务:
- 包工头联系对应厂长:"在3号机启动2个工人,5号机启动3个工人..."
- 工人们(Container)开始处理数据分片
 
- 全程监控:
- 工人定期向包工头汇报进度
- 包工头向CEO汇报整体进度
- 如果有工人宕机,包工头会申请替补
 
YARN的三大优势
- 多类型车间共存:可以同时运行MapReduce、Spark、Flink等不同程序
- 弹性伸缩:资源按需分配,不像以前固定划分
- 故障隔离:一个程序的崩溃不会拖垮整个集群
举个实际例子:双十一期间,某电商的YARN集群可能同时运行着:
- 实时计算用户点击数据的Spark任务
- 生成报表的MapReduce任务
- 训练推荐模型的TensorFlow任务
 所有任务都通过YARN动态分配资源,互不干扰。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号