Hadoop MapReduce 介绍

news2024/12/28 22:06:08

Hadoop MapReduce

    • MapReduce核心思想
    • 设计构思
    • 什么是MapReduce
      • MapReduce的特点
      • MapReduce的不足(局限性)
    • MapReduce组成
    • Hadoop MapReduce实现流程
    • map阶段执行过程
    • Reduce阶段执行过程
    • Shuffle机制
      • Map端Shuffle
      • Reducer端的shuffle

请添加图片描述

MapReduce核心思想

MapReduce的核心思想就是‘分而治之’,但是不可拆分的计算任务或着互相有依赖任务的数据进行计算

设计构思

MapReduce可以被分为两个阶段:Map阶段(拆分)和Reduce(合并阶段)

MapReduce处理的数据类型是键值对

MapReduce最大的优点就是对隐藏了很多底层代码的细节

什么是MapReduce

MapReduce最早出现在Google于2004年在一篇名为《MapReduce:Simplified Data Processingon Large Clusters 》的论文中被提出

MapReduce是一种分布式计算框架,那什么是分布式计算呢?

分布式计算是将该应用分解成许多小的部分,分配给多台计算机进行处理,以达到提交计算效率的目的,减少大规模数据计算的时间。

MapReduce是面向超大规模数据设计的一种计算框架,如果我们用MapReduce处理小规模数据的化还不如不用,会起到适得其反的作用,

MapReduce的特点

1、易于编程

Mapreduce框架提供了用于二次开发的接口,可以让使用它的用户很简单的利用这些简单的接口实现集群的部署,其他的交给计算框架进行处理

2、具有良好的扩展性

当已经加入计算的计算机资源不能够满足计算的时候框架会通过增加机器的方式来提高和扩展他的计算能力

3、具有很高的容错性

我们的Hadoop集群是分布式搭建和部署得,当部署的集群中如果有任何一台机器因为故障宕机,它会把这个计算机上的计算任务交给其他的计算机继续进行计算任务,以保证我们的整体计算任务的完成。

4、适用海量的数据的离线处理

可以计算很高级别的数据量(GB\TB\PB)(但是不可以用于计算流式数据)

MapReduce的不足(局限性)

实时计算性能差

在优点的时候我们就有写到,它可以计算很高级别的数据量,但是它不能够用于流式数据的计算,只能对静态的数据进行计算,虽然可以进行计算但是由于MapReduce的复杂的计算方式,他的计算方式会非常的慢

MapReduce组成

MRAppMaster:负责整个MR程序的过程调度及状态协调 (有且只能有一个)

MapTask:负责map阶段的整个数据处理流程 (根据计算的数据量可以有多个)

ReduceTask:负责reduce阶段的整个数据处理流程(根据计算的数据量可以有多个)

一个MapReduce编程模型中只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段;也就是说出现Map阶段和Reduce阶段不是成对出现的,要不然就是只有一个map阶段,map阶段或者Reduce阶段不能够连续出现

MapReduce数据类型:是以kv键值对的形式流转、传递的,类似于字典

Hadoop MapReduce实现流程

具体的程序运行就不给大家演示了

这个是WordCount编程实现思路
请添加图片描述
请添加图片描述

map阶段的核心:把输入的数据经过切割,全部标记1,因此输出就是<单词,1>。

shuffle阶段核心:经过MR程序内部自带默认的排序分组等功能,把key相同的单词会作为一组数据构成新的kv对 。

reduce阶段核心:处理shuffle完的一组数据,该组数据就是该单词所有的键值对。对所有的1进行累加求和,就是 单词的总次数

map阶段执行过程

1、将要进行计算的文件按照设置的标准进行切片默认Split size = Block size(128M)形成一块一块的切片后交给MapTask处理

2、对切片中的数据进行解读。

3、调用Mapper类中的map方法处理数据

4、按照一定的规则对Map输出的键值对进行分区partition

5、Map输出数据写入内存缓冲区,达到比例溢出到磁盘上

6、将内存缓冲区的溢出的数据进行合并,最终合并成一个文件

Reduce阶段执行过程

1、ReduceTask会主动从MapTask复制拉取属于需要自己处理的数据

2、将拉取的数据,进行合并合并成一个大的数据文件,然后在进行数据的整理排序

3、对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法,最后将这些键值对进行存储

Shuffle机制

从Map产生输出开始到Reduce取得数据作为输入之前的过程称作shuffle
Shuffle在整个MapReduce执行流程图的位置
请添加图片描述

shuffle是MapReduce程序的灵魂,最核心、最重要的机制

指的是将map端的无规则的数据按照某种规则进行整理,以便reduce端接收处理。

shuffle机制弊端:频繁涉及到数据在内存、磁盘之间的多次往复。

Map端Shuffle

Map端Shuffle在整个MapReduce执行流程图的位置

可以说已经占到了maptask 的绝大部分内容了
请添加图片描述
Collect阶段:将MapTask的结果收集输出到默认大小为100M的环形缓冲区,保存之前会对key进行分区的计算, 默认Hash分区。

Spill阶段:当内存中的数据量达到一定的阀值的时候,就会将数据写入本地磁盘,在将数据写入磁盘之前需要对数 据进行一次排序的操作,如果配置了combiner,还会将有相同分区号和key的数据进行排序。

Merge阶段:把所有溢出的临时文件进行一次合并操作,以确保一个MapTask最终只产生一个中间数据文件。

Reducer端的shuffle

Reducer端shuffle在整个MapReduce执行流程图的位置

在Reduce task 也占据有很大的分量
请添加图片描述

Copy阶段: ReduceTask启动Fetcher线程到已经完成MapTask的节点上复制一份属于自己的数据。

Merge阶段:在ReduceTask远程复制数据的同时,会在后台开启两个线程对内存到本地的数据文件进行合并操作 。

Sort阶段:在对数据进行合并的同时,会进行排序操作,由于MapTask阶段已经对数据进行了局部的排序, ReduceTask只需保证Copy的数据的最终整体有效性即可

愿君前程似锦,未来可期去💯,感谢您的阅读,如果对您有用希望您留下宝贵的点赞和收藏
本文章为本人学习笔记,学习网站为黑马程序员的Hadoop可以一起学习共同进步谢谢,如有请侵权联系,本人会立即删除侵权文章。可以一起学习共同进步谢谢,如有请侵权联系,本人会立即删除侵权文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MVC的在线购物系统

摘 要本毕业设计的内容是设计并且实现一个基于net语言的在线购物系统。它是在Windows下&#xff0c;以SQL Server为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。在线购物系统的功能已基本实现&#xff0c;主要包括首页、个人中心、会员用户管理、商品分类管理…

Mac操作系统配置Git

下载Git mac在安装git时&#xff0c;一般只需要一行指令brew install git 验证Git 在我们安装过Git之后&#xff0c;我们可以输入git --version进行验证。如果我们成功进行了安装之后&#xff0c;我们可以看到下图这样的结果。 配置Gitee 生成密钥对 首先我们通过cd ~/.…

Allegro174版本新功能介绍之Symphony模式下放置器件

Allegro174版本新功能介绍之Symphony模式下放置器件 Allegro在172版本在Symphony模式下,是无法放置器件的,如下图 只有一个Swap的选项 在升级到了174版本的时候,Symphony模式是同样支持放器件的 具体介绍如下 任意打开一个174版本的PCB,选择Start Symphony Server

反射方程的分解、预计算BRDF

反射方程 仔细研究反射方程可以发现BRDF的漫反射kd和镜面反射ks是相互独立的&#xff0c;所以可以将方程分解为两部分&#xff1a; 通过分别积分两部分再求即可得到最终的反射结果。 漫反射部分 仔细观察漫反射积分&#xff0c;我们发现漫反射兰伯特项是一个常数项&#xff08;…

Hadoop YARN

Hadoop YARNYARN的组成YARN3大件的作用MR提交计算程序的过程Scheduler调度策略FIFO Scheduler&#xff08;先进先出调度&#xff09;Capacity Scheduler&#xff08;容量调度&#xff09;Fair Scheduler(公平调度)Hadoop YARN是一个是一个通用资源管理系统和调度平台&#xff0…

Ambire Wallet 2022 年度回顾

在推出的第一年&#xff0c;Ambire Wallet 确立了自己作为 EVM 领域顶级智能合约钱包解决方案之一的地位&#xff1a;拥有近 10 万个账户&#xff0c;它通过其 NPM sig lib 和多样化的沟通努力为类别应用扫清了道路。 回顾过去一年我们最大的亮点 是的&#xff0c;朋友们&#…

vue路由的介绍和使用(包括前端导航、导航守卫)

文章目录路由基本使用实现简易的前端路由安装和配置vue-router路由安装vue-router包创建路由模块导入并挂载路由模块声明路由链接和占位符使用router-link替代a连接redirect重定向嵌套路由声明子级路由链接和占位符声明嵌套路由的规则动态路由动态路由匹配(基本用法)需求:在Mov…

Java源码篇之容器类——HashMap

以下是基于jdk17 Java源码篇之容器类——HashMapconstructorput()hash()putVal()resize()treeifyBin()treeify()tieBreakOrder()balanceInsertion()moveRootToFront()checkInvariants()constructor // 无参构造 public HashMap() {this.loadFactor DEFAULT_LOAD_FACTOR; // a…

多线程并发检测触发器触发算法优化,附详细代码 - 定时执行专家

目录 ◆ V6.5版之前的并行检测方案 ◆ V6.5版之前的并行检测方案存在的问题 ◆ V6.5版本的并行检测方案 ◆ 定时执行专家 - 简介 ◆ 定时执行专家 - 最新版下载 一些用户说任务数量可能达到200个&#xff0c;让我比较惊讶&#xff0c;这个软件的设计之初并没有考虑这么多的…

MySQL调优-SQL底层执行原理

目录 MySQL调优-SQL底层执行原理 MySQL内部组件结构 Server层 Store层 连接器 客户端连接mysql数据库 创建新用户并且修改用户密码&#xff1a; show processlist 查看用户状态 客户端自动断开时间 长连接和短连接 查询缓存 常见的一些命令操作 大多数情况查询缓存…

Linux使用gdb定位Qt程序崩溃位置(systemd-coredump)

Linux提供了systemd-coredump服务&#xff0c;可以配合gdb来定位到程序崩溃位置&#xff0c;下面介绍它们的用法。 1. systemd-coredump systemd-coredump的简单介绍&#xff1a; systemd-coredump能从操作系统内核中获取内存转储&#xff0c;并能对获取到的数据进行各种处理…

Polygon zkEVM测试集——创建合约交易

1. 引言 可通过https://www.evm.codes/playground&#xff0c;来深入理解EVM各opcode中stack、memory、storage之间的关系&#xff0c;可输入任意的opcode来观察变化。 很赞的资料集&#xff1a; 深入理解合约升级(2) - Solidity 内存布局深入理解 EVM&#xff08;一&#xf…

力扣:两数之和与n数之和的(Map)与(排序+双指针)解法 【三刷终于明白HashMap求和的去重问题】

啃一本算法书啃了快一年了&#xff0c;用嘴想一想都该只剩渣了&#xff0c;脑子是怎么想的&#xff1f;&#xff1f;&#xff1f; 真希望有一天“爷啃完了&#xff0c;爷不要你了&#xff0c;爷换一本啃”&#xff0c;&#xff0c;欸欸欸&#xff1f;&#xff1f;罪过罪过&…

Python基础(一)

Python 的种类 CpythonPython的官方版本&#xff0c;使用C语言实现&#xff0c;使用最为广泛&#xff0c;CPython实现会将源文件&#xff08;py文件&#xff09;转换成字节码文件&#xff08;pyc文件&#xff09;&#xff0c;然后运行在Python虚拟机上。 JyhtonPython的Java实…

IDEA初始化git+代码提交

IDEA初始化git 当你在代码仓库如&#xff1a;github or gitee 上建立好了仓库&#xff0c;我们在idea中该如何初始化你的git又怎么样把你的代码push到代码仓库上呢&#xff1f; 第一步&#xff1a;初始化idea中的git 在idea中的setting中搜索git&#xff0c;将你的git.exe路…

JVM垃圾回收器-评估GC的性能指标

文章目录学习资料垃圾回收器概述评估GC的性能指标吞吐量&#xff08;throughput&#xff09;暂停时间&#xff08;pause time&#xff09;吞吐量VS暂停时间学习资料 【尚硅谷宋红康JVM全套教程&#xff08;详解java虚拟机&#xff09;】 【阿里巴巴Java开发手册】https://www.…

机器学习 加利福尼亚房价预测

学习目标&#xff1a; 提示&#xff1a;导入包 例如&#xff1a; import pandas as pd import numpy as npfrom sklearn.datasets import fetch_california_housing from sklearn.model_selection import KFold, train_test_split from sklearn.metrics import mean_squared…

【阶段二】Python数据分析Pandas工具使用02篇:数据读取:文本文件读取、电子表格读取与数据预处理:数据概览与清洗

本篇的思维导图: 数据读取:文本文件读取 对于csv后缀的文本文件,可以使用pandas模块中的read_csv函数进行读取。 所需要的数据文件如下百度云盘链接: 链接:https://pan.baidu.com/s/1Zj-uTt_wdRcmDt3aumZ2nA 提取码:z2e8 代码

CSRF攻防基础讲解

CSRF攻击 Cross-site request forgery跨站请求伪造 场景模拟 在用户登录某个网站后&#xff0c;看到某篇文章高兴之余&#xff0c;挥手打字&#xff0c;突然有人发来一个链接&#xff0c;登录者打开链接后什么都没有操作或者只是好奇的点击了某个按钮&#xff0c;在原登录网…

猿客栈后台管理系统日志记录

目录 一、用户权限设置 前端逻辑 后端逻辑 二、登录界面逻辑 1、账号密码登录实现 前端逻辑 在Cookie中存储token的方法 在Cookie中存储和获取的token方法 后端逻辑 生成token工具类 2、手机号登录 前台逻辑 后台逻辑 补充&#xff1a;实现点击发送验证码120s倒计…