HDFS存储原理与MapReduce计算模型

news2025/6/1 7:06:58

HDFS存储原理

1. 架构设计
  • 主从架构:包含一个NameNode(主节点)和多个DataNode(从节点)。
    • NameNode:管理元数据(文件目录结构、文件块映射、块位置信息),不存储实际数据。
    • DataNode:存储实际数据块,负责处理客户端的读写请求,并定期向NameNode发送心跳和块报告。
2. 数据分块与副本机制
  • 分块存储:文件被分割为固定大小的块(默认128MB或256MB),便于并行处理和存储优化。
  • 多副本冗余:每个块默认保存3个副本,分布策略为:
    • 第1个副本:写入客户端所在节点(若为集群外则随机选节点)。
    • 第2个副本:同一机架的另一节点。
    • 第3个副本:不同机架的节点。
  • 容错性:通过副本机制和机架感知策略,保障数据可靠性与读取效率。
3. 读写流程
  • 写入流程

    1. 客户端向NameNode申请写入,NameNode分配DataNode列表。
    2. 客户端将数据块写入第一个DataNode,后者通过管道依次复制到其他副本节点。
    3. 写入成功后,NameNode更新元数据。
  • 读取流程

    1. 客户端向NameNode获取文件块的位置信息。
    2. 直接从最近的DataNode(基于网络拓扑)读取数据块,支持并发读取多个块。
4. 容错与高可用
  • DataNode故障:NameNode通过心跳检测移除失效节点,并触发副本复制。
  • NameNode HA(Hadoop 2.x+):通过主备NameNode和JournalNode实现故障自动切换,解决单点问题。

MapReduce计算模型

1. 核心阶段
  • Map阶段

    • 输入数据被划分为分片(Split),每个分片由一个Map任务处理。
    • Map任务输出中间键值对(Key-Value),可本地聚合(Combiner)减少数据传输。
  • Shuffle与Sort阶段

    • 分区(Partitioning):按Key的哈希值分配到不同Reduce任务。
    • 排序与合并:Map端对输出排序,Reduce端合并相同Key的数据。
  • Reduce阶段

    • 对Shuffle后的数据执行用户定义的Reduce逻辑,生成最终结果。
2. 执行流程
  1. 作业提交:客户端提交任务到ResourceManager(YARN架构)。
  2. 任务调度:ApplicationMaster分配Map/Reduce任务到NodeManager。
  3. 数据本地化优化:优先调度Map任务到存储数据的节点,减少网络IO。
  4. 结果输出:Reduce结果写入HDFS或其他存储系统。
3. 容错机制
  • 任务重试:失败的Map/Reduce任务会被重新调度到其他节点。
  • 推测执行:对慢节点启动备份任务,防止个别任务拖慢整体进度。
4. 适用场景
  • 离线批处理:适合大规模数据并行计算(如日志分析、ETL)。
  • 局限性:不适合低延迟(实时)场景,迭代计算效率较低(需多次读写HDFS)。

总结

  • HDFS:通过分块、多副本和机架感知实现高吞吐、高可靠存储。
  • MapReduce:以分而治之思想,通过Map、Shuffle/Sort、Reduce三阶段处理海量数据,结合容错机制保障稳定性。两者共同构成Hadoop生态的核心计算与存储基础。

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

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

相关文章

电机控制选 STM32 还是 DSP?技术选型背后的现实博弈

现在搞电机控制,圈里人都门儿清 —— 主流方案早就被 STM32 这些 Cortex-M 单片机给拿捏了。可要是撞上系统里的老甲方,技术认知还停留在诺基亚砸核桃的年代,非揪着 DSP 不放,咱也只能赔笑脸:“您老说的对,…

.NET 开源工业视觉系统 OpenIVS 快速搭建自动化检测平台

前言 随着工业4.0和智能制造的发展,工业视觉在质检、定位、识别等场景中发挥着越来越重要的作用。然而,开发一个完整的工业视觉系统往往需要集成相机控制、图像采集、图像处理、AI推理、PLC通信等多个模块,这对开发人员提出了较高的技术要求…

AI智能分析网关V4室内消防逃生通道占用检测算法打造住宅/商业/工业园区等场景应用方案

一、方案背景​ 火灾严重威胁生命财产安全,消防逃生通道畅通是人员疏散的关键。但现实中通道被占用、堵塞现象频发,传统人工巡查监管效率低、不及时。AI智能分析网关V4结合消防逃生通道占用算法,以强大的图像识别和数据分析能力,…

关于无法下载Qt离线安装包的说明

不知道出于什么原因考虑,Qt官方目前不提供离线的安装包下载,意味着网上各种文章提供的各种下载地址都失效了,会提示Download from your IP address is not allowed,当然目前可以在线安装,但是据说只提供了从5.15开始的…

Java开发经验——阿里巴巴编码规范实践解析4

摘要 本文主要介绍了阿里巴巴编码规范中关于日志处理的相关实践解析。强调了使用日志框架(如 SLF4J、JCL)而非直接使用日志系统(如 Log4j、Logback)的 API 的重要性,包括解耦日志实现、统一日志调用方式等好处。同时&…

HTML应用指南:利用GET请求获取全国捞王锅物料理门店位置信息

随着新零售业态的快速发展,门店位置信息的获取变得越来越重要。作为知名中式餐饮品牌之一,捞王锅物料理自2009年创立以来,始终致力于为消费者提供高品质的锅物料理与贴心的服务体验。经过多年的发展,捞王在全国范围内不断拓展门店…

算法日记32:埃式筛、gcd和lcm、快速幂、乘法逆元

一、埃式筛(计算质数) 1.1、概念 1.1.1、在传统的计算质数中,我们采用单点判断,即判断(2~sqrt(n))是否存在不合法元素,若存在则判否,否则判是 1.1.2、假设,此时我们需要求1~1000的所有质数&am…

黑马点评-分布式锁Lua脚本

文章目录 分布式锁Redis setnxredis锁误删Lua脚本 分布式锁 当我们的项目服务器不只是一台(单体),而是部署在多态服务器上(集群/分布式),同样会出现线程安全问题。不同服务器内部有不同的JVM,每…

机械师安装ubantu双系统:三、GPT分区安装Ubantu

目录 一、查看磁盘格式 二、安装ubantu 参考链接: GPT分区安装Ubuntu_哔哩哔哩_bilibili 一、查看磁盘格式 右击左边灰色区域,点击属性 二、安装ubantu 插入磁盘,重启系统,狂按F7(具体我也忘了)&#…

kafka学习笔记(三、消费者Consumer使用教程——从指定位置消费)

1.简介 Kafka的poll()方法消费无法精准的掌握其消费的起始位置,auto.offset.reset参数也只能在比较粗粒度的指定消费方式。更细粒度的消费方式kafka提供了seek()方法可以指定位移消费允许消费者从特定位置(如固定偏移量、时间戳或分区首尾)开…

【后端高阶面经:架构篇】46、分布式架构:如何应对高并发的用户请求

一、架构设计原则:构建可扩展的系统基石 在分布式系统中,高并发场景对架构设计提出了极高要求。 分层解耦与模块化是应对复杂业务的核心策略,通过将系统划分为客户端、CDN/边缘节点、API网关、微服务集群、缓存层和数据库层等多个层次,实现各模块的独立演进与维护。 1.1 …

网络编程学习笔记——TCP网络编程

文章目录 1、socket()函数2、bind()函数3、listen()4、accept()5、connect()6、send()/write()7、recv()/read()8、套接字的关闭9、TCP循环服务器模型10、TCP多线程服务器11、TCP多进程并发服务器 网络编程常用函数 socket() 创建套接字bind() 绑定本机地址和端口connect() …

Vue+element-ui,实现表格渲染缩略图,鼠标悬浮缩略图放大,点击缩略图播放视频(一)

Vueelement-ui,实现表格渲染缩略图,鼠标悬浮缩略图放大,点击缩略图播放视频 前言整体代码预览图具体分析基础结构主要标签作用videoel-popover 前言 如标题,需要实现这样的业务 此处文章所实现的,是静态视频资源。 注…

day13 leetcode-hot100-22(链表1)

160. 相交链表 - 力扣(LeetCode) 1.哈希集合HashSet 思路 (1)将A链的所有数据存储到HashSet中。 (2)遍历B链,找到是否在A中存在。 具体代码 /*** Definition for singly-linked list.* pu…

【Oracle】DQL语言

个人主页:Guiat 归属专栏:Oracle 文章目录 1. DQL概述1.1 什么是DQL?1.2 DQL的核心功能 2. SELECT语句基础2.1 基本语法结构2.2 最简单的查询2.3 DISTINCT去重 3. WHERE条件筛选3.1 基本条件运算符3.2 逻辑运算符组合3.3 高级条件筛选 4. 排序…

HUAWEI华为MateBook D 14 2021款i5,i7集显非触屏(NBD-WXX9,NbD-WFH9)原装出厂Win10系统

适用型号:NbD-WFH9、NbD-WFE9A、NbD-WDH9B、NbD-WFE9、 链接:https://pan.baidu.com/s/1qTCbaQQa8xqLR-4Ooe3ytg?pwdvr7t 提取码:vr7t 华为原厂WIN系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office…

【STIP】安全Transformer推理协议

Secure Transformer Inference Protocol 论文地址:https://arxiv.org/abs/2312.00025 摘要 模型参数和用户数据的安全性对于基于 Transformer 的服务(例如 ChatGPT)至关重要。虽然最近在安全两方协议方面取得的进步成功地解决了服务 Transf…

leetcode hot100刷题日记——27.对称二叉树

方法一:递归法 class Solution { public:bool check(TreeNode *left,TreeNode *right){//左子树和右子树的节点同时是空的是对称的if(leftnullptr&&rightnullptr){return true;}if(leftnullptr||rightnullptr){return false;}//检查左右子树的值相不相等&a…

高考加油(Python+HTML)

前言 询问DeepSeek根据自己所学到的知识来生成多个可执行的代码,为高考学子加油。最开始生成的都会有点小问题,还是需要自己调试一遍,下面就是完整的代码,当然了最后几天也不会有多少人看,都在专心的备考。 Python励…

贪心算法应用:Ford-Fulkerson最大流问题详解

Java中的贪心算法应用:Ford-Fulkerson最大流问题详解 1. 最大流问题概述 最大流问题(Maximum Flow Problem)是图论中的一个经典问题,旨在找到一个从源节点(source)到汇节点(sink)的最大流量。Ford-Fulkerson方法是解决最大流问题的经典算法之一,它属于贪心算法的范畴…