FREE教程
目录
  • 主页
  • Oracle教程
  • redis教程
  • hadoop
  • ODI教程
  • BIEE教程
hadoop教程
hadoop教程 初识hadoop hadoop vs 其它系统 Hadoop HDFS文件系统介绍 hadoop 详细安装步骤 hadoop分布式集群安装(1) hadoop安装(2)_配置节点SSH无密码访问 hadoop安装(3)_Linux配置JDK环境 hadoop安装(4)_下载安装配置hadoop hadoop不同版本区别 hadoop hdfs 命令行客户端(shell)常用使用命令 web界面访问hadoop hdfs管理界面 idea 访问hadoop hdfs方法 idea 搭建hadoop开发环境 java Api操作hdfs文件系统 MapReduce介绍 hadoop的Mapreduce运行机制(一) hadoop的Mapreduce运行机制(二) Mapreduce中Map任务的运行机制 Mapreduce中reduce任务的运行机制 Mapreduce入门程序wordcount
分类导航
Oracle基础教程 PL/SQL教程 Oracle管理 Oracle备份和恢复 Oracle RAC Oracle优化 Oracle技术 redis基础教程 hadoop教程
    首页->hadoop->hadoop教程->Mapreduce中Map任务的运行机制
hadoop的Mapreduce运行机制(二)
Mapreduce中reduce任务的运行机制

Mapreduce的Maptask的运行机制

上一篇讲解了hadoop2.0当中Mapreduce是如何运行的,知道MRAppMaster通过调用yarn节点管理器启动一个节点容器来运行Map任务和reduce任务。本篇文章来详解讲解一下Map任务是如何运行的。

Mapreduce map任务

read阶段:

任务节点根据客户端程序代码中编写的待处理的数据。然后根据任务提交的配置信息来计算需要的maptask的数据。然后Maptask的第一个阶段就是读的阶段,从待处理的分片数据(inputSplit)当中读出一个个键值对key/value。

Map阶段:

通过用户程序编写的Map()函数处理,把read阶段解析处理的键值对进行处理,再产生一系列新的键值对。

Collect阶段:

在调用完map()函数,会调用outputCollector对map的结果进行分区处理(partitioner),并写入到内存缓冲区中。

溢写阶段:

当缓冲区满了,maptask会将缓冲区的数据“溢写“到本地磁盘上,生成一个spillN.out(其中N代表溢写的次数)的文件。

1、利用快速排序算法对缓存区内的数据进行排序,按照分区编号Partition(先)、分区内的key(后)进行排序,把数据以分区为单位聚集在一起,同时分区内的key是有序的。

2、然后按照分区编号的大小,由小到大依次写入到spillN.out临时文件当中。假如用户程序编写了combiner函数,那么在写入之前还会根据用户的需求对分区数据进行一次聚集处理。

3、将分区数据的元信息写到内存索引数据结构SpillRecord中,主要是元数据在临时文件中的位置、压缩前数据大小和压缩后数据大小。如果当前内存索引大小超过1MB,将会把内存索引写到文件spillN.out.index中。

Combine阶段:

当数据处理完后,MapTask会将所有临时文件进行合并,合并成一个大文件保存到文件output/file.out中,同时生成相应的索引文件output/file.out.index。在进行文件合并过程中,MapTask以分区为单位进行合并。

hadoop的Mapreduce运行机制(二)
Mapreduce中reduce任务的运行机制
关于我们 | 免责声明 | Copyright ? 2018 FREE教程 | 备案号:闽ICP备18020855号-1
公安备案

闽公网安备 35020602001245号