Hadoop学习笔记:MapReduce原理简单学习

MapReduce是由Google提出的分布式计算模型,用于处理大规模数据集。它包含Map和Reduce两个主要阶段,用户仅需实现对应的函数即可完成分布式计算。本文详细介绍了MR作业的提交过程及Map、Reduce任务的具体处理步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MR是一种编程思想。
  • MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题.
  • MR由两个阶段组成:MapReduce,用户只需要实现map()reduce()两个函数,即可实现分布式计算,非常简单。
  • 这两个函数的形参是keyvalue对,表示函数的输入信息

MR Job提交过程

    (1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...)
    (2).JobClient通过RPC和RM进行通信,返回一个存放jar包的地址(HDFS)和jobId
    (3).client将jar包写入到HDFS当中(path = hdfs上的地址 + jobId)
    (4).开始提交任务(任务的描述信息,不是jar, 包括jobid,jar存放的位置,配置信息等等)
    (5).RM进行初始化任务
    (6).读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
    (7).NM通过心跳机制领取任务(任务的描述信息)
    (8).下载所需的jar,配置文件等
    (9).NM启动一个java child子进程,用来执行具体的任务(MapperTask或ReducerTask)
    (10).将结果写入到HDFS当中


mapreduce的map和reduce过程,看图学原理:

其中shuffle过程有分组,排序,分区等操作。

 1. map任务处理

1.1读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。

1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

1.3 对输出的key、value进行分区。

1.4 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。

1.5 (可选)分组后的数据进行归约。

2.reduce任务处理

2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。

2.2对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

2.3 把reduce的输出保存到文件中。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值