能否阐述一下在 Hadoop 框架中,一个 Job 从提交到完成执行的整体流程是怎样的?
考察说明
考察对 Hadoop Job 提交与执行流程的理解深度。
回答思路
- 【回答框架 1】客户端通过 Job.waitForCompletion 提交作业,创建 JobClient 实例,并将作业相关的配置、代码 jar 等资源上传到 Hadoop 集群中的 HDFS 上。
- 【回答框架 2】JobClient 向 ResourceManager 提交作业,ResourceManager 会为作业分配一个 Application Master(AM),AM 负责作业的调度和监控。
- 【回答框架 3】AM 向 ResourceManager 申请资源容器,并在容器中启动与 MapReduce 相关的任务,包括 Map 任务和 Reduce 任务。
- 【回答框架 4】作业执行过程中,AM 与 NodeManager 通信,监控任务进度和状态,并在任务失败时进行重试或重新调度。
- 【关键点 1】作业提交涉及资源上传到 HDFS,并记录作业元数据。
- 【关键点 2】ResourceManager 分配 AM,AM 协调作业执行。
- 【关键点 3】任务在容器中运行,AM 监控进度和失败重试。
- 【易错点 1】混淆 ResourceManager 和 NodeManager 的职责,前者负责资源管理,后者负责单个节点的资源管理。
- 【易错点 2】误解作业提交过程,认为客户端直接与 NodeManager 交互。