赞
踩
mapreduce在运行的过程中大致概括为5个步骤
1. [input阶段]获取输入数据进行分片作为map的输入
2. [map阶段]过程对某种输入格式的一条记录解析成一条或多条记录
3. [shffle阶段]对中间数据的控制,作为reduce的输入
4. [reduce阶段]对相同key的数据进行合并
5. [output阶段]按照格式输出到指定目录
input阶段主要是从节点上反序列化数据,读取后切片,供map阶段使用
序列化格式和inputformat格式可以自定义设置
只有支持分片的压缩格式可以分片
记录格式:如serse 用正则表达式来转换文本hive
具体的步骤顺序如下:
1. 访问datanode中的数据反序列化数据并进行切片,为每一个切片分配一个map任务
2. 并发的执行这些任务
3. 通过recordReader读取切片中的每一条记录,按照记录格式读取,偏移值作为map的key,记录行作为value,当做map方法的参数
通过对输入记录的处理,转换成一个或多个中间记录
需要注意:
1. shuffle阶段会对中间值进行优化,并且将分区的数据分发给各个reduce处理
map任务的输出默认是放在本地磁盘的临时缓冲目录中的
分区,排序,combiner过程可自定义
由于受限于集群可用带宽,通常会对中间数据做压缩,combiner处理,减少网络带宽消耗
分区的作用就是决定根据map 输出的key值由哪个reduce处理
mapper实现类读取配置文件属性,可以在配置中指定压缩的格式
每一个分组的后台线程对输出结果的key进行排序,在排序的过程中,有combine函数则会进行调用
处理
<key,list<value>>
对,对每个key产生一个结果
对输出数据通常会做压缩,节省磁盘空间
将reduce结果按照输出的格式写入文件中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。