MapReduce详解

2023-05-16

目录

(一)MapReduce的基本知识

(二)、MapReduce计算框架概述

(三)MapReduce 具体计算过程


(一)MapReduce的基本知识

1、 MapReduce的使用场景:MapReduce实现分布式计算

2、方便编程人员在不熟悉分布式并行编程计算情境下,对海量分布的大数据进行处理。

3、mapreduce 有缺陷存在。它适用于数据量很大,并且可以分解成小块数据同时处理,结果是正确的情况。对于一些不能分开求解的问题,不能使用mapreduce。

4、mapreduce的工作机制主要包括两部分,map过程,reduce过程。map过程执行map函数对输入的键值对处理,输出仍为键值对。reduce阶段执行reduce函数。

5、可以自定义数据类型。Hadoop中的数据类型其实质为对Java数据类型的封装。在大数据处理下,为了使数据传输更为高效,对所有类型的数据都以字节流的形式传输,因此Hadoop中的数据类型对Java中的数据类型进行了封装。通过实现Writable接口,可以自定义数据类型。

6、数据输入格式默认是TextInputFormat类型对象,TextInputFormat类继承于FileInputFormat类,FileInputFormat类继承自InputFormat抽象类。InputFormat抽象类中声明了三个抽象方法,可以通过重载RecordWriter方法重新设置输入格式。

7、数据的输出格式默认是TextOutputFormat类型对象,TextOutputFormat类继承于FileOutputFormat类,FileOutputFormat类继承自OutputFormat抽象类。OutputFormat抽象类中声明了三个抽象方法,可以通过重载RecordWriter方法重新设置输出格式。

8、通过实现对应接口,可以实现不同的分区方式等。

(二)、MapReduce计算框架概述

mapreduce计算框架是将代码往数据端移动。

主要通过两个阶段来实现对问题的处理。map阶段、reduce阶段。

map阶段有许多map进程同时并行。由于map阶段的输入由inputformat对象决定,因此可以使用默认的分割方法,也可以自定义分割方式。map阶段对输入进行分区(默认是hash方法,目的:一个分区对应一个reduce),排序、合并等。

reduce阶段有许多的reduce进程同时并行。输入即为map函数的输出,用户自定义的reduce函数决定reduce的输出,但输出格式一定为<key,value>形式。

(三)MapReduce 具体计算过程

输入-----》 map -----》shuffle ------》reduce ------》输出

1. map 阶段

  • 输入:一般来说,每一个数据块对应一个map 计算。map 端在读取HDFS中数据块中的数据时,会调用Hadoop中的 inputformat 接口,以键值对的方式作为map 输入。
  • 输出:通过用户自己定义的map 函数对数据进行操作,仍以键值对的方式输出

2. shuffle 阶段

        shuffle 阶段描述从 map 函数输出到 reduce函数输入的这一过程 。

  • map 阶段的shuffle。

分区:MapReduce首先会调用分区接口对map输出的不同key-value分区,默认是对key值进行Hash运算,也可以通过重载分区接口的方法实现。

排序:对每个分区的key-value键值对根据key值排序。

合并:对每个分区的key-value键值对进行合并运算处理,减少在map和reduce之间的数据传输量。

 归并:写入磁盘的多个文件会在map过程完成之后通过归并,形成一个大文件。归并是将不同文件 相同分区的key-value划分到同一个区,然后排序、合并处理形成<key,value-list>。                                

  •    reduce 端的shuffer

将所有map端的数据读入缓存,写入磁盘,在所有数据读取完成之后,将所有文件数据再一次归并处理。

3. reduce阶段。

reduce阶段的任务就是根据用户定义的reduce函数,对输入的key-value执行函数,并将最终结果输出到文件系统。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MapReduce详解 的相关文章

  • Hadoop:映射器和缩减器的数量

    我使用不同数量的映射器和缩减器 例如 1 个映射器和 1 个缩减器 1 个映射器和 2 个缩减器 1 个映射器和 4 个缩减器 在 1 1GB 文件上多次运行 Hadoop MapReduce Hadoop安装在具有超线程的四核机器上 以下
  • Spark:按元组/列中的多个值对 RDD 进行排序

    所以我有一个RDD如下 RDD String Int String 举个例子 b 1 a a 1 b a 0 b a 0 a 最终结果应该类似于 a 0 a a 0 b a 1 b b 1 a 我该怎么做这样的事情 尝试这个 rdd sor
  • STDIN 或文件作为 Hadoop 环境中的映射器输入?

    因为我们需要将一堆文件读入映射器 在非 Hadoop 中 环境 我用的os walk dir and file open path mode 读入 每个文件 然而 在 Hadoop 环境中 当我读到 HadoopStreaming 转换 将
  • CouchDB 视图:MapReduce 中可以接受多少处理?

    我一直在尝试使用 CouchDB 进行 MapReduce 一些示例显示了映射归约函数中可能存在的一些繁重逻辑 在一种特殊情况下 他们在映射内执行 for 循环 在发出您选择的文档之前 MapReduce 是否会在每个可能的文档上运行 如果
  • Cloudera 5.1下作业在LocalJobRunner中保持运行

    需要一些快速帮助 我们的作业在 MapR 下运行良好 但是当我们在 Cloudera 5 1 上启动相同的作业时 它继续以本地模式运行 我确信这是某种配置问题 它是哪个配置设置 14 08 22 12 16 58 INFO mapreduc
  • MapReduce:ChainMapper 和 ChainReducer

    我需要将 MapReduce jar 文件拆分为两个作业 以获得两个不同的输出文件 每个文件来自两个作业的每个减速器 我的意思是第一个作业必须生成一个输出文件 该文件将作为链中第二个作业的输入 我在 hadoop 版本 0 20 中读到了一
  • security.UserGroupInformation:MR 的 PrivilegedgedActionException 错误

    每当我尝试执行映射缩减作业以写入 Hbase 表时 我都会在控制台中收到以下错误 我正在从用户帐户运行 MR 作业 错误 security UserGroupInformation PriviledgedActionException 为
  • Hadoop MapReduce:可以在一个 hadoop 作业类中定义两个映射器和缩减器吗?

    我有两个独立的 java 类 用于执行两个不同的 MapReduce 作业 我可以独立运行它们 对于这两个作业 它们所操作的输入文件是相同的 所以我的问题是是否可以在一个java类中定义两个映射器和两个缩减器 例如 mapper1 clas
  • Hadoop MapReduce 提供嵌套目录作为作业输入

    我正在从事一项处理嵌套目录结构的工作 其中包含多个级别的文件 one three four baz txt bleh txt foo txt two bar txt gaa txt 当我添加one 作为输入路径 不会处理任何文件 因为没有文
  • array_reduce() 不能用作 PHP 的关联数组“reducer”?

    我有一个关联数组 assoc 并且需要将其简化为字符串 在这种情况下 OUT
  • 使用 CouchDB 视图替换 SQL 中的多个联接

    我正在为我的应用程序实现过滤功能 但在 CouchDB 上编写视图时遇到问题 在 SQL 中 这将是一个具有多个连接的语句 如何替换 CouchDB 中的多重连接 本文涵盖单连接 http www cmlenz net archives 2
  • FAILED 错误:java.io.IOException:所有收集器的初始化失败

    我在运行 MapReduce WordCount 作业时遇到一些错误 错误 java io IOException 所有收集器的初始化 失败的 最后一个收集器中的错误是 class wordcount wordmapper at org a
  • 如何读取 RCFile

    我正在尝试将一个小的 RCFile 约 200 行数据 读入 HashMap 中以进行 Map Side 连接 但是在将文件中的数据变为可用状态时遇到了很多麻烦 这是我到目前为止所拥有的 其中大部分来自这个例子 http sumit1001
  • 如何在hadoop/map reduce中创建固定行数的输出文件?

    假设我们有 N 个具有不同行数的输入文件 我们需要生成输出文件 使得每个输出文件恰好有 K 行 最后一个输出文件可以有 是否可以使用单个 MR 作业来完成此操作 我们应该打开文件以便在reducer中显式写入 输出中的记录应该被打乱 tha
  • Hive ParseException - 无法识别“结束”“字符串”附近的输入

    尝试从现有 DynamoDB 表创建 Hive 表时出现以下错误 NoViableAltException 88 at org apache hadoop hive ql parse HiveParser IdentifiersParser
  • 使用 Hadoop 映射两个数据集

    假设我有两个键值数据集 数据集A和B 我们称它们为数据集A和B 我想用 B 组的数据更新 A 组中的所有数据 其中两者在键上匹配 因为我要处理如此大量的数据 所以我使用 Hadoop 进行 MapReduce 我担心的是 为了在 A 和 B
  • 遍历 ArrayWritable - NoSuchMethodException

    我刚刚开始使用 MapReduce 并且遇到了一个奇怪的错误 我无法通过 Google 回答该错误 我正在使用 ArrayWritable 制作一个基本程序 但是当我运行它时 在Reduce过程中出现以下错误 java lang Runti
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • 如何使用 Amazon 的 EMR 在 CLI 中使用自定义 jar 指定 mapred 配置和 java 选项?

    我想知道如何指定mapreduce配置 例如mapred task timeout mapred min split size等等 当使用自定义 jar 运行流作业时 当我们使用 ruby 或 python 等外部脚本语言运行时 我们可以使
  • 在映射器的单个输出上运行多个减速器

    我正在使用地图缩减实现左连接功能 左侧有大约 6 亿条记录 右侧有大约 2300 万条记录 在映射器中 我使用左连接条件中使用的列来创建键 并将键值输出从映射器传递到减速器 我遇到性能问题 因为两个表中的值数量都很高的映射器键很少 例如分别

随机推荐

  • Anaconda基本使用

    在指定目录的终端中输入jupyter notebook指令 xff0c 就可以启动服务jupyter notebook 快捷键 xff1a 添加cell xff1a a xff0c b 删除cell xff1a x 执行cell xff1a
  • 爬虫-实现一个简易的网页采集器

    1 requests模块的基本使用 span class token triple quoted string string 34 34 34 爬虫 34 34 34 span span class token triple quoted
  • debian: nginx前后端负载均衡,日志显示真实ip

    简要 xff1a server listen 80 server name www yunjisuan com location proxy pass http www server pools proxy set header host
  • ROS学习记录:RLException: Invalid <param> tag: Cannot load command parameter [robot_description]: no such

    本人Ubuntu版本 xff1a 20 04 在运行基于gazebo的仿真的时候出现了这样的报错 xff1a 跟着报错去检查对应的xml文件时发现没有问题 xff0c 然后参考 Problem with xacro invalid lt p
  • 计算机网络期末复习之大题

    目录 信噪比 路由表的更新 路由转发 拥塞控制算法 CRC循环检验码 数据报分片 码分多址通信 地址聚合 子网划分 信噪比 C 61 B log2 1 43 SNR 单位 bps C比特率 xff0c B带宽 SNR信噪比 1 设有一个1M
  • uboot配置和编译过程详解-2.4.uboot和系统移植第4部分-朱有鹏-专题视频课程

    uboot配置和编译过程详解 2 4 uboot和系统移植第4部分 4163人已学习 课程介绍 本课程为uboot学习的第四部分 xff0c 主要目标是详细分析和介绍uboot的主makefile和配置脚本mkconfig 本部分学习的目的
  • 虚拟机Ubuntu18.04连不上网络问题

    要想知道虚拟机Ubuntu有没有网 xff0c 可在终端ping一下网络 xff0c 如在终端输入 ping baidu com 如果出现如下情况 xff0c 则没有连上 正常的情况是这样的 那么 xff0c 如果连不上该如何解决呢 xff
  • 前端可视化数据大屏(1)

    效果图 技术架构 xff1a datav xff0c vue2 xff0c echarts 我们一步一步的来实现一个简单的可视化数据大屏 xff0c 开始吧 xff01 xff01 1 xff0c vue脚手架搭建项目 太简单了 xff0c
  • Kmeans聚类(手写数字识别)

    Kmeans算法原理 xff1a 在给定K个初始聚类中心点的情况下 xff0c xff08 1 xff09 把数据中的每个样本分到离其最近的聚类中心所代表的类中 xff08 2 xff09 分类完后计算从新每个类的中心点 xff08 取平均
  • day11 TCP连接管理与UDP协议

    目录 编辑 连接的建立 三次握手 连接的释放 四次挥手 保活计时器 用户数据报协议 UDP 编辑 连接的建立 三次握手 TCP 建立连接的过程叫做握手 采用三报文握手 xff1a 在客户和服务器之间交换三个 TCP 报文段 xff0c 以防
  • 手动搭建服务器—Python

    目录 1 HTTP协议 2 HTTP请求头 3 IP地址的绑定 4 根据不同的请求返回不同的内容 5 面向对象的服务器封装 6 WSGI服务器 6 1 WSGI接口 6 2 WSGI不同路径返回不同内容 6 3 读取文件并加载返回给浏览器
  • C语言学习分享第一天

    对C语言的认识 xff1a C语言是一种高级语言 xff0c 由低级语言发展而来 xff0c 实际上计算机是不能直接识别高级语言的 xff0c 计算机能够识别的只有低级语言 xff08 其实就是机器语言 xff09 xff0c 机器语言全部
  • C语言学习第二天

    VS上的编译 xff1a ctrl 43 F7或者ctrl 43 Fn 43 F7 运行 xff1a ctrl 43 F5或者ctrl 43 Fn 43 F75 调试 xff1a ctrl 43 F10或者ctrl 43 Fn 43 F10
  • 引发了异常: 读取访问权限冲突。**pStu_Head** 是 0x55BAA6E0。

    问题 xff1a 这几天在研究一个图书馆信息管理系统的代码 xff0c 结果在第一步就出错 xff0c 一直报错 其中的 deroy list create函数 是为一个结构体指针申请内存空间 xff0c 并对其该结构体的成员变量进行赋值
  • xxx不在 sudoers 文件中。此事将被报告。

    出现此类问题是因为当前用户未被授予sudo权限 xff0c 可通过以下步骤添加sudo权限 1 xff0c 通过su命令切换到root用户 注 xff1a 输入密码的过程屏幕上不会有输出 2 xff0c 在终端输入 visudo xff0c
  • Centos系统中使用Firefix播放视频

    这几天想尝试在Linux系统中使用Firefix来看视频 xff0c 在网上找了很多方法 xff0c 什么安装flash xff0c 安装FFmpeg视频解码器的 xff0c 费了很多时间也没有成功 xff0c 最后终于找到方法了 xff0
  • uboot源码分析1-启动第一阶段-2.5.uboot和系统移植第5部分-朱有鹏-专题视频课程...

    uboot源码分析1 启动第一阶段 2 5 uboot和系统移植第5部分 6166人已学习 课程介绍 本课程为uboot学习的第5部分 xff0c 主要内容是uboot启动的第一阶段start S文件中的汇编初始化部分 学习本部分的主要目标
  • java关于对象比较---equals与hashCode详解

    目录 前言 一 equals方法 二 hashCode 1 什么是hashCode 2 hashCode的使用 1 相等值的hashCode一定相等 2 不同的值 hashCode也可能相等的情况 三 为什么hashCode和equals要
  • 状态码500问题

    1 从客户端解决500内部服务器错误是由服务器造成的 xff0c 但也可以从客户端尝试解决 步骤如下 xff1a 1 xff09 清除缓存 xff0c 并删除Cookie后 xff0c 重新启动浏览器 2 xff09 把它作为一个504的错
  • MapReduce详解

    目录 xff08 一 xff09 MapReduce的基本知识 xff08 二 xff09 MapReduce计算框架概述 xff08 三 xff09 MapReduce 具体计算过程 xff08 一 xff09 MapReduce的基本知