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

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

相关文章:

  • C++信息学奥赛一本通-第一部分-基础一-第一章
  • 微信小程序本地存储与Cookie的区别
  • 架构进阶——解读45页企业架构管理方法与需求受理流程【附全文阅读】
  • AI绘图-Stable Diffusion-WebUI的基本用法
  • Node.js(四)之数据库与身份认证
  • 更智能的 RibbonBar Spread.NET 18.2Crack
  • [spring-cloud: @LoadBalanced @LoadBalancerClient]-源码分析
  • 【Linux | 网络】网络层(IP协议、NAT技术和ICMP协议)
  • SpringBoot整合t-io是websocket实时通信
  • LeetCode 分类刷题:16. 最接近的三数之和
  • 《汇编语言:基于X86处理器》第11章 复习题和练习
  • uiautomator2 编写测试流程-登陆后的酷狗01
  • 进程生命周期管理:从创建到终止的完整逻辑
  • 探索医学领域多模态人工智能的发展图景:技术挑战与临床应用的范围综述|文献速递-医学影像算法文献分享
  • iOS 内测上架流程详解:跨平台团队如何快速部署 TestFlight
  • 注解知识学习
  • 凹槽类零部件尺寸的检测方法有哪些 - 激光频率梳 3D 轮廓检测
  • [硬件电路-156]:什么是电信号? 电信号的本质:电信号是随时间变化的电压或电流。本质是电子运动表征信息,兼具能量传输与信息编码传递功能。
  • Mac电脑基本功能快捷键
  • EdgeView for macOS:解决图像管理痛点的利器
  • 设计模式 -> 策略模式(Strategy Pattern)
  • 经典设计模式
  • 验证码等待时间技术在酒店自助入住、美容自助与社区场景中的应用必要性研究—仙盟创梦IDE
  • Calcite自定义扩展SQL案例详细流程篇
  • 六、Linux核心服务与包管理
  • 前端 拼多多4399笔试题目
  • [自动化Adapt] 录制引擎 | iframe 穿透 | NTP | AIOSQLite | 数据分片
  • Connection refused: no further information: localhost/127.0.0.1:2375
  • 第四章:OSPF 协议
  • ssh服务器端口和本地端口映射