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的应用场景

  • 日志分析:处理海量日志数据,提取有价值信息
  • 数据仓库:构建大规模数据仓库,支持数据分析和决策
  • 搜索引擎:存储和处理网页数据,支持全文检索
  • 机器学习:处理大规模训练数据,训练机器学习模型
  • 科学计算:处理科学研究中的海量数据
csharp 复制代码
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文
相关推荐
慌ZHANG2 小时前
云原生安全挑战与治理策略:从架构思维到落地实践
大数据·云原生·架构
张太行_3 小时前
人月神话:软件工程的永恒智慧
大数据·软件工程
程序员小羊!4 小时前
Hadoop MapReduce 3.3.4 讲解~
大数据·hadoop·mapreduce
Leinwin5 小时前
GitHub Spark公共预览版上线
大数据·spark·github
跨境猫小妹6 小时前
亚马逊卖家反馈机制变革:纯星级评级时代的合规挑战与运营重构
大数据·人工智能·重构·跨境电商·亚马逊
小白学大数据6 小时前
Java爬虫性能优化:多线程抓取JSP动态数据实践
java·大数据·爬虫·性能优化
诗旸的技术记录与分享7 小时前
Flink-1.19.0-核心源码详解
大数据·flink
TDengine (老段)7 小时前
TDengine 中 TDgpt 的模型评估工具
大数据·数据库·机器学习·ai·时序数据库·tdengine·涛思数据
开源智慧工坊8 小时前
6 大模块!重构物业运营方式
大数据·物联网·智慧城市