一、MapReduce原理
MapReduce是一种编程模型,用于大规模数据集的并行处理。它允许用户将数据处理任务划分为两个阶段:Map阶段和Reduce阶段。在Map阶段,输入的数据被分割成若干个独立的数据块,并由Map函数对每个数据块进行处理,生成一系列的键值对(Key-Value Pair)。在Reduce阶段,这些键值对根据键进行排序和分组,然后由Reduce函数对每个键的值进行汇总处理,生成最终的输出结果。
MapReduce的工作流程如下:
- 输入数据被划分为若干个数据块,每个数据块对应一个Mapper任务。
- Mapper任务读取输入数据块,并调用用户自定义的Map函数处理数据,生成一系列的键值对。
- 键值对通过Shuffle过程进行排序和分组,以便Reducer任务能够根据键值对进行汇总处理。
- Reducer任务调用用户自定义的Reduce函数处理数据,生成最终的输出结果。
二、YARN原理
YARN(Yet Another Resource Negotiator)是Hadoop集群的资源管理系统。它负责整个系统的资源管理和分配,处理客户端请求。YARN主要由ResourceManager(RM)、ApplicationMaster(AM)和NodeManager(NM)三个组件组成。
ResourceManager(RM):RM是YARN的核心组件,负责整个系统的资源管理和分配。它接收客户端请求,并根据请求的类型将其转发给相应的组件进行处理。RM主要包括两个组件:调度器(Scheduler)和应用管理器(Applications Manager)。调度器负责分配资源给各个应用程序,而应用管理器负责启动和管理应用程序。
ApplicationMaster(AM):AM是每个应用程序的协调器,负责协调应用程序的执行。当一个应用程序启动时,RM会为该应用程序分配一个AM。AM负责与NM通信,协调应用程序的执行。AM还负责管理应用程序的资源需求,并根据调度器的决策请求资源。
NodeManager(NM):NM是集群中的节点管理器,负责管理节点的资源。每个节点都有一个NM,它负责启动和管理在该节点上运行的应用程序的容器。容器是应用程序的执行单元,每个容器都有一定的资源限制(如内存、CPU等)。NM还负责监控容器的状态和资源使用情况,并向RM报告。
YARN的工作流程如下: - 客户端提交应用程序到RM,RM将应用程序的元数据信息存储在HDFS上。
- RM根据调度策略为应用程序分配一个AM。
- AM根据资源需求启动容器,并监控容器的状态和资源使用情况。
- AM通过RM向调度器请求资源,调度器根据集群的资源使用情况为AM分配资源。
- AM根据调度器的决策启动或停止容器,并更新应用程序的状态信息。