大数据学习教程SD版第四篇【Hadoop MapReduce】

4. Hadoop MapReduce

分布式计算引擎框架,离线计算,不擅长DAG计算

4.1 MapReduce 优点

  1. 易于编程,实现框架接口即可
  2. 良好的扩展性,动态加节点
  3. 高容错性,任务可以转移
  4. 适合海量数据计算

4.2 MapReduce 核心思想

一个MapTask 默认处理128M数据

以WordCount 的MapReduce程序为例

  • Map阶段 MapTask并行工作
  1. 读数据,按行处理
  2. 按空格(或其他切割符)切分单词
  3. 形成KV键值对(word,1)
  4. 将所有KV键值对,按照指定的分区,溢写到磁盘
  • Reduce阶段 ReduceTask并行工作
  1. 根据MapTask的分区数,开启对应数量的ReduceTask
  2. 一个ReduceTask只处理对应分区号的多个MapTask产生的结果
  3. 最终完成单词统计,并输出到结果文件

4.3 MapReduce 序列化类型

除了String 在Hadoop 类型中是Text外,其余都是在原Java类型后加上Writable后缀

4.4 MapReduce 编程规范

  • Mapper阶段
  1. 继承Mapper父类,重写map()方法
  2. Mapper输入输出都是KV
  3. map()方法定义处理逻辑,对每个KV调用一次
  • Reduce阶段
  1. 继承Reduce父类,重写reduce()方法
  2. Reduce输入输出也是KV
  3. reduce()方法定义处理逻辑,对每组KV(按K分组)调用一次
  • Dirver阶段

启动MapReduce程序的客户端,提交任务到YARN集群

4.5 MapReduce WordCount

执行流程: Mapper : setup() -> run() -> for map() -> cleanup() ->Reducer: setup() ->run -> for reduce() ->cleanup()

  • WordCountMapper
package com.ipinyou.mapreduce.wordcount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
   

    private Text outK = new Text();
    private IntWritable outV = new IntWritable(1);

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   
        String line = value.toString();
        String[] words = line.split
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道-闇影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值