大数据面试题整理——HDFS

大数据面试题整理

第一章 HDFS面试题
第二章 MapReduce面试题


文章目录

  • 大数据面试题整理
  • 一、请简要介绍一下 HDFS。
  • 二、HDFS 的主要特点有哪些?
  • 三、说说 HDFS 的架构,以及 NameNode 和 DataNode 的作用。
  • 四、什么是心跳机制?
  • 五、解释一下 HDFS 的副本放置策略。
  • 六、描述一下 HDFS 的读写数据流程。
  • 七、HDFS 有哪些优点和缺点?
  • 八、有哪些方法可以优化 HDFS 的性能?
  • 九、如何处理 HDFS 中的小文件问题?
  • 十、比较一下 HDFS 与传统文件系统的区别。
  • 十一、对比 HDFS 与分布式对象存储系统。
  • 十二、 说一下HDFS的客户端命令
  • 十三、HDFS安全模式
    • 1、什么是 HDFS 的安全模式
    • 2、什么情况下 HDFS 会进入安全模式
  • 十四、说一下 HDFS的checkpoint流程(SecondaryNameNode的职责)


一、请简要介绍一下 HDFS。

您好,HDFS 即 Hadoop 分布式文件系统,它在大数据处理中起着至关重要的作用。HDFS 采用主从架构,主要由一个 NameNode 和多个 DataNode 组成。NameNode 负责管理整个文件系统的元数据,包括文件的目录结构、文件名以及文件块的位置信息等。而 DataNode 则实际存储数据块。HDFS 具有高容错性,通过数据冗余存储多个副本来确保数据的可靠性,非常适合处理大规模的数据,并且采用流式数据访问模式,即一次写入多次读取,这种模式特别适合批处理作业。同时,它可以在廉价的硬件上运行,降低了成本。

二、HDFS 的主要特点有哪些?

首先,高容错性是 HDFS 的一大特点。文件被分割成数据块存储在不同的 DataNode 上,每个数据块都有多个副本,这样即使某个 DataNode 出现故障,数据仍然可以从其他副本中恢复。其次,它能处理大规模数据,无论是 PB 级还是更大规模的数据都能轻松应对。再者,流式数据访问模式使得它在大数据批处理场景中表现出色。最后,HDFS 可以运行在普通的商用服务器上,无需昂贵的高端硬件设备,大大降低了成本。

三、说说 HDFS 的架构,以及 NameNode 和 DataNode 的作用。

HDFS 的架构是主从式的。NameNode 就像是文件系统的大脑,它管理着文件系统的命名空间,掌控着所有文件和目录的信息,处理客户端对文件系统元数据的操作请求,比如创建、删除、重命名文件或目录等。同时,它还负责监控 DataNode 的状态,通过接收 DataNode 的心跳和块报告来确保整个系统的正常运行。而 DataNode 则是具体干活的,它们存储实际的数据块,执行来自 NameNode 的读写操作指令,并且定期向 NameNode 发送心跳和快报告,以告知 NameNode 自己的状态以及所存储的数据块信息。

四、什么是心跳机制?

在 HDFS 中,心跳机制是 DataNode 向 NameNode 表明自己存活状态的重要方式。DataNode 会定期向 NameNode 发送心跳信号,这个间隔通常是可以配置的。如果 NameNode 在一段时间内没有收到某个 DataNode 的心跳,就会认为该 DataNode 可能出现了故障,然后采取相应的措施,比如将这个 DataNode 上的数据块复制到其他正常的 DataNode 上,以保证数据的冗余性和系统的可靠性。

五、解释一下 HDFS 的副本放置策略。

数据存储:
在 HDFS 中,文件会被分割成固定大小的数据块,默认是 128MB。这些数据块被存储在不同的 DataNode 上。每个数据块会有多个副本,默认是 3 个副本。这样的存储方式既方便了数据的分布式存储和管理,又提高了数据的可靠性和可用性。
副本放置策略:
副本放置策略是经过精心设计的。第一个副本通常放置在与客户端相同的节点上,如果客户端不在集群中,就随机选择一个节点。这样可以减少网络开销,提高写入性能。第二个副本放置在与第一个副本不同的机架上的某个节点上,目的是防止单个机架出现故障导致数据丢失。第三个副本则放置在与第二个副本相同机架的不同节点上。更多的副本也会遵循类似的策略,尽量保证副本分布在不同的机架和节点上,以实现更高的可靠性和可用性。

六、描述一下 HDFS 的读写数据流程。

读数据:
客户端要读取文件时,向 NameNode 发送读取文件请求。NameNode 返回文件的元数据,包括数据块的位置信息。客户端根据这些位置信息,选择最近的 DataNode 读取数据块。DataNode 会将数据块发送给客户端。客户端读取完一个数据块后,会继续请求下一个数据块,直到整个文件读取完成。
写数据:
当客户端要向 HDFS 写入数据时,首先会向 NameNode 发送创建文件请求。NameNode 会检查文件是否已存在、客户端是否有写入权限等。如果通过检查,NameNode 会为文件分配数据块,并返回可用的 DataNode 列表。客户端将数据分成数据包,并按照 NameNode 提供的 DataNode 列表顺序依次写入数据块。每个 DataNode 接收数据包后,会将数据写入本地存储,并同时将数据传递给下一个 DataNode,形成流水线式的数据传输。当所有数据块都写入成功后,客户端通知 NameNode 写操作完成。

七、HDFS 有哪些优点和缺点?

优点:
首先说优点,HDFS 的高可靠性是非常突出的,通过数据冗余存储保证了数据在各种情况下的安全性。它的高扩展性也很显著,可以轻松地通过增加节点来扩展存储容量和处理能力。在大数据处理方面,HDFS 是非常适合的,能够高效地处理大规模的数据,为大数据分析和处理提供了坚实的基础。
缺点:
当然,HDFS 缺点也很明显。它不适合低延迟数据访问,因为其架构设计更侧重于批处理作业,对于实时性要求高、低延迟的应用不太适用。另外,HDFS 不适合存储大量小文件,因为 NameNode 内存中存储文件系统的元数据,大量小文件会导致 NameNode 内存消耗过大。还有,HDFS 的写入性能相对较低,一次写入多次读取的设计使得写入操作相对复杂。

八、有哪些方法可以优化 HDFS 的性能?

对于优化 HDFS 的性能,可以从多个方面入手。调整数据块大小是一种方法,根据数据特点和应用需求,较大的数据块适合大文件和顺序读写,较小的数据块适合小文件和随机读写。增加副本数量在对数据可靠性要求极高的场景下是可行的,但会增加存储空间开销。优化 NameNode 内存可以通过合理配置 NameNode 的内存参数,或者采用 NameNode Federation 等技术来分担元数据管理压力。数据压缩也是一个好办法,对数据进行压缩可以减少存储空间和网络传输开销,提高性能。

九、如何处理 HDFS 中的小文件问题?

处理 HDFS 中的小文件问题,可以采用多种方式。合并小文件是一种常见的方法,使用一些工具或程序将多个小文件合并成一个大文件。也可以使用 SequenceFile 等容器格式,将小文件打包存储在其中。对于大量小文件且需要随机访问的场景,采用 HBase 等列式存储系统可能是更好的选择,它可以高效地管理小文件并提供快速的随机访问。

十、比较一下 HDFS 与传统文件系统的区别。

在存储规模上,HDFS 能处理 PB 级甚至更大数据,传统文件系统通常适用于较小规模数据存储;容错性方面,HDFS 通过数据冗余实现高容错,传统文件系统容错性较低;数据访问模式上,HDFS 适合一次写入多次读取的流式访问,传统文件系统支持更灵活读写操作;硬件要求上,HDFS 可运行在廉价硬件上,传统文件系统可能对硬件性能要求较高。

十一、对比 HDFS 与分布式对象存储系统。

数据模型上,HDFS 基于文件和目录结构,分布式对象存储系统以对象为基本存储单元;接口方面,HDFS 提供文件系统接口,分布式对象存储系统通常提供 HTTP API 等接口;应用场景上,HDFS 更适合大数据处理和批处理作业,分布式对象存储系统适用于云存储、内容分发等场景。

十二、 说一下HDFS的客户端命令

hdfs dfs -put
hdfs dfs -get
hdfs dfs -getmerge
hdfs dfsadmin safemode leave

十三、HDFS安全模式

1、什么是 HDFS 的安全模式

Hdfs 的安全模式,即 HDFS safe mode, 是 HDFS 文件系统的一种特殊状态,在该状态下,hdfs 文件系统只接受读数据请求,而不接受删除、修改等变更请求,当然也不能对底层的 block 进行副本复制等操作。
从本质上讲,安全模式 是 HDFS 的一种特殊状态,而 HDFS 进入该特殊状态的目的,是为了确保整个文件系统的数据一致性/不丢失数据,从而限制用户只能读取数据而不能改动数据的。

2、什么情况下 HDFS 会进入安全模式

HDFS 进入安全模式的情况分为两种,即主动进入与被动进入。
被动进入:管理员出于运维管理等各种原因,可以主动执行命令让 hdfs 进入安全模式,相关的命令有:hdfs dfsadmin -safemode enter/get/leave;
主动进入:HDFS 也可能会主动进入安全模式,这种情况更为常见,是 HDFS 在特殊状况下,为了保证整个文件系统的数据一致性/整个文件系统不丢失数据,而主动进入的一种自我保护状态,底层根本原因又分为两种:
HDFS 底层启动成功并能够跟 namenode 保持定期心跳的 datanode 的个数没有达到指定的阈值, 阈值通过参数 dfs.namenode.safemode.min.datanodes 指定;
HDFS 底层达到了最小副本数要求的 block 的百分比没有达到指定的阈值:最小副本数通过参数 dfs.namenode.replication.min/dfs.namenode.safemode.replication.min 指定,阈值通过参数 dfs.namenode.safemode.threshold-pct 指定;
当然如果 HDFS 底层启动成功并能够跟 namenode 保持定期心跳的 datanode 的个数没有达到指定的阈值,此时HDFS 底层达到最小副本数要求的 block 的百分比一般也都不会达到指定的阈值;
不难理解,正常情况下,HDFS 启动过程中会有一段时间主动进入安全模式并在一段时间后主动退出安全模式,这是由 hdfs 的分布式架构决定的,因为 namenode 启动成功后,需要等待 datanode 启动成功并通过心跳汇报 datanode 上存储的 block 的信息(block report),只有在掌握了足够的 block 的信息(达到最小副本数要求的 block 占所有 block 的百分比达到指定的阈值),并等待特定时间后(通过参数 dfs.namenode.safemode.extension 30000控制),才会主动退出安全模式。
常见的HDFS进入安全模式的直接原因有:
部分 datanode 启动失败或者因为网络原因与 namenode 心跳失败;
部分 datanode 节点存储 hdfs 数据的磁盘卷有损坏,导致存储在该磁盘卷中的数据无法读取;
部分 datanode 节点存储 hdfs 数据的磁盘分区空间满,导致存储在该磁盘卷中的数据无法正常读取;

十四、说一下 HDFS的checkpoint流程(SecondaryNameNode的职责)

  1. SecondaryNameNode向NameNode发起合并请求
  2. NameNode将当前的Editslog文件保存改名edits,并新建EditsLog继续持久化工作。
  3. 将改名后的edits文件和本地的FSImage(旧)发送给sencondaryNameNode
  4. SecondaryNameNode负责将FSImage(旧)+edits文件合并成FSImage(新)
  5. 将新的FSImage(新)发送给NameNode保存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解SSH和bash

1. SSH(Secure Shell) SSH 是你在远程登录到Linux服务器时使用的工具。假设你有一台远程服务器,你想从自己的电脑登录到这台服务器进行操作,SSH 就是你使用的工具。 示例: 你在自己的电脑上打开终端,输入…

使用Python爬虫API,轻松获取电商商品SKU信息

在电子商务的复杂世界中,SKU(Stock Keeping Unit,库存单位)信息是连接供应商、库存、销售和客户服务的桥梁。它不仅包含了商品的规格、价格、库存等关键数据,还直接影响到库存管理、价格策略和市场分析等多个方面。在这…

爬虫逆向-js进阶

1.作用域和闭包 //作用域 // var a 3 // // function test(a){ // var a 1; // console.log(函数内部,a) // } // test(2) // // console.log(a)//闭包 // function jiami(){ // function encrypt(){ // console.log(在这里进行加密了) // } // p…

五个必备的高清无水印视频素材库推荐

做抖音、短视频创作的朋友都知道,优质的素材往往决定了作品能否获得更多关注。如果你还不知道在哪里下载高清无水印的视频素材,不用担心!今天为你推荐5个高品质的视频素材库,助你轻松创作出爆款视频。 蛙学网 是国内领先的视频素材…

Mysql常用sql语句与刷题知识点

目录 1. 常用sql2. 刷题知识点 1. 常用sql #查询MySQL中所有的数据库 SHOW DATABASES; #查询当前正在使用的数据库 SELECT DATABASE();#普通创建(创建已经存在的数据库会报错) CREATE DATABASE 数据库名称; #创建并判断(该数据库不存在才创建…

2.html编辑器介绍

html编辑器介绍 HTML 编辑器推荐 理论上我们可以使用记事本进行html编码和开发,但是在实际开发html页面的时候,使用一些专业的开发工具可以使我们更加快速和高效的进行开发,下面介绍几种开发工具: VS Code:https://…

006_django基于Python的二手房源信息爬取与分析2024_l77153d4

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

【ios】SwiftUI 混用 UIKit 的 Bug 解决:UITableView 无法滚动到底部

问题描述 在 SwiftUI 中嵌套使用 UIKit 的 UITableView 时,你可能会遇到一个常见的 Bug:UITableView 的高度没有正确设置,导致内容无法正常滚动,尤其是滚动到页面底部时。 核心问题在于 SwiftUI 和 UIKit 的布局机制不同。Swift…

DNS:互联网域名系统的核心

什么是 DNS? DNS(Domain Name System,域名系统)是互联网的一项基础服务,它负责将人类容易记忆的域名(如 www.example.com)转换成计算机可以识别的 IP 地址(如 192.0.2.1&#xff09…

针对脚本爬虫攻击的防御策略与实现

随着互联网的发展,网站和应用程序面临着越来越多的自动化攻击,其中包括使用脚本进行的大规模数据抓取,即所谓的“爬虫攻击”。这类攻击不仅影响网站性能,还可能导致敏感数据泄露。本文将探讨如何识别爬虫攻击,并提供一…

【uniapp】实现触底加载数据

前言:实现界面触底数据加载。后端接口得支持翻页传参(本案例使用django) 1、后端接口 1.1 封装翻页公共方法standardPagination.py # -*- coding: utf-8 -*- # Time : 2024/10/15 13:15 # Author : super # File : standardPaginat…

全托自闭症教育,关注孩子每个细节

原文文章:http://www.zibizhengwang.com/page37.html 自闭症,这一复杂的神经发育障碍,影响着无数孩子的成长与未来。然而,在广州,有一座特别的灯塔——星贝育园自闭症儿童寄宿制学校,它不仅照亮了自闭症儿…

SpringBoot使用esayExcel根据模板导出excel

1、依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.3</version></dependency> 2、模板 3、实体类 package com.skybird.iot.addons.productionManagement.qualityTesting…

配置MAC地址安全

概述 MAC地址安全配置是确保网络设备和通信安全的重要措施&#xff0c;通过限制、监控和管理设备的物理地址来防止未授权访问和潜在的网络威胁。以下是对MAC地址安全的概述&#xff1a; 基本概念 定义&#xff1a;MAC地址&#xff08;Media Access Control Address&#xff09…

Jenkins整合Docker实现CICD自动化部署(若依项目)

前期准备 提前准备好jenkins环境 并且jenkins能使用docker命令&#xff0c;并且已经配置好了jdk、node、maven环境&#xff0c;我之前写了安装jenkins的博客&#xff0c;里面讲得比较详细&#xff0c;推荐用我这种方式安装 docker安装jenkins&#xff0c;并配置jdk、node和m…

CEP 复杂事件处理引擎进阶:股票中高频 CTA 策略实现与并行回测

在 CEP 复杂事件处理引擎入门&#xff1a;初级高频量价因子策略的实现 中&#xff0c;我们详细介绍了 CEP 引擎和它的一些关键概念&#xff0c;如复杂事件和事件监听器等。随后又通过两个初级的 CEP 引擎使用案例介绍了创建并运行一个最简单结构的 CEP 引擎所需的步骤和模块&am…

骨传导耳机哪个牌子最好?五大高口碑骨传导耳机揭秘!

骨传导耳机作为一种创新的音频设备&#xff0c;通过振动头骨直接将声音传递到内耳&#xff0c;不仅为用户提供了全新的听音体验&#xff0c;还能在保持环境音的情况下享受音乐&#xff0c;特别适合户外运动和日常通勤。然而&#xff0c;在众多品牌和型号中选择最适合自己的骨传…

人工智能正在扼杀云计算的可持续性

可持续性曾是公共云计算中备受推崇的优势。企业和云提供商大肆宣扬他们的绿色计划&#xff0c;推广采用可再生能源的数据中心&#xff0c;以减少碳足迹。 近几个月来&#xff0c;这个话题已悄然淡出人们的视线。罪魁祸首是什么&#xff1f;对人工智能功能的无限需求正在推动云…

为何云渲染成为3D设计的首选?效率解析

在3D设计领域&#xff0c;建模和渲染是两个不可或缺的步骤。3D建模软件如3ds Max让设计师能够创造出精美的三维模型&#xff0c;而渲染则是将这些模型转化为逼真图像或动画的过程。 渲染的重要性在于&#xff0c;它能够直观地展示设计的最终效果&#xff0c;使得设计师能够及时…

MongoDB未授权访问

mongodb未授权访问漏洞 复现 MongoDB[//]: # (忙够DB)是一种流行的开源文档数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;基于分布式文件存储的数据库属于NoSQL数据库的一种。 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的 登录的用户可以通过默认端口…