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

本文详细介绍了Hadoop MapReduce的优缺点、核心思想、序列化类型、编程规范及工作流程,包括MapTask和ReduceTask的机制。重点讨论了WordCount案例、自定义序列化、Shuffle机制、分区与排序以及预聚合Combiner。此外,还涉及MapReduce在ETL、Join操作中的应用以及压缩策略。
摘要由CSDN通过智能技术生成

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
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道-闇影

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

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

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

打赏作者

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

抵扣说明:

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

余额充值