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

hadoop的三大结构及其各自的作用

Hadoop 主要有三大核心组件,分别是 HDFS(Hadoop Distributed File System)、MapReduce 和 YARN,以下是它们各自的作用:
HDFS(Hadoop Distributed File System)
存储数据:HDFS 是一个分布式文件系统,用于存储海量的数据。它采用主从(Master - Slave)架构,由一个 NameNode 和多个 DataNode 组成。NameNode 管理文件系统的命名空间,维护着整个文件系统的目录树结构、文件和目录的元数据(例如文件的权限、修改时间、块位置信息等),就像图书馆的目录索引一样。

数据冗余备份:HDFS 提供了数据冗余备份机制,以防止数据丢失。默认情况下,每个数据块会在多个不同的 DataNode 上进行备份(通常备份系数为 3)。这样,当某个 DataNode 出现故障时,数据不会丢失,可以从其他备份的数据块中恢复。这种冗余策略确保了数据的高可用性和容错性,适合处理大规模数据存储场景,如数据仓库、日志存储等。

MapReduce
数据处理:MapReduce 是一种编程模型,用于大规模数据集(大于 1TB)的并行处理。它主要包含两个阶段:Map 阶段和 Reduce 阶段。在 Map 阶段,数据被分割成多个小的数据集,这些小数据集可以在集群中的不同节点上并行处理。例如,对于一个存储了网站访问日志的数据集,Map 阶段可以对每条日志记录进行处理,提取出诸如访问时间、访问 IP、访问页面等信息。每个 Map 任务处理一个数据分片,并且产生一系列的键值对(Key - Value)作为中间结果。这些中间结果会被传输到 Reduce 阶段进行汇总和处理。Reduce 阶段则根据相同的键(Key)对中间结果进行合并和进一步处理。例如,在统计网站每个页面的访问次数时,Reduce 阶段可以将相同页面的访问次数相加,得到最终的统计结果。
资源分配与任务调度:MapReduce 框架负责合理分配计算资源,使得多个 Map 任务和 Reduce 任务能够在集群的各个节点上高效地运行。它根据任务的优先级、数据本地性等因素来调度任务。数据本地性是指尽量将计算任务分配到存储数据的节点上,这样可以减少数据传输的开销,提高处理效率。通过这种方式,MapReduce 能够充分利用集群的计算资源,实现对大规模数据的高效处理,适用于数据挖掘、机器学习、日志分析等各种数据密集型应用场景。
YARN(Yet Another Resource Negotiator)
资源管理与调度:YARN 是 Hadoop 的资源管理系统,它负责集群中各种资源(如 CPU、内存等)的分配和管理。YARN 将资源管理从具体的数据处理框架(如 MapReduce)中分离出来,使得多个不同类型的计算框架可以共享集群资源。它主要由 ResourceManager、NodeManager 和 ApplicationMaster 组成。ResourceManager 是整个集群资源的管理者,负责接收和处理客户端的资源请求,为应用程序分配资源。NodeManager 运行在集群中的每个节点上,负责管理本节点的资源,如监控资源使用情况、启动和停止容器(Container)等。容器是 YARN 中资源分配的基本单位,它封装了一定量的 CPU、内存等资源,用于运行应用程序的任务。
应用程序管理:YARN 为应用程序提供了运行环境和资源保障。当一个应用程序提交到 YARN 集群时,YARN 会为该应用程序分配一个 ApplicationMaster。ApplicationMaster 负责与 ResourceManager 协商资源,根据应用程序的需求向 NodeManager 申请容器来运行任务。它还负责监控任务的运行状态,当任务失败时可以重新申请资源和重启任务。这种架构使得不同的应用程序可以在同一个集群中互不干扰地运行,提高了集群资源的利用率和灵活性,支持多种类型的大数据应用,如批处理、交互式查询、流处理等。
 

http://www.xdnf.cn/news/9955.html

相关文章:

  • 基于尚硅谷FreeRTOS视频笔记——6—滴答时钟—上下文切换
  • ubuntu 22.04 使用ssh-keygen创建ssh互信账户
  • OpenGauss 数据库介绍
  • AI 编程工具—如何在 Cursor 中集成使用 MCP工具
  • 基于大模型的直肠息肉诊疗全流程风险预测与方案优化研究报告
  • 深入 MySQL 高级查询:JOIN、子查询与窗口函数的实用指南
  • ARM寄存器组织
  • 51c嵌入式~单片机~合集5~DMA
  • 数据可视化笔记:柱状图
  • 【Java报错】数据库查询报错this is incompatible with sql_mode=only_full_group_by
  • MAC-如果是分页查询,怎么分批次in;基于多线程的分页查询工具类
  • 492Q 型气缸盖双端面铣削组合铣床总体设计
  • Jenkins 多分支流水线: 如何创建用于 Jenkins 状态检查的 GitHub 应用
  • vue3学习笔记之条件渲染
  • 「数据可视化 D3系列」入门第八章:动画效果详解(让图表动起来)
  • 「GitHub热榜」AIGC系统源码:AI问答+绘画+PPT+音乐生成一站式
  • 第12篇:Linux程序访问控制FPGA端Switch<一>
  • Yocto项目实战教程 · 第4章:4.2小节-菜谱
  • AWS Elastic Beanstalk的部署Python Flask后端服务(Hello,World)
  • JavaScript 性能优化实战
  • 决战浏览器渲染:减少重绘(Repaint)与重排(Reflow)的性能优化策略
  • 基于springBoot+vue的PC 端学习系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C++ AVL树
  • HAL库通过FATFS和SDIO+DMA写入SD卡数据错误
  • 2025MathorcupD题 短途运输货量预测及车辆调度问题 保姆级教程讲解|模型讲解
  • L2-006 树的遍历
  • DHTMLX宣布推出支持 Redux、TypeScript 和 MUI 的 React Gantt甘特图控件
  • redis利用备忘录
  • Jsp技术入门指南【五】详细讲解jsp结构页面
  • 【含文档+PPT+源码】基于Python爬虫二手房价格预测与可视化系统的设计与实现