MapReduce编程模式——WordCount程序详解

本文深入解析MapReduce编程模式,介绍Hadoop的四大组件,并以WordCount程序为例,详细阐述MapReduce的工作原理,包括MapTask和ReduceTask的运行机制,以及并行度的决定因素。
摘要由CSDN通过智能技术生成

首先介绍一下Hadoop的四大组件:
- HDFS:分布式存储系统
- MapReduce:分布式计算系统
- YARN:hadoop的资源调度系统
- Common:以上三大组件的底层支撑组件,主要提供工具包和RPC框架等

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

为什么要用MapReduce?
- 海量数据在单机上处理因为硬件资源的限制,无法胜任;
- 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度;
- 引入MapReduce框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由框架来处理。

MapReduce的整体结构:
- MRAppMaster:MapReduce Application Master,分配任务,协调任务的运行;
- MapTask:阶段并发任务,负责Mapper阶段的任务处理——YARNChild;
- ReduceTask:阶段汇总任务,负责Reducer阶段的任务处理——YARNChild;

WordCount程序代码示例:
//Mapper阶段

package com.wc;

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;

/*
 * Map阶段
 *
 * 四个泛型:
 * LongWritable:框架读取文件输入的key的类型
 * Text:框架读取文件输入的value的类型
 * Text:经Map阶段处理后输出的key的类型
 * IntWritable:经Map阶段处理后输出的value的类型
 *
 * */
public class Mapper_wc extends Mapper<LongWritable, Text, Text, IntWritable> {
    /*
     * 参数:
     * key:框架读取每一行的偏移量
     * value:框架读取每一行的内容
     * context:上下文对象,用于框架——Map——Reduce之间的数据传输
     *
     * 这个方法每一行调用一次,一次获取文档中一行的内容
     *
     * */
    @Override
    protected void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
        /*
         * 1. 转Text类型转Java.String类型
         * 2. 对转String的value根据业务需求进行一系列的逻辑操作
         *   (对文件中每一行的内容进行切分等)
         * 3. 将得到的需要输出的值转为hado
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值