MapReduce初学

本文介绍了MapReduce的基本概念、设计思想和特点。MapReduce是一种分布式计算框架,适用于大规模数据处理,通过分而治之的方式简化并行计算。文章详细讲解了MapReduce的执行过程、Mapper和Reducer类、Combiner优化、Partitioner自定义分区以及OutputFormat接口。此外,还涵盖了MapReduce编程模型中的InputFormat、Job类执行任务以及InputSplit数据切片。
摘要由CSDN通过智能技术生成

一.关于MapReduce

(一)什么是MapReduce?

1.MapReduce是一个分布式计算框架

  • 它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务。
  • 起源于Google,它是一个编程模型,用于大数据量的计算

2.适用于大规模数据处理场景

  • 每个节点处理存储在该节点的数据

3.每个job包含Map和Reduce两部分

(二) MapReduce的设计思想

1.分而治之

  • 简化并行计算的编程模型,即把对大规模数据集的操作分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,从而得到最终的计算结果

2 构建抽象模型:Map和Reduce

  • 开发人员专注于实现Mapper和Reducer函数

3.隐藏系统层细节

  • 开发人员专注于业务逻辑实现

(三) MapReduce特点

  • 优点

1.易于编程
MapReduce只需简单地实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机上运行
2.良好的可扩展性
当计算机资源得不到满足的时候,可以通过简单的增加机器来扩展它的计算能力
3.高容错性
比如一台机器挂了,可以把它上面的计算任务转移到另一个节点上运行,不至于整个任务运行失败,而且这个过程不需要人工干预,
完全由hadoop内部完成
4.高吞吐量
能对PB量级以上海量数据进行离线处理.适合离线处理而不适合实时处理,比如要求毫秒级返回一个结果,会很难做到

  • 不适用领域

1.难以实时计算
2.不适合流式计算
3.DAG(有向图)计算

(四)MapReduce实现WordCount

在这里插入图片描述

(五)MapReduce执行过程

1.数据定义格式

map: (K1,V1) → list (K2,V2)
reduce: (K2,list(V2)) → list (K3,V3)

2.MapReduce执行过程

Mapper
Combiner
Partitioner
Shuffle and Sort
Reducer

在这里插入图片描述

(六)Key&Value类型

1.必须可序列化(serializable hadoop实现的是Writable接口)

  • 作用:网络传输以及持久化存储
  • IntWritable、LongWriteable、FloatWritable、Text、DoubleWritable, BooleanWritable、NullWritable等

2.都继承了Writable接口

  • 并实现write()和readFields()方法

3.Keys必须实现WritableComparable接口

  • Reduce阶段需要sort
  • keys需要可比较

二.MapReduce编程模型

在这里插入图片描述

(一)InputFormat接口

在这里插入图片描述

(二)Mapper类

Mapper主要方法

1.void setup(Context context)
org.apache.hadoop.mapreduce.Mapper.Context
2.void map(KEY key, VALUE value, Context context)
为输入分片中的每个键/值对调用一次
3.void cleanup(Context context)
4.void run(Context context)
可通过重写该方法对Mapper进行更完整控制

代码示例如下:

public class WCMapper extends Mapper<LongWrita
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值