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

什么是Hadoop

Hadoop 介绍

Hadoop 是由 Apache 开发的开源框架,用于处理分布式环境中的海量数据。Hadoop 使用 Java 编写,通过简单的编程模型允许在集群中进行大规模数据集的存储和计算。它具备高可靠性、容错性和扩展性。

  • 分布式存储:Hadoop 支持跨集群的分布式存储。
  • 分布式计算:Hadoop 使用简单的 MapReduce 编程模型进行计算。
  • 扩展性:Hadoop 可以从单一节点扩展到数千台机器,并且扩展过程中无需停机。

Hadoop 的关键组件

Hadoop 的架构由三个核心部分组成:

HDFS(Hadoop Distributed File System):分布式文件系统,是数据存储层。
MapReduce:分布式计算框架,用于并行处理数据。
YARN(Yet Another Resource Negotiator):资源管理和任务调度系统。

Hadoop 的架构

Hadoop 的架构基于主从模型,分为:

  • Master 节点:负责管理、维护和监控集群,存储元数据。
  • Slave 节点:负责存储数据并执行计算任务,可以扩展到数千个节点。
  • 任务分发:客户端通过 Master 节点分发任务,Master 将任务调度到 Slave 节点上执行。

Hadoop 组件

在这里插入图片描述

  1. HDFS(分布式文件系统)
    HDFS 是 Hadoop 的数据存储层,负责将海量数据以分布式的方式存储在多个节点上。

    架构:
    NameNode(主节点):存储元数据并管理 DataNode。
    DataNode(从节点):存储实际的数据块并执行操作。
    特点:
    数据文件会分割成多个块(默认块大小为 128MB)。
    数据块按照复制因子(默认 3 个副本)分布在不同节点,以保证容错性和可靠性。
    示例:
    假设有一个 640MB 的文件,将会被分成 5 个 128MB 的数据块,并存储在多个节点上。

  2. MapReduce
    MapReduce 是 Hadoop 的分布式计算框架,用于处理海量数据。它将计算任务分割成多个小任务并分发到不同的节点进行并行处理。
    工作流程:
    (1)将输入数据分割成块并分发到各个节点。
    (2)Map 阶段:将任务划分为键值对形式的中间结果。
    (3)Shuffle 阶段:对 Map 的输出进行排序和分区。
    (4)Reduce 阶段:对分区后的数据进行汇总和计算。
    特点:
    将计算任务移动到离数据最近的节点执行,减少数据传输开销。
    支持大规模数据的并行处理。

  3. YARN(资源管理)
    YARN 是 Hadoop 的资源管理系统,用于管理集群的计算资源(CPU、内存、磁盘等)并调度任务。
    架构:
    ResourceManager(主节点):负责全局资源的管理和分配。
    NodeManager(从节点):负责节点资源的本地管理,运行容器(Container)。
    ApplicationMaster:为每个任务分配资源并跟踪任务执行状态。
    特点:
    提供高效的资源管理。
    支持多种框架运行在同一集群上。

Hadoop 守护进程

Hadoop 的关键守护进程分为以下几类:

(1)HDFS:
NameNode:运行在 Master 节点上,存储元数据。
DataNode:运行在 Slave 节点上,存储数据块。
(2)YARN:
ResourceManager:运行在 Master 节点上,管理全局资源。
NodeManager:运行在 Slave 节点上,管理本地资源。
(3)其他进程:
Secondary NameNode:辅助 NameNode 进行元数据的备份。
JobHistoryServer:负责存储任务的历史记录。
在这里插入图片描述

Hadoop 的工作原理

数据存储:
输入数据被切分成若干个块(默认 128MB),并存储到不同的节点(DataNode)上。
任务分配:
用户通过 Master 节点提交任务。
Master 将任务分发到离数据最近的节点上执行。
数据处理:
每个节点独立处理数据,并将中间结果写回 HDFS。
结果输出:
所有节点处理完成后,输出最终结果。

Hadoop 生态系统中的组件

除了核心组件(HDFS、YARN 和 MapReduce),Hadoop 生态系统还包含许多其他工具,扩展了 Hadoop 的功能:

组件功能描述
HBase基于 HDFS 的列式存储数据库,适合存储海量稀疏数据集。
Hive数据仓库工具,支持使用类似 SQL 的语言查询大数据。
Pig高级脚本语言,用于编写复杂的数据处理流程,无需开发 Java 代码。
Flume用于高效实时收集和传输日志数据。
Sqoop用于在 Hadoop 和关系型数据库之间传输数据。
Oozie用于调度和管理 Hadoop 作业的执行时间和频率。
Zookeeper提供分布式配置管理、命名空间和同步服务。
Mahout可扩展的机器学习算法库。

http://www.kler.cn/a/405246.html

相关文章:

  • 【赵渝强老师】MySQL的慢查询日志
  • 解决Docker环境变量的配置的通用方法
  • web钩子什么意思
  • 40分钟学 Go 语言高并发:并发下载器开发实战教程
  • 如何快速将Excel数据导入到SQL Server数据库
  • SpringBootTest启动时出现循环依赖问题
  • java的hashmap的底层设计原理以及扩容规则
  • MagicQuill,AI动态图像元素修改,AI绘图,需要40G的本地硬盘空间,12G显存可玩,Win11本地部署
  • vue3 + Element Plus + ts 封装全局的 message、messageBox、notification 方法
  • 力扣-Hot100-矩阵【算法学习day.36】
  • 浅谈Spring Boot之缓存处理
  • 初识C++:指针与引用的异同,inline关键字
  • Spring Boot整合Tomcat底层源码分析
  • Jtti:如何知晓服务器的压力上限?具体的步骤和方法
  • Three.js 闪电效果
  • 【2024最新】基于springboot+vue的疫情网课管理系统lw+ppt
  • js批量输入地址获取经纬度
  • 04 —— Webpack打包CSS代码
  • Vue项目开发 formatData 函数有哪些常用的场景?
  • 当你项目服务器磁盘报警
  • 如何利用Python爬虫精准获得1688店铺详情
  • Android 文件分段上传和下载方案
  • 兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
  • Java Servlet详解:Servlet的生命周期、请求处理与响应发送
  • css使用弹性盒,让每个子元素平均等分父元素的4/1大小
  • AI大模型系列之一:大模型原理科普(深度好文)