HDFS 架构、组件【重要】

简介: HDFS 架构、组件【重要】

HDFS 是分布式文件系统,它默认的存储单元是 128MB 的数据块(hadoop1.x 为 64MB)。

HDFS 架构:

HDFS 的体系框架是 Master-Slave 主备结构,一个典型的 HDFS 通常由单个 NameNode 和多个 DataNode 组成,但是为备份元数据,一般还有一个 secondary namenode(HA 模式没有,standby namenode 代替 secondary namenode)。

 

1. Client:客户端

  • 会切分文件。文件上传 HDFS 的时候,Client 将文件切分成一个一个的 Block,然后进行存储。
  • 与 NameNode 交互,获取文件的位置信息。
  • 与 DataNode 交互,读取或者写入数据。
  • Client 提供一些命令来管理 HDFS,比如启动关闭 HDFS、访问 HDFS 目录及内容等

2. NameNode:名称节点,也称主节点

  • 整个 hadoop 集群中只有一个 namenode,它是整个系统的 “总管”,用来管理数据的元数据信息,不存储具体的数据。
  • 配置副本策略,Namenode 负责监控各个 DataNode 的健康状态,一旦发现某个 DataNode 宕掉,则将该 DataNode 移出 HDFS 并重新备份其上面的数据。
  • 处理客户端读写请求。

3. DataNode:数据节点,也称从节点。NameNode 下达命令,DataNode 执行实际的操作

  • datanode 是真正存储数据的地方,存储实际的数据块。
  • 执行数据块的读写操作。

4. Secondary NameNodesecondary namenode 用来辅助 namenode,但并不是 namenode 的热备,宕机时不能代替 namenode 进行工作。(测试环境用 secondary namenode,生产环境用集群高可用)

  • 辅助 NameNode,分担其工作量
  • 定期地将 namenode 的 fsimage 和 Edits 文件进行合并,并传输给 NameNode,防止日志文件过大。
  • 合并之后的 fsimage 会在 secondary namenode 中保存一份,当 namenode 节点挂掉时可辅助恢复 NameNode。

 

相关问题:

1.Secondary NameNode 工作机制

SecondaryNameNode 是 HDFS 分布式文件系统中的一个辅助组件,它的主要作用是定期合并 Fsimage 和 Edits 文件,当 NameNode 发生故障时,Secondary NameNode 可以将从 NameNode 中下载的最新的 FSimage 和 Edits 文件合并到本地,来保证 HDFS 元数据的一致性和完整性。

SecondaryNameNode 的工作机制包括以下几个方面:

1. 接收 NameNode 的 checkpoint 请求:

SecondaryNameNode 会接收来自 NameNode 的 checkpoint 请求,并向 NameNode 发送 checkpoint 请求。在这个过程中,SecondaryNameNode 会对 NameNode 的 edits 日志进行回滚,以保证元数据的一致性和完整性。

2. 定期合并 Fsimage 和 Edits 文件:

SecondaryNameNode 会定期地从 NameNode 下载最新的 Fsimage 和 Edits 文件,并将它们合并到本地。在这个过程中,SecondaryNameNode 会检查 Fsimage 和 Edits 文件的一致性和完整性,并将任何缺失的数据从 NameNode 下载到本地。

2.NN 和 2NN 有什么区别?

NameNode 是整个集群的 “大脑”,需要处理大量的元数据操作和查询请求,维护整个分布式文件系统的命名空间和元数据信息。

Secondary NameNode 是 NameNode 的一个辅助组件,并不是 NameNode 的备份结点,无法代替 NameNode 的工作。它的主要作用是定期合并 FSimage 和 Edits 文件,当 NameNode 发生故障时,Secondary NameNode 可以将从 NameNode 中下载的最新的 FSimage 和 Edits 文件合并到本地,来保证 HDFS 元数据的一致性和完整性。

因此,NameNode 和 Secondary NameNode 的主要区别在于它们的职责和作用。NameNode 负责管理文件系统的元数据和文件信息,而 SecondaryNameNode 主要用于定期合并 FsImage 和 Edits 文件,来保证 HDFS 元数据的一致性和完整性。

3.secondary namenode 什么时候拉取 namenode 的数据进行合并

NameNode 启动时会加载之前未合并的 FSImage 和 Edits 文件进行合并,之后 SecondaryNameNode 每隔一小时执行一次,这个时间间隔可以通过参数自定义设置。

相关文章
|
23天前
|
存储 设计模式 数据库
构建高效的安卓应用:探究Android Jetpack架构组件
【4月更文挑战第20天】 在移动开发的世界中,构建一个既高效又可维护的安卓应用是每个开发者追求的目标。随着Android Jetpack的推出,Google为开发者提供了一套高质量的库、工具和指南,以简化应用程序开发流程。本文将深入探讨Jetpack的核心组件之一——架构组件,并展示如何将其应用于实际项目中,以提升应用的响应性和稳定性。我们将通过分析这些组件的设计原则,以及它们如何协同工作,来揭示它们对于构建现代化安卓应用的重要性。
|
23天前
|
监控 负载均衡 算法
构建高效微服务架构的五大核心组件
【4月更文挑战第6天】随着现代业务需求的多样化和复杂性增加,传统的单体应用已无法满足快速迭代与灵活部署的需求。微服务架构应运而生,以其高度模块化、独立部署和可伸缩性成为企业转型的关键。本文聚焦于构建高效微服务架构的核心组件,从服务发现、配置管理、负载均衡、容错处理到服务监控五个方面进行深入剖析,旨在提供一套全面的技术指南以支持后端开发的最佳实践。
|
23天前
|
存储 Kubernetes 负载均衡
Kubernetes的“厨房”:架构是菜谱,组件是厨具,资源对象是食材(下)
本文深入探讨了Kubernetes(K8s)的架构、核心组件以及资源对象。Kubernetes作为一个开源的容器编排系统,通过其独特的架构设计和丰富的组件,实现了对容器化应用程序的高效管理和扩展。通过本文的介绍,读者可以深入了解Kubernetes的架构、核心组件以及资源对象,从而更好地应用和管理容器化应用程序。Kubernetes的灵活性和可扩展性使得它成为容器编排领域的领先者,为企业提供了强大的容器运行环境。
|
23天前
|
SQL 存储 缓存
MySQL - 一文了解MySQL的基础架构及各个组件的作用
MySQL - 一文了解MySQL的基础架构及各个组件的作用
|
23天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
42 0
|
23天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(一)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
47 0
|
18天前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
23天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
22 0
|
21天前
|
前端开发 Android开发
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
|
23天前
|
Kubernetes API 调度
Kubernetes学习-核心概念篇(二) 集群架构与组件
Kubernetes学习-核心概念篇(二) 集群架构与组件