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对象

初始MapReduce的更多相关文章

  1. 每天收获一点点------Hadoop之初始MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大数据量的计算,通常采用的处理手法就是并行计算.但对许多开发者来 ...

  2. 4 weekend110的hdfs&mapreduce测试 + hdfs的实现机制初始 + hdfs的shell操作 + 无密登陆配置

    Hdfs是根/目录,windows是每一个盘符, 1  从Linux里传一个到,hdfs里去 2  从hdfs里下一个到,linux里去 想从hdfs里,下载到linux, 涨知识,记住,hdfs是建 ...

  3. MapReduce 简介

    2. MapReduce 简介 MapReduce 实际上是分为两个过程 map 过程 : 数据的读取 reduce 过程 : 数据的计算 并行计算是一个非常复杂的过程, mapreduce是一个并行 ...

  4. MapReduce输入格式

    文件是 MapReduce 任务数据的初始存储地.正常情况下,输入文件一般是存储在 HDFS 里面.这些文件的格式可以是任意的:我们可以使用基于行的日志文件, 也可以使用二进制格式,多行输入记录或者其 ...

  5. MapReduce Shuffle原理 与 Spark Shuffle原理

    MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌.混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好.MapReduce中的Shuffle更像是洗牌的逆过程,把一 ...

  6. MapReduce编程job概念原理

    在Hadoop中,每个MapReduce任务都被初始化为一个job,每个job又可分为两个阶段:map阶段和reduce阶段.这两个阶段分别用两个函数来表示.Map函数接收一个<key,valu ...

  7. MongoDB学习笔记——聚合操作之MapReduce

    MapReduce MongoDB中的MapReduce相当于关系数据库中的group by.使用MapReduce要实现两个函数Map和Reduce函数.Map函数调用emit(key,value) ...

  8. MapReduce中TextInputFormat分片和读取分片数据源码级分析

    InputFormat主要用于描述输入数据的格式(我们只分析新API,即org.apache.hadoop.mapreduce.lib.input.InputFormat),提供以下两个功能: (1) ...

  9. MapReduce的输入输出格式

    默认的mapper是IdentityMapper,默认的reducer是IdentityReducer,它们将输入的键和值原封不动地写到输出中. 默认的partitioner是HashPartitin ...

随机推荐

  1. Atom打开txt文件中文乱码解决、指定文件的语法格式、win10中禁止睡眠

    1.Atom中文乱码解决 首先保证打开的txt文件的编码格式为UTF-8无BOM编码格式,可以使用Notepad++更改,如下图所示: 然后再在atom中打开文件,并右键点击文件内容的任意位置,Cha ...

  2. PAT 1032 挖掘机技术哪家强(20)(有测试样例)

    1032 挖掘机技术哪家强(20)(20 分) 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10 ...

  3. andorid 菜单 进度条

    activity_ui2.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  4. Ubuntu下安装VS code

    sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubun ...

  5. [Robot Framework] Robot Framework用Execute Javascript对XPath表示的元素执行Click操作

    Execute Javascript document.evaluate("//a[contains(@href,'createBook')]", document, null, ...

  6. JDK 之 NIO 2 WatchService、WatchKey(监控文件变化)

    JDK 之 NIO 2 WatchService.WatchKey(监控文件变化) JDK 规范目录(https://www.cnblogs.com/binarylei/p/10200503.html ...

  7. RunAsPolicy Exit Code 1替代

    <Policies>  <RunAsPolicy CodePackageRef="Code" UserRef="SetupLocalSystem&quo ...

  8. 码云-中国的github

    # 域名城 https://www.domain.cn/ # 码云 https://gitee.com

  9. php结合layui实现前台加后台操作

    一:前台加载出前端页面: HTML: lay-data="{width:800,height:400, url:'data.php', page:true, id:'test'} js: l ...

  10. PHP可变函数

    可变函数是指如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行它 可变函数可以用来实现包括回调函数,函数表在内的用途 $str = 'strtolower'; echo $str( ...