大数据学习(34)-mapreduce详解

news/2025/1/16 21:35:02/
&&大数据学习&&
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞

mapreduce本身工作原理相对于spark来说简单很多,计算过程大概包括map阶段和reduce阶段。

一、任务启动阶段

  1. Client用户端发起请求
    • MapReduce作业的启动由Client端(即用户或应用程序)发起。Client端会提交作业请求,包括作业的配置信息、输入数据的位置等。
  2. 资源申请与分配
    • YarnRunner接受Client端的请求,并向ResourceManager申请所需的资源。
    • ResourceManager检索当前集群的资源情况,为作业分配资源路径,并通知YarnRunner。
  3. 作业分片与MRAppMaster启动
    • YarnRunner根据输入数据的大小和集群的配置,对输入数据进行分片(split),每个分片将作为一个Map任务的输入。
    • YarnRunner申请启动MRAppMaster,该组件负责监控和管理整个作业的执行过程。
  4. MapTask启动
    • ResourceManager根据分片和作业信息,选择数据所在的节点启动MapTask。MapTask在数据所在的节点上运行,以减少数据传输的开销。

二、Map阶段

  1. 数据读取与处理
    • 每个MapTask读取自己节点上的分片数据,并进行处理。处理过程包括数据的split、map函数的执行、数据的分区等。
    • 在map函数中,输入数据被转换为键值对(key-value pair)的形式,并经过自定义的map逻辑处理,输出新的键值对。
  2. 数据写入环形缓冲区
    • MapTask的输出结果首先写入一个内存环形缓冲区。当缓冲区中的数据量达到一定的阈值时(如80%),会触发一个溢写(spill)操作,将数据写入磁盘。
  3. 数据排序与合并
    • 在溢写过程中,MapReduce框架会对数据进行排序和合并操作。排序是基于key进行的,以确保相同key的数据能够聚集在一起。
    • 合并操作是将多个溢写文件合并为一个有序的文件,以减少后续处理的数据量。

三、Shuffle阶段

  1. 数据分发
    • Shuffle阶段负责将MapTask的输出结果分发到相应的ReduceTask。分发过程是基于key的分区进行的,确保相同key的数据被发送到同一个ReduceTask。
  2. 数据排序与归并
    • 在ReduceTask端,接收到的数据会进行进一步的排序和归并操作,以确保数据的正确性和有序性。

四、Reduce阶段

  1. ReduceTask启动
    • 当MapTask全部完成后,MRAppMaster会申请启动ReduceTask。ReduceTask的数量由作业的配置决定,通常与Reduce的输出结果数量相关。
  2. 数据处理与输出
    • ReduceTask对接收到的数据进行处理,包括合并相同key的value列表、执行自定义的reduce逻辑等。
    • 处理完成后,ReduceTask将结果写入到HDFS或其他存储系统中。

五、任务结束阶段

  1. 监控与汇报
    • MRAppMaster持续监控每个Reduce节点的执行情况,并在所有任务完成后向上汇报。
  2. 资源释放与任务结束
    • ResourceManager注销MRAppMaster,并释放其占用的资源。YarnRunner接收任务执行完成的信息,并返回给Client端。Client端接受信息后,表示作业执行完成。

MapReduce的工作流程是一个复杂而有序的过程,涉及多个组件和阶段的协同工作。通过合理的配置和优化,MapReduce可以高效地处理大规模数据,满足各种数据处理和分析的需求。


http://www.ppmy.cn/news/1563714.html

相关文章

Git | git reset命令详解

关注:CodingTechWork 引言 Git 是一款非常流行的分布式版本控制工具,它帮助开发者有效地管理代码历史,支持多种功能来帮助团队协作、追踪修改和维护代码质量。git reset是 Git 中最强大、最复杂的命令之一,它的主要作用是重置当前…

node.js中实现token的生成与验证

Token(令牌)是一种用于在客户端和服务器之间安全传输信息的加密字符串。在Web开发中,Token常用于身份验证和授权,确保用户能够安全地访问受保护的资源。 作用与意义 身份验证:Token可以用来验证用户的身份&#xff0…

六种主流虚拟化技术全解析:OpenStack、KVM、Hyper-V、VMware、Xen及Docker

秒懂虚拟化(一):从概念到网络、存储虚拟化全解析,通俗解读版-CSDN博客 秒懂虚拟化(二):服务器虚拟化、操作系统虚拟化、服务虚拟化全解析,通俗解读版_hostos和guestos-CSDN博客 秒…

uniapp省市区懒加载封装

一、z-region.vue 直接复制就可用&#xff0c;需要修改请求接口 getAddressList vue2和vue3皆可使用&#xff08;微信小程序&#xff0c;H5支持&#xff09; <template><view><view class"list"><picker class"picker" mode"…

PHP智慧小区物业管理小程序

&#x1f31f;智慧小区物业管理小程序&#xff1a;重塑社区生活&#xff0c;开启便捷高效新篇章 &#x1f31f; 智慧小区物业管理小程序是一款基于PHPUniApp精心雕琢的智慧小区物业管理小程序&#xff0c;它犹如一股清新的科技之风&#xff0c;吹进了现代智慧小区的每一个角落…

安装 MySQL 数据库

安装 MySQL 数据库 下载地址: https://downloads.mysql.com/archives/community/ 解压 mysql-8.0.20-winx64.zip 到 MySQL 文件夹 中在 MySQL 目录 下 、新建一个 my.ini 文件 (MySQL的配置文件) [mysqld] basedirD:/Program Files/MySQL datadirD:/Program Files/MySQL/dat…

浅谈云计算13 | 网络虚拟化

网络虚拟化 一、网络虚拟化技术原理剖析1.1 网络虚拟化基础概念2.2 关键技术原理2.2.1 虚拟交换机原理2.2.2 虚拟机网络连接原理2.2.3 网络功能虚拟化&#xff08;NFV&#xff09;原理 三、网络虚拟化的应用场景3.1 数据中心中的应用3.1.1 资源隔离与多租户支持3.1.2 网络流量优…

Android Studio:开启高效 Android 应用开发之旅

Android Studio 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为 Android 应用开发设计。以下是关于它的一些详细介绍&#xff1a; 一、基本功能 代码编辑与智能提示 它具有代码自动补全功能。当你输入代码时&#xff0c;它会根据上下文智能地提供类…