初始MapReduce

MapReduce

概述

  • MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用"的核心框架

  • MapReduce核心功能是将用户编写的业务逻辑代码自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

  • MapRedcue优点:

    • 海量数据(PB级)离线处理&易开发&易运行&高容错性

  • MapReduce缺点:

    • 实时流式计算做不到

    • 不擅长DAG(有向图)计算:多个应用程序存在依赖关系,后一个程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

MapReduce进程

  • 一个完整的MapReduce程序在分布式运行时有三个类实列进程:

    • MrAppMaster:负责整个程序的过程调度及状态协调。

    • Map Task:负责Map阶段的整个数据处理流程。

    • Reduce Task:负责Reduce阶段的整个数据处理流程。

常用数据序列化类型

  • 常用数据类型对应的Hadoop数据序列化类型

    Java类型Hadoop Writable类型
    boolean BooleanWritable
    byte ByteWritable
    int IntWritable
    float FloatWritable
    long LongWritable
    double DoubleWritable
    String Text
    map MapWritable
    array ArrayWritable

MapReduce编程规范

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

  • Mapper阶段

    • 用户自定义的Mapper要继承自己的父类

    • Mapper的输入数据是KV对的形式(KV的类型可自定义)

    • Mapper中的业务逻辑写在map()方法中

    • Mapper的输出数据是KV对的形式(KV的类型可自定义)

    • map()方法(MapTask进程)对每个<K,V>调用一次

  • Reduce阶段

    • 用户自定义的Reduce要继承自己的父类

    • Reduce的输入数据类型对应Mapper的输出数据类型,也是KV

    • Reduce中的业务逻辑写在Reduce()方法中

    • Reduce()方法对每一组相同K的<K,V>组调用一次Reduce()方法

  • Driver阶段

    • 相当于YARN集群的客户端,用于提交我们整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象

posted on 2019-03-03 21:25  0x153_小波  阅读(132)  评论(0编辑  收藏  举报