先来看2个问题:1.什么是MapReduce,以及原理?2.yarn的组件和功能有什么?
首先来说第一个问题,MapReduce是Hadoop三大马车中的一架,即计算框架,先将数据进行局部计算即map阶段,在将数据进行汇总计算reduce阶段。map阶段主要做的事情有对数据进行切割,在将数据写入内存,此间会有一个缓冲区,默认大小为100M,当达到一定的大小即80%的时候会触发溢写,将数据写入磁盘中,此间会进行一个排序操作。
- 其中影响map个数的因素有文件的个数、文件的大小、切片的大小(有参数控制)
reduce阶段主要做的事情,map阶段处理的数据从磁盘的中拉取出来,进行一个分组排序后写入磁盘。
- 期间影响reduce的个数的因素有,用户是否设置,不设置为一。
MapReduce中最重要的一部分就是shuffle,那么那个阶段为shuffle呢,就是在map处理后到reduce处理前的一阶段为shuffle阶段,主要包括数据的溢写排序,分区,拉取,合并排序等步骤,这一阶段也就是后续会讲到的会造成问题的数据倾斜的源头的阶段。
接下来第二个问题,yarn是一个通用资源的管理系统和调度平台。主要有resourcemanager(主角色),nodemanager(从角色),以及ApplicationMaster(程序内部组件)三部分构成。其主要功能是:
- ResourceManager 负责整个集群的资源管理和分配,是一个全局的资源管理系统。
是程序申请资源的唯一入口 负载调度。 - nodemanager 负责每台机器上具体的资源管理 负责启动 关闭container容器。
- ApplicationMaster来管理程序执行情况 程序内部的资源申请 各阶段执行情况的监督。