hadoop--MapReduce

本文详细介绍了Hadoop MapReduce的运行流程,包括默认的Block与切片对应、Map任务处理、分区与排序、洗牌阶段以及Reduce处理。同时,概述了MapReduce作业的提交流程,从客户端请求作业ID到RM分配Container,再到MRAppMaster的运行。最后,以一个简单的单词计数功能为例,展示了MapReduce作业的代码实现步骤。
摘要由CSDN通过智能技术生成

一、MapReduce运行流程

在这里插入图片描述
1.默认情况下,一个block块对应一个切片(逻辑切片)
2.一个切片对应一个map任务
3.map方法的调用:
    a.map任务默认按行读取切片数据
    b.将读取的行封装为键值对(字节偏移量为key,读取的行为value)
    c.在map方法中按照逻辑进行对键值对的处理,并输出键值对
4.接着map输出的键值对准备输出到环形缓冲区:
    a.map输出的键值对在写到环形缓冲区前先通过分区器计算分区号:取key的hashcode对reducer个数取模
    b.环形缓冲区默认大小100MB,阈值为80%,一旦缓冲区写入的内容超过阈值,就要溢写
    c.在将内存数据溢写到磁盘的时候,需要将数据按照分区号进行排序,相同分区号按照key字典排序
    d.当溢写文件>=3个,进行归并,归并过程若设置了Combiner,则Combiner对键值对进行压缩(combiner算法需要满足结合律)
5.洗牌:当一个map任务结束运行,MRAppMaster会通知reducer,reducer向完成的map任务发送Http Get请求,根据reducer编号拉取分区数据到reducer本地
6.归并:如果有时间,reducer会按照归并因子对洗牌数据进行归并并落磁盘,如果没有时间,就只进行归并不落磁盘
7.reduce处理:reducer根据分组比较器对有序的键值对序列进行分组,每个分组调用一次reduce方法,并输出结果,当所有的map任务运行结束并且reducer拉取了所有需要的数据,开始进行reduce过程
8.输出结果到HDFS,每个reducer任务写一个文件

二、MapReduce作业(Job)提交流程

在这里插入图片描述
1.客户端操作:
    a.客户端向RM发送请求,请求作业ID(取号)
    b.检查作业的输出,若输出没设置或者输出已存在,抛异常
    c.检查作业输入并计算切片信息,若输入没设置或设置错误,抛异常
    d.若以上都顺利完成,将jar包/切片信息/配置信息上传到HDFS上面的以作业编号命名的目录中
    e.一切完成后向RM提交作业
2.ResourceManager任务:挑选一台NodeManager(分配容器),让其分配一个容器(Container),在此容器中运行起来MRAppMaster进程
3.在作业提交过程中MRAppMaster扮演者重要的角色:
    a.MRAppMaster从作业编号命名的目录中下载作业信息,计算出需要多少个map任务和多少个reduce任务
    b.MRAppMaster向RM为map任务申请容器,并直接根RM分配的NM通信,启动map任务
    c.当map任务完成度达到5%就开始为reduce任务申请容器
    d.当任务运行结束,MRAppMaster通知客户端任务完成

三、MapReduce作业(Job)提交代码实现步骤

实现一个简单的数单词功能!
1.MainClass类:

packageimport org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值