hadoop架构模型

本文介绍了Hadoop的1.x和2.x版本的架构模型,包括NameNode与ResourceManager的单节点和高可用架构,详细解析了各个组件的角色和功能,如NameNode、secondaryNameNode、DataNode、ResourceManager、NodeManager等,探讨了高可用架构中防止脑裂问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.1.x的版本架构模型介绍

二.2.x的版本架构模型介绍

第一种:NameNode与ResourceManager单节点架构模型

 第二种:NameNode单节点与ResourceManager高可用架构模型

第三种:NameNode高可用与ResourceManager单节点架构模型

第四种:NameNode与ResourceManager高可用架构模型


一.1.x的版本架构模型介绍

文件系统核心模块:

HDFS分布式文件存储系统:

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据

secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据数据计算核心模块:

MapReduce分布式文件计算系统:

JobTracker:接收用户的计算请求任务,并分配任务给从节点

TaskTracker:负责执行主节点JobTracker分配的任务

二.2.x的版本架构模型介绍

第一种:NameNode与ResourceManager单节点架构模型

文件系统核心模块:

NameNode:集群当中的主节点,主要用于管理集群当中的各种元数据

secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块:

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配

NodeManager:负责执行主节点APPmaster分配的任务

 第二种:NameNode单节点与ResourceManager高可用架构模型

文件系统核心模块:

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据

secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块:

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分,通过zookeeper实现ResourceManager的高可用

NodeManager:负责执行主节点ResourceManager分配的任务

第三种:NameNode高可用与ResourceManager单节点架构模型

文件系统核心模块:

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,其中nameNode可以有两个,形成高可用状态

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

JournalNode:文件系统元数据信息管理

数据计算核心模块:

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分

NodeManager:负责执行主节点ResourceManager分配的任务

namenode高可用:

namenode active状态:处于活跃的主节点,处理用户请求,维护元数据信息

namenode stand状态:处于备份的节点,活跃的主节点死了之后,备份的节点,马上切换为活跃的主节点对外提供服务

注意:如果namenode高可用,那么一定要保证namenode的元数据信息同步一致,如果不一致,就会出现脑裂的问题

所以为了解决元数据共享的问题,引入journal node的机制,专门用于同步元数据信息

zkfc:namenode的守护进程,主要用于监听namenode什么时候死掉,死掉之后,马上通知另外一个namenode切换为主节点

journalNode:同步元数据信息,保证两个那么namenode、里面的元数据一模一样,不然会出现脑裂

第四种:NameNode与ResourceManager高可用架构模型

文件系统核心模块:

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,一般都是使用两个,实现HA高可用

JournalNode:元数据信息管理进程,一般都是奇数个

DataNode:从节点,用于数据的存储

数据计算核心模块:

ResourceManager:Yarn平台的主节点,主要用于接收各种任务,通过两个,构建成高可用

NodeManager:Yarn平台的从节点,主要用于处理ResourceManager分配的任务

### Hadoop 架构详解 #### 核心组件概述 Hadoop是一个开源的分布式计算系统,专为存储和处理大规模数据集而设计[^3]。该架构主要由三个核心组件构成: - **HDFS (Hadoop Distributed File System)**:这是一个分布式的文件系统,旨在通过提供高吞吐量访问应用程序数据的能力来满足大型数据集的需求。它遵循“一次写入多次读取”的原则,并将文件分割成多个块,默认情况下每个块大小为64MB,在不同节点上冗余保存以提高可靠性和性能[^4]。 - **MapReduce**:作为Hadoop的核心计算模型之一,MapReduce是一种编程范式,允许开发者轻松编写并行化算法来进行海量数据分析。整个过程分为两个阶段——映射(Map) 和 归约(Reduce),前者负责把输入数据划分为更小的任务单元;后者则汇总各个子任务的结果得到最终输出[^1]。 - **YARN (Yet Another Resource Negotiator)**:这是Hadoop的新一代资源管理器,取代了早期版本中的JobTracker/TaskTracker机制。YARN不仅提高了系统的灵活性和支持多类型作业调度的功能,还增强了集群利用率以及更好地隔离不同类型的工作负载之间的干扰。 #### 生态圈拓展 除了上述提到的基础模块外,围绕着Hadoop已经形成了一个庞大且活跃的技术生态系统,其中包括但不限于以下几个重要项目: - Hive:提供了类似于SQL的语言接口,方便用户查询结构化的数据。 - Spark:一种快速通用的大规模数据处理引擎,支持实时流处理、机器学习等多种应用场景。 - Flink:专注于高性能批处理与事件驱动型流处理的一站式平台。 - Storm:适用于低延迟需求场景下的持续计算框架。 - Presto / Impala:两者均为交互式查询服务,能够在不牺牲效率的前提下执行复杂的Ad-hoc查询操作[^2]。 ```python # Python伪代码展示如何连接至HDFS并获取文件列表 from hdfs import InsecureClient client = InsecureClient('http://namenode_address:port', user='your_username') files = client.list('/path/to/directory') for file in files: print(file) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值