HDFS面试重点

news/2024/5/20 3:09:24 标签: hdfs, hadoop, 大数据

文章目录

  • 1. HDFS的架构
  • 2. HDFS的读写流程
  • 3.HDFS中,文件为什么以block块的方式存储?

1. HDFS的架构

HDFS的架构可以分为以下几个主要组件:

  1. NameNode(名称节点):

    • NameNode是HDFS的关键组件之一,负责管理文件系统的命名空间(文件和目录结构)以及客户端的访问请求。
    • 它维护了整个文件系统的元数据,包括文件和目录的层次结构、文件的权限和属性等。
    • NameNode记录了文件系统中每个数据块的位置信息(存储在哪个数据节点上)。
  2. DataNode(数据节点):

    • DataNode是集群中的工作节点,负责存储实际的数据块。
    • 它们根据NameNode的指示存储、检索和删除数据块。
    • DataNode负责定期向NameNode发送心跳消息以报告其健康状况,并汇报存储在本地的数据块信息。
  3. Secondary NameNode(辅助名称节点):

    • Secondary NameNode并不是NameNode的备用,而是负责定期合并编辑日志(edits log)和镜像文件(fsimage)以保持NameNode的元数据的大小较小。
    • 它定期从NameNode获取最新的编辑日志和镜像文件,并将其合并,然后将新的fsimage文件发送回NameNode。
  4. 客户端:

    • 客户端是与HDFS交互的应用程序或用户。它们通过HDFS的Java API、命令行工具(如hadoop fs命令)、或者其他支持HDFS的接口(如Hive、Spark等)来访问和操作文件系统。

总体而言,HDFS的架构是一个主从式的架构,其中NameNode作为中心管理元数据和客户端请求,而DataNode负责存储实际的数据块。这种架构提供了高可靠性和可扩展性,使得HDFS适用于大规模数据存储和处理。

2. HDFS的读写流程

HDFS的读写流程包括以下几个步骤:

  1. 写入流程

    • 当一个客户端想要向HDFS写入数据时,它首先会与NameNode通信,请求在文件系统中创建一个新文件。
    • NameNode会检查文件是否已经存在,如果不存在则返回一个文件描述符给客户端,并且记录下新文件的元数据信息。
    • 客户端收到文件描述符后,开始将数据划分为固定大小的数据块,并且选择一个DataNode来存储每个数据块。通常,客户端会选择距离它最近的DataNode来写入数据。
    • 客户端将数据块发送给选定的DataNode,并且DataNode负责将数据块写入本地磁盘。同时,DataNode也会将数据块的副本发送给其他DataNode,以提高数据的可靠性和容错性。
    • 在所有数据块都成功写入后,客户端通知NameNode写入操作完成。NameNode更新文件的元数据,包括数据块的位置信息和副本数量。
  2. 读取流程

    • 当一个客户端想要从HDFS读取数据时,它首先会与NameNode通信,请求打开指定文件。
    • NameNode会返回文件的元数据信息,包括文件的大小、数据块的位置等。
    • 客户端根据元数据信息确定每个数据块的位置,并且与最近的DataNode建立连接。
    • 客户端向DataNode发送读取请求,并且DataNode负责从本地磁盘读取数据块,并将数据块传输给客户端。
    • 如果某个DataNode发生了故障或者数据传输失败,客户端可以尝试从其他副本所在的DataNode读取数据,从而实现容错和高可用性。

3.HDFS中,文件为什么以block块的方式存储?

  1. 将文件分成固定大小的数据块可以使得数据在集群中分布均匀,并且能够实现并行处理。每个数据块都可以在集群中的不同节点上进行存储和处理,从而实现数据的高效读写和处理。

  2. 通过将文件分成多个数据块并在集群中复制多个副本,可以提高数据的容错性。如果某个节点发生故障或者数据损坏,系统可以从其他副本所在的节点上获取数据,从而保证数据的可靠性和可用性。

  3. 可以减少存储空间的碎片化,提高存储利用率。


http://www.niftyadmin.cn/n/5425551.html

相关文章

小白如何快速入门计算机视觉?

去年 11 月的时候,给自己了一个目标,希望在未来的 3个月时间里,写满100篇关于从零入门AI视觉的算法、代码文字。 历经 3 个月,终于在今天 100 篇文章写完了,代码也全部调试完成,上传到 github 上开源给大家…

电脑文件如何备份?本文教你4种数据备份方法

在这个数字化时代,电脑中存储了大量重要文件,如照片、文档、视频以及重要资料等。然而,可能因为病毒攻击、硬件故障或其他突发情况,导致数据丢失。因此,备份电脑文件尤为重要。那么,电脑文件如何备份&#…

❤️算法笔记❤️-(每日一刷-141、环形链表)

文章目录 题目思路解法 题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接…

Python常用图片数据方法

文章目录 1. 常用图片数据类型2. 图片的显示2.1 plt.imshow()2.2 使用 turtle 来绘制图片 3.图片ndarray数据的常用切片操作使用 cv2 来读取图片打印数据R G B 通道的获取BGR 转成 RGBcv2 不支持中文路径的解决方法 4 PIL.Image 转成 QImage 或 QPixmap 1. 常用图片数据类型 使…

进程间通信——IPC(Linux)

进程间通信 前言一、管道1. 管道原理2. 匿名管道①理解匿名管道②创建匿名管道——pipe③模拟实现进程池——管道 3. 命名管道①理解命名管道②使用命名管道——mkfifo拓展 —— 日志俩无关进程通信 3. 小结①管道总结②拓展命令和接口 二、System V1. 共享内存①原理②使用共享…

inletexemc局域网的屏幕分享软件

inletexemc局域网的屏幕分享软件 分享一个内网的屏幕分享软件inletexemc 参考文章:https://zhuanlan.zhihu.com/p/25912687 原本采用的一个叫veyon的电子教室管理软件,虽然可以实现这个效果,但是比较笨重,操作也比较繁琐&#xf…

职场中的创新思维与执行力

在职场中,创新思维和执行力是两个关键要素。创新思维能够帮助员工在工作中找到更好的解决方案,而执行力则是将想法付诸实践的能力。本文将探讨如何在职场中培养创新思维和提升执行力。 一、创新思维的重要性 在职场中,创新思维是推动企业发展…

Linux之防火墙详解

华子目录 什么时防火墙分类Netfilter(数据包过滤)定义Netfilter分析内容 防火墙无法完成的任务iptables与firewalld区别iptablesiptables执行原则原则防火墙规则规则链概念分析规则链分类注意例:物业管理公司有两条规定: 规则链之…