版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
1、MapReduce作业、集群及其逻辑架构
前文已经描述,MapReduce是一个编程框架,它为程序员提供了一种快速开发海量数据处理程序的编程环境,并能够让基于这种机制开发出的处理程序以稳定、容错的方式并行运行于由大量商用硬件组成的集群上。同时,MapReduce又是一个运行框架,它需要为基于MapReduce机制开发出的程序提供一个运行环境,并透明管理运行中的各个细节。每一个需要由MapReduce运行框架运行的MapReduce程序也称为一个MapReduce作业(mapreduce job),它需要由客户端提交,由集群中的某专门节点负责接收此作业,并根据集群配置及待处理的作业属性等为其提供合适的运行环境。其运行过程分为两个阶段:map阶段和reduce阶段,每个阶段都根据作业本身的属性、集群中的资源可用性及用户的配置等启动一定数量的任务(也即进程)负责具体的数据处理操作。
在MapReduce集群中,负责接收客户端提交的作业的主机称作master节点,此节点上具体负责接收作业的进程称作JobTracker。负责运行map任务或reduce任务的节点称作slave节点,其运行的作业处理进程为TaskTracker。默认情况下,一个slave节点可同时运行两个map任务和两个reduce任务。
MapReduce客户端提交一个作业