Hadoop专栏(六)使用idea操作MapReduce(理论篇)

一、什么是Mapreduce?

1.MapReduce是一个分布式计算框架
它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务
起源于Google
2.适用于大规模数据处理场景
每个节点处理存储在该节点的数据
3.每个job包含Map和Reduce两部分

二、MapReduce的组成

用户编写的程序分成三个部分:Mapper、Reducer和Driver
Mapper

MapReduce框架处理的数据格式是<K,V>键值对形式 Map端接收<K,V>键值对数据,经过处理输出新的<K,V>键值对
Map端处理逻辑写在Mapper类中的map()方法中

Reducer

Reduce端搜集多个Mapper端输出的<K,V>数据,进行汇总 Reducer的业务逻辑写在reduce()方法中
每一组相同k的<k,Iterator>组调用一次reduce()方法

Driver

整个程序需要编写一个Driver来进行提交 将自定义Mapper和Reducer类组合成一个job,并提交job对象

三、主要方法

Mapper主要方法

void setup(Context context)
org.apache.hadoop.mapreduce.Mapper.Context 
void map(KEY key, VALUE value, Context context)

为输入分片中的每个键/值对调用一次

void cleanup(Context context)
void run(Context context)

可通过重写该方法对Mapper进行更完整控制
Reducer主要方法

void setup(Context context)
org.apache.hadoop.mapreduce.Reducer.Context 
void reduce(KEY key, Iterable<VALUE> values, Context context)

为每个key调用一次

void cleanup(Context context)
void run(Context context)

可通过重写该方法来控制reduce任务的工作方式

四、Hadoop序列化

1.必须可序列化(serializable)
作用:网络传输以及持久化存储
IntWritable、LongWritable、FloatWritable、Text、DoubleWritable, BooleanWritable、NullWritable等
2.都继承了Writable接口
并实现write()和readFields()方法
3.Keys必须实现WritableComparable接口
MapReduce框架会按照Key进行排序
Reduce阶段需要sort
keys需要可比较

五、MapReduce框架原理

1.MapReduce执行流程

split

计算分片

map

调用map()方法对数据进行处理

shffule 

主要负责将map端生成的数据传递给reduce端

reduce 

对Shffule阶段传来的数据进行最后的整理合并
2.MapReduce框架中核心类介绍
在这里插入图片描述

六、InputFormat接口

1.定义了如何将数据读入Mapper

InputSplit[] getSplits

InputSplit表示由单个Mapper处理的数据
getSplits方法将一个大数据在逻辑上拆分为InputSplit

RecordReader<K,V> getRecordReader

2.常用InputFormat接口实现类

FileInputFormat(抽象类)
TextInputFormat
KeyValueTextInputFormat
DBInputFormat
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值