Hadoop MapReduce 3.3.4 讲解~

在这里插## 标题入图片描述

> 						大家好,我是程序员小羊!

✨博客主页: https://blog.csdn.net/m0_63815035?type=blog

💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

在这里插入图片描述

在这里插入图片描述

目录

  • 前言
  • 设计思想
      • 1. MapReduce的基本概念
      • 2. MapReduce的核心组件
      • 3. MapReduce的工作流程
      • 4. MapReduce的数据处理模型
      • 5. Shuffle机制详解
      • 6. MapReduce的优化策略
      • 7. MapReduce的应用场景
      • 8. MapReduce与YARN的关系

前言

Hadoop是一个开源的分布式计算框架,主要用于处理和存储大规模数据集。它的设计初衷是解决海量数据的存储和计算问题,具有高容错性、高扩展性和低成本等特点。下面详细讲解Hadoop的核心知识点:

设计思想

在这里插入图片描述
在这里插入图片描述

1. MapReduce的基本概念

  • 定义:一种分布式计算模型,用于处理海量数据的并行计算
  • 核心思想:将复杂的计算任务分解为Map(映射)和Reduce(归约)两个阶段
  • 优势
    • 自动实现并行处理
    • 提供容错机制
    • 处理PB级别的海量数据
    • 适用于各种分布式计算场景

2. MapReduce的核心组件

  • JobTracker:负责整个作业的调度和监控(Hadoop 1.x中,Hadoop 2.x中被YARN的ResourceManager替代)
  • TaskTracker:运行在每个节点上,负责执行具体任务(Hadoop 1.x中,Hadoop 2.x中被YARN的NodeManager替代)
  • Map Task:执行Map阶段的任务
  • Reduce Task:执行Reduce阶段的任务
  • InputSplit:输入数据的逻辑分片,每个分片由一个Map Task处理
  • Combiner:可选的本地Reduce操作,用于减少Map输出的数据量
  • Partitioner:决定Map输出的键值对分配到哪个Reduce Task

3. MapReduce的工作流程

  1. 输入分片(InputSplit)

    • 将输入数据分割成多个InputSplit(通常与HDFS块大小一致)
    • 每个InputSplit由一个Map Task处理
  2. Map阶段

    • 读取InputSplit中的数据,解析成键值对(K1, V1)
    • 对每个键值对执行map函数,生成中间键值对(K2, V2)
    • 示例:计算单词频率时,将(“文档1”, “hello world”)转换为(“hello”, 1)、(“world”, 1)
  3. Shuffle阶段(核心)

    • 分区(Partitioning):根据Partitioner将Map输出分到不同的分区
    • 排序(Sorting):对每个分区内的键值对按键排序
    • 合并(Combining):可选操作,对排序后的结果进行本地合并,减少数据传输
    • 归并(Merging):将多个Map Task的输出合并成一个有序的数据集
  4. Reduce阶段

    • 读取Shuffle后的有序数据
    • 对相同键的value集合执行reduce函数,生成最终键值对(K3, V3)
    • 示例:将多个(“hello”, 1)合并为(“hello”, 5)
  5. 输出(Output)

    • 将Reduce的输出写入到指定的存储系统(通常是HDFS)

4. MapReduce的数据处理模型

  • 键值对:MapReduce的所有数据处理都基于键值对(Key-Value Pair)

  • 数据类型:所有的Key和Value都必须实现Writable接口,常用类型包括:

    • Text:用于字符串
    • IntWritable:用于整数
    • LongWritable:用于长整数
    • DoubleWritable:用于浮点数
  • 函数定义

    • Map函数:map(K1, V1) → list(K2, V2)
    • Reduce函数:reduce(K2, list(V2)) → list(K3, V3)

5. Shuffle机制详解

Shuffle是MapReduce的核心,连接Map和Reduce阶段,负责数据的传输和处理:

  1. Map端的Shuffle

    • 环形缓冲区:Map输出先写入内存缓冲区(默认100MB)
    • 溢出写(Spill):当缓冲区达到阈值(默认80%),将数据写入磁盘
    • 合并溢出文件:将多个溢出文件合并成一个有序文件
  2. Reduce端的Shuffle

    • 拉取数据(Fetch):Reduce Task从各个Map Task拉取属于自己的分区数据
    • 合并数据(Merge):将拉取的多个数据片段合并成一个大的有序数据集
    • 分组(Grouping):将相同Key的Value合并成一个列表

6. MapReduce的优化策略

  • 数据本地化:尽量将计算任务分配到数据所在的节点,减少网络传输
  • Combiner使用:在Map端进行本地聚合,减少Shuffle阶段的数据量
  • 合理设置Map和Reduce数量:根据数据大小和集群规模调整
  • 压缩:对Map输出和中间数据进行压缩,减少IO操作
  • JVM重用:在TaskTracker上重用JVM,减少启动开销
  • 调整缓冲区大小:根据内存情况调整Map阶段的缓冲区大小

7. MapReduce的应用场景

  • 日志分析:统计访问量、用户行为分析等
  • 数据挖掘:关联规则挖掘、聚类分析等
  • 机器学习:训练大规模数据集的模型
  • 搜索引擎:网页排序、关键词统计等
  • 数据转换:数据格式转换、数据清洗等

8. MapReduce与YARN的关系

在Hadoop 2.x中,MapReduce运行在YARN框架上:

  • ResourceManager负责集群资源管理
  • ApplicationMaster负责MapReduce作业的生命周期管理
  • NodeManager负责单个节点的资源管理和任务执行
  • Container为Map和Reduce任务提供计算资源
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

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

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

相关文章

1、【数学】【硬币悖论】旋转硬币问题

问题描述: 两个相同的硬币,半径都是 rrr。一个硬币(称为“动硬币”)沿着另一个固定不动的硬币(“静硬币”)的外边缘无滑动地滚动一圈,回到起始位置。问:动硬币自身旋转了几圈&#x…

【盘古100Pro+开发板实验例程】FPGA学习 | PCIE 通信测试实验例程

本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 1. 实验简介 实验目的: 完成 PCIE 通信测试。 实验环境: Window11 PDS2022.2-SP6.4 硬件环…

基于高阶累积量的调制识别

基于高阶累积量的调制识别是一种利用信号的高阶统计特性来识别不同调制方式的方法。 1. 基本原理 高阶累积量(Higher-Order Cumulants)是信号处理中的一个重要工具,能够捕捉信号的非高斯特性。与高阶矩相比,高阶累积量对高斯噪声具…

Java常用数据结构入门

Java常用数据结构入门 前言 数据结构是程序设计中的基础,掌握常用数据结构能帮助你更高效地解决问题。本文面向Java初学者,介绍Java中常用的数据结构及其基本使用方法。 1. 数组 (Array) 数组是最基础的数据结构,可以存储固定大小的同类型…

Android GPU测试

一、Basemark GPU 可选择进行vulkan和opengl测试: 二、GFXBench 进行各种offscreen测试(包括曼哈顿离屏) 这是由GFXBench图形性能测试套件提供的一个著名3D图形渲染场景。 它模拟了一个复杂的未来都市环境(类似曼哈顿&#xff…

2025年6月最新SCI-灰熊脂肪增长优化算法Grizzly Bear Fat Increase-附Matlab免费代码

引言 本期介绍一种受自然启发的创新算法——灰熊脂肪增长优化算法Grizzly Bear Fat Increase optimizer,GBFIO。GBFIO算法模仿灰熊为准备过冬而积累身体脂肪的自然行为,借鉴了它们的狩猎、捕鱼、吃草、蜂蜜等策略。于2025年6月发表在JCR 1区&#xff0c…

Pytorch实现一个简单的贝叶斯卷积神经网络模型

贝叶斯深度模型的主要特点和实现说明:模型结构:结合了常规卷积层(用于特征提取)和贝叶斯线性层(用于分类)贝叶斯层将权重视为随机变量,而非传统神经网络中的确定值使用变分推断来近似权重的后验…

Dubbo 3.x源码(32)—Dubbo Provider处理服务调用请求源码

基于Dubbo 3.1,详细介绍了Dubbo Provider处理服务调用请求源码 上文我们学习了,Dubbo消息的编码解的源码。现在我们来学习一下Dubbo Provider处理服务调用请求源码。 当前consumer发起了rpc请求,经过请求编码之后到达provider端,…

每日一leetcode:移动零

目录 解题过程: 描述: 分析条件: 解题思路: 通过这道题可以学到什么: 解题过程: 描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操…

6-Django项目实战-[dtoken]-用户登录模块

1.创建应用 python manage.py startapp dtoken 2.注册应用 settings.py中注册 3.匹配路由4.编写登录功能视图函数 import hashlib import json import timeimport jwt from django.conf import settings from django.http import JsonResponse from user.models import UserPro…

Axure日期日历高保真动态交互原型

在数字化产品设计中,日期日历组件作为高频交互元素,其功能完整性与用户体验直接影响着用户对产品的信任度。本次带来的日期日历高保真动态交互原型,依照Element UI、View UI等主流前端框架为参考,通过动态面板、中继器、函数、交互…

【YOLOv4】

YOLOv4 论文地址::【https://arxiv.org/pdf/2004.10934】 YOLOv4 论文中文翻译地址:【深度学习论文阅读目标检测篇(七)中文版:YOLOv4《Optimal Speed and Accuracy of Object Detection》-CSDN博客】 yol…

【秋招笔试】2025.08.03虾皮秋招笔试-第一题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 01. 蛋糕切分的最大收益 问题描述 K小姐经营着一家甜品店,今天她有一块长度为 n n n 厘米的长条蛋糕需要切分。根据店里的规定,她必须将蛋糕切成至少 2 2

2.0 vue工程项目的创建

前提准备.需要电脑上已经安装了nodejs 参考 7.nodejs和npm简单使用_npmjs官网-CSDN博客 创建vue2工程 全局安装 Vue CLI 在终端中运行以下命令来全局安装 Vue CLI: npm install -g vue/cli npm install -g 表示全局安装。vue/cli 是 Vue CLI 的包名。 安装完成后…

视觉图像处理中级篇 [2]—— 外观检查 / 伤痕模式的原理与优化设置方法

外观缺陷检测是工业生产中的关键环节,而伤痕模式作为图像处理的核心算法,能精准识别工件表面的划痕、污迹等缺陷。掌握其原理和优化方法,对提升检测效率至关重要。一、利用伤痕模式进行外观检查虽然总称为外观检查,但根据检查对象…

ethtool,lspci,iperf工具常用命令总结

ethtool、lspci 和 iperf 是 Linux 系统中进行网络硬件查看、配置和性能测试的核心命令行工具。下面是它们的常用命令分析和总结: 核心作用总结: lspci: 侦察兵 - 列出系统所有 PCI/PCIe 总线上的硬件设备信息,主要用于识别网卡型号、制造商、…

DAY10DAY11-新世纪DL(DeepLearning/深度学习)战士:序

本文参考视频[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili 参考文章0.0 目录-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授-CSDN博客 1深度学习概论 1.举例介绍 lg房价预测:房价与面积之间的坐标关系如图所示,由线性回归…

flutter release调试插件

chucker_flutter (只有网络请求的信息,亲测可以用) flutter:3.24.3 使用版本 chucker_flutter: 1.8.2 chucker_flutter | Flutter package void main() async {// 可以控制显示ChuckerFlutter.showNotification false;ChuckerF…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的私域流量拉新策略研究

摘要:私域流量运营已成为企业数字化转型的核心战略,其本质是通过精细化用户运营实现流量价值最大化。本文以“定位、拉新、养熟、成交、裂变、留存”全链路为框架,聚焦开源链动21模式、AI智能名片与S2B2C商城小程序的协同创新,揭示…

华为云云服务高级顾问叶正晖:华为对多模态大模型的思考与实践

嘉宾介绍:叶正晖,华为云云服务高级顾问,全球化企业信息化专家,从业年限超过23年,在华为任职超过21年,涉及运营商、企业、消费者、云服务、安全与隐私等领域,精通云服务、安全合规、隐私保护等领…