Hadoop在Linux上通过YARN(Yet Another Resource Negotiator)实现资源调度,核心组件和流程如下:
-
核心组件
- ResourceManager(RM):管理集群资源,包含调度器和应用程序管理器,负责接收作业请求、分配容器并监控资源使用。
- NodeManager(NM):管理单个节点资源,根据RM指令启动容器并监控任务执行。
- 容器(Container):资源分配的基本单位,封装CPU、内存等资源。
-
调度策略
- FIFO(先进先出):按作业提交顺序调度,简单但可能导致长任务阻塞。
- Capacity Scheduler(容量调度器,默认):支持多队列资源分配,队列内按FIFO调度,适合多用户共享集群。
- Fair Scheduler(公平调度器):动态分配资源,确保各作业公平获取资源,支持抢占机制。
-
调度流程
- 用户提交作业至RM,RM将作业加入队列并分配唯一ID。
- RM根据调度策略选择NM,分配容器并启动作业的ApplicationMaster(AM)。
- AM向RM申请任务资源,RM分配容器给NM执行Map/Reduce任务。
- 任务完成后,NM释放资源,RM更新状态。
-
配置与优化
- 通过修改
yarn-site.xml配置调度器类型(如yarn.resourcemanager.scheduler.class)及队列资源比例。
- 调整容器资源限制参数(如
yarn.scheduler.maximum-allocation-mb控制单个容器最大内存)。
- 启用动态资源分配(
yarn.scheduler.dynamic-resource-allocation.enabled)提升资源利用率。
相关信息来源: