当前位置: 首页 > ops >正文

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.xdnf.cn/news/16979.html

相关文章:

  • SpringBoot自动装配原理
  • 36.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--缓存Token
  • 编程算法:技术创新与业务增长的核心驱动力
  • IDA9.1使用技巧(安装、中文字符串显示、IDA MCP服务器详细部署和MCP API函数修改开发经验)
  • 电商直播流量爆发式增长,华为云分布式流量治理与算力调度服务的应用场景剖析
  • 构建属于自己的第一个 MCP 服务器:初学者教程
  • 从零认识OpenFlow
  • 学习游戏制作记录(角色属性和状态脚本)8.4
  • 【Linux指南】软件安装全解析:从源码到包管理器的进阶之路
  • AI鉴伪技术鉴赏:“看不见”的伪造痕迹如何被AI识破
  • Java项目:基于SSM框架实现的电子病历管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
  • Git如何同步本地与远程仓库并解决冲突
  • 【iOS】渲染原理离屏渲染
  • 打造个人数字图书馆:LeaNote+cpolar如何成为你的私有化知识中枢?
  • 时序数据库如何高效处理海量数据
  • Spring P1 | 创建你的第一个Spring MVC项目(IDEA图文详解版,社区版专业版都有~)
  • 【数据库】使用Sql Server创建索引优化查询速度,一般2万多数据后,通过非索引时间字段排序查询出现超时情况
  • Anthropic 禁止 OpenAI 访问 Claude API:商业竞争与行业规范的冲突
  • 接口重试方案,使用网络工具的内置重试机制,并发框架异步重试,Spring Retry,消息队列重试,Feign调用重试,监控与报警,避坑指南
  • Linux 系统启动原理
  • mac 技巧
  • Postman 四种请求体格式全解析:区别、用法及 Spring Boot 接收指南
  • 手搓TCP服务器实现基础IO
  • 华为2288H V5服务器闪红灯 无法开机案例
  • 8.4IO进程线程——进程
  • 1.2 医学影像处理基本概念
  • 【OpenAI API】API接口介绍
  • Mac桌面仿制项目--让ai一句话生成的
  • ROS2机器人编程新书推荐-2025-精通ROS 2机器人编程:使用ROS 2进行复杂机器人的设计、构建、仿真与原型开发(第四版)
  • kraft的设计与实现