什么是Hadoop

embedded/2024/11/21 23:38:09/

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.ppmy.cn/embedded/139461.html

相关文章

借助OpenAI优化Selenium脚本:提高稳定性与可维护性

在自动化测试的工作中,Selenium是最常用的工具之一。尽管Selenium功能强大,但在实际应用中,随着测试脚本的增长和页面结构的变化,脚本可能会变得不稳定或难以维护。本文将展示如何使用OpenAI帮助自动化测试工程师优化现有的Seleni…

vue中iframe的使用说明

iframe嵌套页面&#xff0c;在某些时候使用起来还是挺不错的&#xff0c;比如&#xff1a;第三方登录&#xff0c;页面a中加入页面b等 <iframe ref"iframeRef" src"" frameBorder"0" loading"eager" width"100%" height…

PostgreSQL提取JSON格式的数据(包含提取list指定索引数据)

PostgreSQL提取JSON格式的数据&#xff08;包含提取list指定索引数据&#xff09; ->>, ->, #>, #>> 在PostgreSQL中&#xff0c;处理json或jsonb类型数据时&#xff0c;->>, ->, #> 和 #>> 是非常有用的操作符&#xff0c;它们允许你以…

MSTP知识点

多生成树协议 在 MSTP&#xff08;Multiple Spanning Tree Protocol&#xff09;中&#xff0c;根桥&#xff08;root&#xff09;、指定端口&#xff08;designated port&#xff09;、备用端口&#xff08;alternate port&#xff09;等角色都是确保网络中没有循环并且流量能…

探寻优质的 PostgreSQL 中级认证专家学习机构

PostgreSQL作为一种功能强大且高度可扩展的关系型数据库管理系统&#xff0c;正受到越来越多企业和开发者的青睐。如果你正在寻找一家优质的PostgreSQL中级认证专家学习机构&#xff0c;这篇文章将为你提供宝贵的指导和建议。 为什么选择PostgreSQL&#xff1f; PostgreSQL以其…

GLM4 PyTorch模型微调最佳实践

一 引言 2024年6月&#xff0c;智谱AI发布的GLM-4-9B系列开源模型&#xff0c;在语义、数学、推理、代码和知识等多方面的数据集测评中&#xff0c;GLM-4-9B和GLM-4-9B-Chat均表现出超越Llama-3-8B的卓越性能。并且&#xff0c;本代模型新增对26种语言的支持&#xff0c;涵盖日…

Vue跨域资源共享

在Vue前端开发中&#xff0c;跨域问题是一个常见的挑战&#xff0c;特别是当你需要从前端应用向不同域名或端口的后端API发送请求时。跨域请求通常会被浏览器的同源策略&#xff08;Same-Origin Policy&#xff09;阻止&#xff0c;以确保安全性。 以下是一些解决Vue前端跨域问…

5. langgraph中的react agent使用 (从零构建一个react agent)

1. 定义 Agent 状态 首先&#xff0c;我们需要定义 Agent 的状态&#xff0c;这包括 Agent 所持有的消息。 from typing import (Annotated,Sequence,TypedDict, ) from langchain_core.messages import BaseMessage from langgraph.graph.message import add_messagesclass …