首页 > 其他分享 >MapReduce的基础知识

MapReduce的基础知识

时间:2023-07-03 12:33:05浏览次数:40  
标签:Mapper 自定义 Reducer MapReduce 基础知识 KV 数据

1、什么是MapReduce

  1. Hadoop MapReduce 是一个 分布式计算框架,用于轻松编写分布式应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)
  2. MapReduce 是一种面向海量数据处理的一种指导思想,也是一种用于对大规模数据进行分布式计算的编程模型。

2、Map Reduce的优缺点

2.1 优点

  • MapReduce易于编程: 它简单的实现一些接口,就可以完成一个分布式程序
  • 良好的扩展性: 当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
  • 高容错性: MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。
  • 适合PB级以上海量数据的离线处理: 可以实现上千台服务器集群并发工作,提供数据处理能力。

2.2 缺点

  • 实时计算性能差: MapReduce 主要应用于离线作业,无法做到秒级或者是亚秒级别的数据响应。
  • 不能进行流式计算: 流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。
  • 不擅长DAG(有向无环图)计算
    多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

3、 MapReduce进程

一个完整的MapReduce程序在分布式运行时有三类实例进程:
(1)MrAppMaster:负责整个程序的过程调度及状态协调。
(2)MapTask:负责Map阶段的整个数据处理流程。
(3)ReduceTask:负责Reduce阶段的整个数据处理流程。

4、MapReduce编程规范

  • 用户编写的程序代码分成三个部分: Mapper、Reducer和Driver(客户端提交作业驱动程序)
  • 用户自定义的Mapper和Reducer都要继承各自的父类。

Mapper阶段

  1. 用户自定义的Mapper要继承自己的父类
  2. Mapper的输入数据是KV对的形式(KV的类型可自定义)
  3. Mapper中的业务逻辑写在map()方法中
  4. Mapper的输出数据是KV对的形式(KV的类型可自定义)
  5. map()方法(MapTask进程)对每一个<K,V>调用一次

Reducer阶段

  1. 用户自定义的Reducer要继承自己的父类
  2. Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
  3. Reducer的业务逻辑写在reduce()方法中
  4. ReduceTask进程对每一组相同k的<k,v>组调用一次reduce()方法

Driver: 描述的是提交Job对象需要的各种必要的信息。

MapReduce内置了很多默认属性,比如: 排序(key的字典序)、分组(reduce阶段key相同的为一组,一组调用一次reduce处理)等,这些都和数据的K有关,所以说kv的类型数据确定是及其重要的。

5、常用数据序列化类型

Java类型 Hadoop Writable类型
Boolean BooleanWritable
Byte ByteWritable
Int IntWritable
Float FloatWritable
Long LongWritable
Double DoubleWritable
String Text
Map MapWritable
Array ArrayWritable
Null NullWritable

标签:Mapper,自定义,Reducer,MapReduce,基础知识,KV,数据
From: https://www.cnblogs.com/huan1993/p/17522446.html

相关文章

  • 网络安全 | 密码基础知识介绍
    概述密码介绍安全问题保密性:对发送的消息进行获取完整性:对发送的消息进行篡改身份伪造:对发送的主体身份进行篡改,a发的消息,篡改为b发的行为抵赖:对发送的消息进行否认,丧失行为的可追溯性密码技术保密性完整性真实性不可否认性密码发展史密码起源:狼烟、虎符,基于“密语”古典密码:凯撒密......
  • Linux Shell基础知识
    预计更新1:基础知识简介和安装基本命令变量和环境变量2:流程控制条件语句循环语句函数3:文件处理文件读写文件权限和所有权文件搜索和替换4:网络和进程网络通信进程管理信号处理5:文本处理正则表达式文本分析和处理生成报告和日志6:用户界面命令行参数和选......
  • 大数据面试题集锦-Hadoop面试题(三)-MapReduce
    你准备好面试了吗?这里有一些面试中可能会问到的问题以及相对应的答案。如果你需要更多的面试经验和面试题,关注一下"张飞的猪大数据分享"吧,公众号会不定时的分享相关的知识和资料。目录1、谈谈Hadoop序列化和反序列化及自定义bean对象实现序列化?2、FileInputFormat切片机制3、......
  • 网络基本认知(1)--网络基础知识
    专业和班级信息与计算科学成绩 姓名lhk学号1225课程名称计算机网络实验名称网络基本认知(1)--网络基础知识实验目的和要求理解和掌握有关网络的概念、分类、组成等基本知识。通过使用网络,了解网络的基本功能。网络性能对......
  • JQUERY基础知识
    JQUERYJQuery简介jQuery是什么?有什么用,跟js的关系jQuery是一个JavaScript库,它简化了客户端JavaScript编程的过程,特别是针对HTML文档遍历和操作、事件处理、动画效果和Ajax操作。使用jQuery可以更容易地编写可维护的JavaScript代码,同时提高了跨浏览器的兼容性jQuery安装方式......
  • 安庆师范大学 计算机基础知识
    1.第一章1.1计算机的分类和使用  1.1.1分类A计算机是按照运算速度、字长、存储容量将计算机分为巨型机、大型机、中型机、小型机和微型机。常用的计算机分类有,个人计算机(微型机)、服务器(中型机)、大型计算机(大型机)、超级计算机(巨型机)、嵌入式计算机(微型机)和移动设备加上量子......
  • 分布式计算框架-MapReduce
    MapReduce是分散->汇总模式的分布式计算框架,可供开发人员开发相关程序进行分布式数据计算。MapReduce提供了2个编程接口:MapReduce其中Map功能接口提供了分散的功能,由服务器分布式对数据进行处理。Reduce功能接口提供了汇总(聚合)的功能,将分布式的处理结果汇总统计......
  • Android:知道类加载过程面试还是卡壳?硬核总结,一网打净“类”的基础知识
    前言之前说了类加载的过程,但是有的读者表示还是有些面试题还是答不来,所以今天就来总结下类加载、对象实例化方面的知识点/面试题,帮助大家加深印象。全是干货,一网打尽类的基础知识!先看看下面的问题都能回答上来吗?描述new一个对象的过程,并结合例子说明。类初始化的触发时机。多线程进......
  • 即时通讯技术文集(第18期):IM架构设计基础知识合集 [共16篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第18 期。[- 1 -] IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?[链接] http://www.52im.net/thread-1647-1-1.html[摘要] MQ消息中间件可以理解一个水池,水池的这头是消息生产者......
  • 数据库基础知识
    数据库设计范式:第一范式每一列不能在进行换划分,第二范式每一张表都有自己的使命,且做的事相近。https://www.cnblogs.com/zl181015/p/9242699.html 查询执行顺序:from->on->join->where->groupby->having->count(聚合函数)->select->distinct->orderby->......