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

Hadoop基础知识

Hadoop 是由 Apache 基金会开发的开源分布式计算框架,主要用于处理海量数据的存储和计算问题。其核心设计基于 Google 的 MapReduce 编程模型和 GFS(Google File System),旨在通过集群化的廉价硬件实现高可靠性、高扩展性的大数据处理。以下是 Hadoop 的核心要点介绍:


一、Hadoop 的核心架构

Hadoop 主要由以下模块组成:

  1. HDFS(Hadoop Distributed File System)

    • 分布式文件存储系统,支持海量数据的存储,默认将文件分割为 128MB 的块(Hadoop 2.x 及以上版本),并自动复制多份(默认 3 份)存储在不同节点,确保容错性。

    • 采用主从架构:

      • NameNode:管理文件系统元数据(如文件名、块位置),处理客户端请求。【元数据表示描述数据的数据,记录DataNode中数据的各种属性】

      • DataNode:存储实际数据块,定期向 NameNode 发送心跳信号。【存储数据本身的模块】

      • DataNode每过几秒会向NameNode发送心跳信号【心跳信号包含:自身状态的信号(是否存活)、资源使用情况、以及一些简单的指令】,使NameNode能够及时知道DataNode的状态。若 NameNode 超过 10 分钟未收到心跳,则认为该 DataNode 宕机,并触发以下操作:将该节点标记为“不可用”,不再分配新任务并启动数据副本恢复流程,将丢失的块从其他节点复制到健康节点。

      • DataNode每过几秒会向NameNode发送块报告【快报告包括所有数据块列表 的详细报告、以及副本状态等保证元数据与真实数据的一致性

  2. MapReduce

    • 分布式计算模型,分为 Map 和 Reduce 两个阶段:

      • Map:将输入数据分解为键值对并并行处理;

      • Reduce:汇总 Map 阶段的中间结果并生成最终输出。

    • 依赖 JobTracker(主节点)和 TaskTracker(从节点)协调任务执行,但存在单点故障风险。

  3. YARN(Yet Another Resource Negotiator)

    • 资源管理与任务调度框架,负责集群资源的动态分配,支持多种计算模型(如批处理、流处理)。

    • 包含 ResourceManager(全局资源管理)和 NodeManager(节点资源管理)。

  4. Hadoop Common

    • 提供其他模块依赖的通用工具库和接口。


二、Hadoop 的优势与特点

  1. 高可靠性

    • 数据自动多副本存储,任务失败时自动重新分配,无需人工干预。

  2. 高扩展性

    • 支持从单节点扩展至数千节点,适合 PB 级数据处理。

  3. 低成本

    • 基于商用硬件构建集群,成本远低于高端服务器。

  4. 高容错性

    • 通过数据副本和任务重试机制应对节点故障。

  5. 适用场景

    • 适合批处理大规模数据(如日志分析、ETL),不适用低延迟访问、频繁修改数据或小文件存储的场景。


三、Hadoop 的工作流程

  1. 数据存储

    • 文件被分割为块,分布存储在多个 DataNode 上,NameNode 记录元数据。

  2. 任务提交

    • 用户通过客户端提交作业(包含输入路径、代码和参数),JobTracker 分配任务至 TaskTracker。

  3. 数据处理

    • Map 阶段在数据所在节点并行执行,Reduce 阶段汇总结果并写入 HDFS。


四、Hadoop 生态系统

Hadoop 生态包含丰富的工具以扩展功能:

  • Hive:基于 SQL 的数据仓库工具,用于查询和分析。

  • HBase:分布式 NoSQL 数据库,支持实时读写。

  • Spark:内存计算框架,比 MapReduce 更快,支持流处理和机器学习。

  • Flume/Sqoop:分别用于日志收集和关系型数据库与 Hadoop 间数据传输。

  • Zookeeper:提供分布式协调服务。

五、工作流

1、用户发送指令到完成任务的一般工作流(以 MapReduce 任务为例)

(1)指令提交阶段

用户通过客户端工具(如 Hadoop 命令行)提交作业请求。这个请求包含了作业的配置信息(如输入数据路径、输出数据路径、Map 和 Reduce 函数的相关信息等),并发送到 YARN(Yet Another Resource Negotiator)的 ResourceManager。

(2)资源分配阶段

ResourceManager(RM)作用:ResourceManager 收到请求后,会根据集群的整体资源状况(包括各个节点的 CPU、内存等资源的可用性)进行资源分配规划。它维护着集群资源的全局视图,例如,知道每个节点上还有多少空闲的计算资源可以用于执行新的任务。

与 NodeManager(NM)协作:ResourceManager 会和集群中的 NodeManager 进行沟通。NodeManager 运行在集群中的每个节点上,负责管理该节点的资源。ResourceManager 会指示 NodeManager 启动任务容器(Container),这些容器是执行具体任务(如 Map 任务和 Reduce 任务)的基本单位。

(3)任务执行阶段

Map 任务执行:根据任务的分配,在合适的容器中启动 Map 任务。这些 Map 任务会从 HDFS(Hadoop Distributed File System)读取输入数据。HDFS 将数据以数据块(Block)的形式存储在集群中的多个节点上,Map 任务通常会根据数据本地化原则,优先处理存储在本地节点或者临近节点的数据块,以减少数据传输开销。每个 Map 任务对其处理的数据块进行处理,将数据转换为键 - 值对形式的中间结果。

Shuffle 阶段:Map 任务完成后,进入 Shuffle 阶段。在这个阶段,中间结果会被按照键进行排序和分组,并且通过网络传输将相同键的数据发送到执行 Reduce 任务的节点。这是一个复杂的过程,涉及到数据的传输、缓存等操作,以确保 Reduce 任务能够高效地获取到其需要的数据。

Reduce 任务执行:Reduce 任务接收到来自 Shuffle 阶段的数据后,对相同键的值进行聚合等操作,生成最终的输出结果。这些输出结果会被写回到 HDFS 指定的输出路径中。

2、非 MapReduce 任务(如数据存储相关指令)

如果用户指令是将数据存储到 HDFS 中,工作流主要涉及 HDFS 部分。用户通过 HDFS 客户端提交存储请求,HDFS 的 NameNode(主节点,管理文件系统的命名空间和文件块的映射关系)会协调 DataNode(从节点,存储实际的数据块)进行数据存储操作。例如,NameNode 会决定将数据块存储在哪些 DataNode 上,考虑因素包括 DataNode 的可用存储空间、数据的副本策略(为了数据冗余和可靠性,通常会在多个节点存储数据副本)等。这个过程和 MapReduce 任务的资源分配以及任务执行流程有很大不同

 

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

相关文章:

  • verilog和system verilog常用数据类型以及常量汇总
  • Netty线上如何做性能调优?
  • 远程访问服务器的Jupyter Notebook
  • Vue3 setup、计算属性、侦听器、响应式API
  • MCP协议最新进展分析报告
  • 【Vue】TypeScript与Vue3集成
  • CSS简单实用的加载动画、骨架屏有效果图
  • 银河麒麟(内核CentOS8)安装rbenv、ruby2.6.5和rails5.2.6
  • SQL 语法
  • https nginx 负载均衡配置
  • VisionTransformer改进(3):Triplet Attention模块增强
  • 协作开发攻略:Git全面使用指南 — 引言
  • 042-Windows抓屏-DXGI
  • 第三章:Transport Mechanisms
  • 单 例 模 式
  • 【前端】CSS 基础
  • 多维时序 | LightGBM多变量时序预测(Matlab完整源码和数据,适合基础小白研究)
  • CAS(Compare And Swap)
  • Ubuntu服务器上如何监控Oracle数据库
  • 电子削铅笔刀顺序图详解:从UML设计到PlantUML实现
  • 几种查看PyTorch、cuda 和 Python 版本方法
  • 关于Qt对Html/CSS的支持
  • 全链路数据仓建设指南:从构建流程到应用场景
  • Vue+Flask豆瓣LSTM影评+推荐算法大数据可视化平台深度学习系统源码
  • 文件上传--WAF绕过干货
  • 【网络入侵检测】基于Suricata源码分析NFQ IPS模式实现
  • Python torchvision.transforms 下常用图像处理方法
  • maven工程中引入外部jar
  • 数据分析之技术干货业务价值​​ powerquery 分组排序后取TOP
  • 《AI大模型应知应会100篇》 第36篇:RAG技术入门:检索增强生成原理及实现