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

Hadoop HDFS 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
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

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

前言

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

分而治之

所谓“分而治之”,就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个分别找出各部分的解,再把各部分的解组成整个问题的解。这种朴素的思想来源于人们生活与工作的实践经验,如下图。

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

以下图做讲解:

在这里插入图片描述

1. Hadoop的核心组件

  • HDFS(Hadoop Distributed File System):分布式文件系统,用于存储海量数据

    • 采用主从架构(NameNode和DataNode)
    • 将文件分割成固定大小的块(默认128MB)进行存储
    • 每个块会在多个DataNode上备份(默认3份),保证数据可靠性
    • NameNode管理文件系统的元数据,DataNode负责实际数据存储
  • MapReduce:分布式计算框架,用于处理大规模数据

    • 基于"分而治之"思想,将计算任务分为Map和Reduce两个阶段
    • Map阶段:将输入数据分割成多个片段,并行处理
    • Reduce阶段:汇总Map阶段的结果,得到最终输出
    • 自动处理任务分发、容错、数据本地化等问题
  • YARN(Yet Another Resource Negotiator):资源管理和任务调度框架

    • 负责集群资源(CPU、内存等)的管理和分配
    • 主从架构:ResourceManager(主节点)和NodeManager(从节点)
    • 支持多种计算框架(MapReduce、Spark等)共享集群资源

2. Hadoop的架构特点

  • 主从架构:大部分组件采用主从架构设计,便于集中管理和分布式执行
  • 高容错性:通过数据备份和节点故障自动转移实现
  • 高扩展性:可以通过增加节点轻松扩展集群规模
  • 数据本地化:计算任务尽可能在数据所在节点执行,减少网络传输
  • 开源免费:基于Apache协议开源,降低企业使用成本

3. HDFS的工作原理

  • 读写流程

    • 写文件:客户端将文件分块,与NameNode交互获取存储位置,然后直接向DataNode写入数据
    • 读文件:客户端从NameNode获取文件块的存储位置,然后直接从DataNode读取数据
  • NameNode与DataNode的协作

    • NameNode维护文件系统的目录结构、文件与块的映射关系
    • DataNode定期向NameNode发送心跳信息和块报告
    • 当DataNode故障时,NameNode会安排其他节点复制数据块
  • 安全模式:HDFS启动时的一种特殊状态,此时只允许读操作,不允许写操作,用于检查数据块的完整性

4. MapReduce的工作原理

  • 执行流程

    1. InputFormat:将输入数据分割成InputSplit
    2. Map阶段:对每个InputSplit执行map函数,产生中间键值对
    3. Shuffle阶段:对map输出进行排序、分组等处理
    4. Reduce阶段:对shuffle后的结果执行reduce函数,产生最终输出
    5. OutputFormat:将reduce输出写入到指定位置
  • Shuffle机制:MapReduce的核心,负责在Map和Reduce之间传输和处理数据,包括分区、排序、合并等操作

5. YARN的工作原理

  • 核心组件

    • ResourceManager:全局资源管理器,负责资源分配和调度
    • NodeManager:每个节点上的资源管理器,负责本节点的资源管理
    • ApplicationMaster:每个应用程序的管理者,负责与ResourceManager协商资源并管理任务执行
    • Container:资源分配的基本单位,包含CPU、内存等资源
  • 作业提交与执行流程

    1. 客户端提交应用程序到ResourceManager
    2. ResourceManager分配第一个Container启动ApplicationMaster
    3. ApplicationMaster向ResourceManager申请资源
    4. ApplicationMaster在分配的Container上启动任务
    5. 任务执行并向ApplicationMaster汇报进度
    6. 所有任务完成后,ApplicationMaster向ResourceManager注销并关闭

6. Hadoop的生态系统

Hadoop生态系统包含多个相关项目,共同构成了大数据处理的完整解决方案:

  • Hive:数据仓库工具,提供类SQL查询语言(HQL)
  • Pig:数据流处理工具,提供类SQL的脚本语言(Pig Latin)
  • HBase:分布式NoSQL数据库,适合存储非结构化和半结构化数据
  • ZooKeeper:分布式协调服务,用于管理集群配置、命名服务等
  • Flume:日志收集工具,用于高效收集、聚合和传输大量日志数据
  • Sqoop:数据传输工具,用于在Hadoop与关系型数据库之间传输数据
  • Spark:快速通用的计算引擎,可替代MapReduce进行数据处理

7. Hadoop的应用场景

  • 日志分析:处理海量日志数据,提取有价值信息
  • 数据仓库:构建大规模数据仓库,支持数据分析和决策
  • 搜索引擎:存储和处理网页数据,支持全文检索
  • 机器学习:处理大规模训练数据,训练机器学习模型
  • 科学计算:处理科学研究中的海量数据
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

http://www.lryc.cn/news/610443.html

相关文章:

  • 嵌入式知识篇---闪存
  • mysql 数据库系统坏了,物理拷贝出数据怎么读取
  • Deepoc 赋能送餐机器人:从机械执行到具身智能的革命性跨越
  • JavaScript 中的流程控制语句详解
  • 机器学习实战:逻辑回归深度解析与欺诈检测评估指标详解(二)
  • Redis缓存详解及常见问题解决方案
  • MySQL 基本操作入门指南
  • MCP进阶:工业协议与AI智能体的融合革命
  • 使用 SecureCRT 连接华为 eNSP 模拟器的方法
  • typeof和instanceof区别
  • Linux学习记录(八)文件共享
  • 认识pytorch与pytorch lightning
  • BackgroundTasks 如何巧妙驾驭多任务并发?
  • 我的创作纪念日____在 CSDN一年来的成长历程和收获
  • openvela之内存管理
  • Linux 磁盘管理与分区配置
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-注册实现
  • 向量魔法:Embedding如何赋能大模型理解世界
  • Go语言select
  • Git基础玩法简单描述
  • 【LeetCode刷题集】--排序(一)
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • windows双系统下ubuntu20.04安装教程
  • HTTPS有哪些优点
  • Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测
  • Flink CDC 介绍
  • Field and wave electromagnetics 复习
  • 正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050
  • 【Java】一篇详解HashMap的扩容机制!!