1. 简述Hadoop作业提交到YARN的流程 ?
在Hadoop中,作业提交到YARN(Yet Another Resource Negotiator)的流程大致如下:
-
作业提交:
- 用户通过命令行、客户端API或作业提交界面提交作业。这通常包括作业配置、作业类型(如MapReduce作业)和输入输出规范。
-
与ResourceManager通信:
- 提交的作业首先与ResourceManager建立联系,ResourceManager是YARN中负责资源管理和作业调度的组件。
-
作业接收:
- ResourceManager接收作业提交请求,并为该作业分配一个唯一的作业ID。
-
调度作业:
- ResourceManager根据集群资源状况和调度策略(如FIFO、Capacity Scheduler或Fair Scheduler)决定作业的优先级和启动时间。
-
分配ApplicationMaster:
- ResourceManager为作业分配一个ApplicationMaster,它是作业的控制接口,负责与ResourceManager协商资源和与NodeManager通信。
-
ApplicationMaster初始化:
- ApplicationMaster与ResourceManager通信,获取作业配置信息,并与所有NodeManager注册,了解集群的资源状况。
-
资源协商:
- ApplicationMaster根据作业需求向ResourceManager请求资源(CPU、内存等),ResourceManager根据资源可用性进行分配。
-
任务分配:
- 一旦资源被分配,ApplicationMaster将作业分解为多个任务(例如Map任务和Reduce任务),并将任务分配给不同的NodeManager执行。
-
任务执行:
- NodeManager在分配到任务后,根据ApplicationMaster的指示启动容器(Container),容器是YARN中的资源隔离单位,用于执行具体的任务。
-
进度和状态报告:
- 容器在NodeManager上执行任务,并将任务的进度和状态定期报告给ApplicationMaster。
-
作业监控:
- ApplicationMaster监控所有任务的执行状态,根据需要向ResourceManager请求更多资源或重新调度失败的任务。
-
作业完成:
- 所有任务完成后,ApplicationMaster通知ResourceManager作业已完成,并收集作业结果。
-
资源回收:
- 作业完成后,ApplicationMaster和所有容器将释放它们占用的资源。
-
作业结果返回:
- 最终,作业结果被返回给用户,作业提交流程结束。
YARN的这种设计允许Hadoop集群更加灵活地处理不同类型的作业,提高了资源利用率,并支持了除MapReduce之外的其他计算模型。