zoukankan      html  css  js  c++  java
  • 初始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对象

  • 相关阅读:
    CodeForces 757C Felicity is Coming!(排列组合)
    Ural 1519 Formula 1( 插头dp )
    FZU 2187 回家种地 ( 扫描线 + 离散 求矩阵单次覆盖面积 )
    HDU 1255 覆盖的面积 ( 扫描线 + 离散 求矩阵大于k次面积并 )
    ZOJ 3841 Cards
    HDU 4012 Paint on a Wall(状压+bfs)
    Topcoder SRM653div2
    2015 GDUT校赛
    Topcoder SRM652div2
    CodeChef A String Game(SG)
  • 原文地址:https://www.cnblogs.com/zxbdboke/p/10467735.html
Copyright © 2011-2022 走看看