Hadoop学习日记-MapReduce思想及执行流程

MapReduce思想

Map负责“拆分”:即将复杂问题拆分成可以并行计算的小问题,彼此之间几乎没有依赖联系。

Reduce负责对Map阶段的结果进行合并汇总

Map和Reduce的抽象接口如下:

map:(k1; v1) — (k2; v2)

reduce:(k2; [v2]) — (k3; v3)

一个完整的MapReduce程序在分布式运行时有三类

  1. MRAppMaster: 负责整个MR程序的过程调度以及状态协调
  2. MapTask: 负责map阶段的整个数据处理流程
  3. ReduceTask:负责reduce阶段的整个数据处理流程

WordCount编程实现思路

map阶段的核心:把输入的数据经过切割,全部标记为1

shuffle阶段核心:经过MR程序内部自带默认的排序分组功能,把key相同的单词作为一组数据构成新的kv对
在这里插入图片描述

Map阶段执行流程

MapReduce整体执行流程

  1. 切片(默认大小与文件块大小相同)
  2. 按行读取数据,返回<key, value>对
  3. map方法处理数据
  4. 根据reducetask数量对输出的键值进行分区partition
  5. 将输出数据写入内存缓冲区,达到比例则溢出spill到磁盘上,溢出的时候根据key值进行排序
  6. 对溢出文件进行最终的merge合并

Reduce阶段执行流程

  1. ReduceTask主动从MapTask复制拉取属于自己处理的数据
  2. 将获取的数据全部进行合并merge,即将分散的数据合并对合并的数据进行排序
  3. 对排序后的键值对调用reduce方法,键相等的键值对调用reduce方法,最后把这些键值对写入到HDFS文件中

shuffle概念

从Map产生输出开始到Reduce得到数据作为输入之前的过程称为shuffle

分为两个阶段:Map端的shuffle、Reduce端的shuffle

Map端的shuffle

Collect阶段:将MapTask结果收集到默认大小为100M的环形缓冲区,保存之前会对key进行分区的计算,默认hash分区

Spill阶段:当内存的数据量达到一定阈值时,会将数据写入本地磁盘,写入前对数据进行一次排序操作

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

Reduce端的shuffle

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

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

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

shuffle的弊端

涉及到数据在内存、磁盘间的多次往复

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

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

相关文章

看了2023年的一线互联网公司时薪排行榜!值得思考

前言 根据最近针对国内的一线互联网企业做的调研&#xff0c;汇总了他们的平均时薪水平&#xff0c;最终出了一个排行榜&#xff01; 首先我们来看下&#xff0c;排行榜分哪几个Level&#xff0c;分别为初级、中级、高级、资深、专家/架构这五个&#xff0c;主要根据工程师的…

Druid(德鲁伊)连接池

Druid(德鲁伊)连接池 阿里出品&#xff0c;淘宝和支付宝专用数据库连接池&#xff0c;但它不仅仅是一个数据库连接池&#xff0c;它还包含一个ProxyDriver&#xff08;代理驱动&#xff09;&#xff0c;一系列内置的JDBC组件库&#xff0c;一个SQL Parser(sql解析器)。支持所有…

基于Javaweb实现ATM机系统开发实战(十四)交易记录分页实现

还是老规矩&#xff0c;先看前端页面查看需要传递哪些参数&#xff0c;并且把逻辑有问题的部分进行修改~ <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <% taglib prefix"c" uri&qu…

自然语言处理14-基于文本向量和欧氏距离相似度的文本匹配,用于找到与查询语句最相似的文本

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下自然语言处理14-基于文本向量和欧氏距离相似度的文本匹配&#xff0c;用于找到与查询语句最相似的文本。NLP中的文本匹配是指通过计算文本之间的相似度来找到与查询语句最相似的文本。其中一种常用的方法是基于文本…

Docker安装Redis与Python的交互

Redis数据库&#xff0c;平常做缓存用的最多&#xff0c;之前一直没有记录过redis的安装流程&#xff0c;等到用时才想起来去百度上搜索&#xff0c;然而搜出来的东西十有八九都大同小异。所以这次用docker安装一下&#xff0c;再此记录 redis是一个key-value存储系统。和Memc…

AcrelEMS企业微电网能效管理平台实现用户侧智能配电和智能用电管理-安科瑞黄安南

摘要&#xff1a;随着科技的发展&#xff0c;电力系统正逐步向智能化、数字化、互联网化迈进。智能配电与智能用电是电力产业发展的重要方向&#xff0c;将为传统电力系统带来革命性的变革。本文将对智能配电和智能用电的概念、特点、关键技术及应用进行详细介绍。 1、智能配电…

数据结构初阶--带头双向循环链表

目录 一.带头双向循环链表的定义 二.带头双向循环链表的功能实现 2.1.带头双向循环链表的定义 2.2.带头双向循环链表的结点创建 2.3.带头双向循环链表的初始化 2.4.带头双向循环链表的打印 2.5.带头双向循环链表的判空 2.6.带头双向循环链表的尾插 2.7.带头双向循环链…

【node.js】02-path模块

目录 1. path.join() 2. path.basename() 3. path.extname() 1. path.join() 使用 path.join() 方法&#xff0c;可以把多个路径片段拼接为完整的路径字符串&#xff0c;语法格式如下&#xff1a; path.join([...paths]) 例子&#xff1a; const path require(path)co…

白皮书|数字孪生工厂:成就智能制造的未来

前言 目前我国已经进入“技术应用”的数字孪生双驱动时代&#xff0c;在市场需求和国家政策的推动下&#xff0c;各地因地制宜发展数字孪生技术&#xff0c;深入开展数字孪生应用建设。今天我们就重点来聊一聊数字孪生技术在工厂中的应用&#xff0c;希望通过本次案例的深度剖析…

深“扒”云原生高性能分布式文件系统JuiceFS

JuiceFS 是一款面向云原生设计的高性能分布式文件系统&#xff0c;在 Apache 2.0 开源协议下发布。提供完备的 POSIX 兼容性&#xff0c;可将几乎所有对象存储接入本地作为海量本地磁盘使用&#xff0c;亦可同时在跨平台、跨地区的不同主机上挂载读写。 JuiceFS 简介 JuiceFS…

测试PHP与MySQL数据库连接查询,新手

创建库 &#xff1a;create database if not exists web; 创建表 &#xff1a; create table if not exists web.students(id int,name varchar(3),age int,birth datetime); 插入数据&#xff1a;insert web.students values (1,"张三",18,now()),(1,"李…

智慧养殖APP及小程序多端跨平台技术选型分析

智慧养殖APP及小程序多端跨平台技术选型分析 1. 框架选择 ------Uniapp------ 优势&#xff1a;使用Vue.js语法&#xff0c;学习成本较低&#xff1b;一套代码&#xff0c;能同时支持APP/H5/小程序&#xff0c;是较为全面的跨平台框架。 ​ 开发小程序的不二选择&#xff0c;…

线性代数——特征值和特征向量

文章目录 版权声明补充知识求和公式的性质常用希腊字符读音 特征值和特征向量相似矩阵相似对角化实对称矩阵 版权声明 本文大部分内容皆来自李永乐老师考研教材和视频课。 补充知识 求和公式的性质 ∑ i 1 n k a i k ∑ i 1 n a i \sum_{i1}^nka_ik\sum_{i1}^na_i i1∑n​…

visual studio 2022换背景遇到的问题

如果要自定义背景图&#xff0c;则可以下载ClaudialIDE 1.在拓展->点击拓展管理->右上角搜索background->点击下载ClaudialIDE->加载完之后需要关闭vs界面进行下载&#xff0c;下载失败&#xff0c;弹出“由于出现以下错误 无法安装一个或多个扩展”。 解决&#x…

推荐几款不错的AI绘画工具

随着近年来数据、算法等核心技术的不断进步&#xff0c;人工智能在内容创作各垂直领域的比例不断增加&#xff0c;包括人工智能写作、人工智能编辑和最近流行的人工智能绘画。 许多朋友也想跟上潮流&#xff0c;使用人工智能绘画生成软件创建人工智能图像&#xff0c;但我不知…

ssh、scp和sshpass使用

1、ssh ssh 用户名ip地址2、scp 2.1 拉取文件 scp -r 用户名1ip地址:/远程文件目录/远程服务器文件 /本地文件目录/2.2 上传文件 scp -r /本地文件 用户名1ip地址:/远程文件目录/3、sshpass 3.1 定义 sshpass 的定义&#xff1a; ssh 登陆不能在命令行中指定密码&#xf…

手机变局2023:一场瞄准产品和技术的“思维革命”

以折叠屏冲高端&#xff0c;已成为中国手机厂商们的共识。 在这个苹果未涉足的领域&#xff0c;国产手机厂商们加快脚步迭代推新&#xff0c;积极抢占机遇。但平心而论&#xff0c;虽然国产折叠屏机型众多&#xff0c;但市场上始终缺乏一款突破性的产品作为标杆&#xff0c;为…

数据结构【树】

第五章 树 一、树 1.定义&#xff1a;n个结点的集合&#xff0c;n0为空树&#xff1b;是递归的&#xff0c;是一种逻辑结构&#xff0c;同时也是一种分层结构&#xff1b; 特点 树的根结点没有前驱结点&#xff0c;除了根结点外的所有结点有且只有一个前驱结点&#xff1b;树…

MySQL学习-第一部分

文章目录 MySQL数据库1 概述1.1概述1.2安装MYSQL&#xff08;Windows下&#xff09;1.2.1需要注意的事项&#xff1a; 1.3 Mysql的卸载1.4查看Mysql服务1.5启动/关闭SQL的服务1.6客户端登录/使用MySql登录退出问题&#xff1a;ERROR 1045 (28000)解决方案第一步&#xff1a;关闭…

Clion开发STM32之W5500系列(综合实验)

说明 此为w5500模块的综合实验测试模块,包含dhcp、dns、ntp以上三个模块的驱动参考之前的文章&#xff0c;本篇不做说明.使用的开发芯片 stm32f103vet6系列,外设接口使用的spi2 实验内容: 通过dhcp动态获取ip,通过dns解析NTP服务域名的ip通过NTP服务ip获取时间 w5500配置驱…