我知道 YARN 框架的基础知识,但是我对 MapReduce 仍然缺乏一些了解。
对于 YARN,我了解到 MapReduce 只是可以在 YARN 上运行的应用程序之一;例如,使用 YARN,可以在同一个集群上运行各种不同的作业、MapReduce 作业、Spark 作业等。
现在,重点是,每种类型的作业都有其“自己”的“作业阶段”,例如,当我们谈论 MapReduce 时,它有各种阶段,如 Mapper、Sorting、Shuffle、Reducer 等。
具体到这个场景,谁“决定”、“控制”这些阶段?是 MapReduce 框架吗?
据我了解,YARN 是运行不同作业的基础设施;那么当我们提交一个 MapReduce Job 的时候,是不是先进入 MapReduce 框架,然后再由 YARN 执行代码呢?我有这个疑问,因为 YARN 是通用执行引擎,所以它不会了解 MapReduce(以及不同类型的作业)特有的映射器、reducer 等知识,所以 MapReduce 框架运行在YARN,在 YARN 帮助下执行作业,MapReduce 框架是否知道它必须为特定类型的作业经历的阶段?
任何澄清以理解这一点都会有很大帮助。