HDFS 高频面试题及详细真实答案(实战版)_第1页
HDFS 高频面试题及详细真实答案(实战版)_第2页
HDFS 高频面试题及详细真实答案(实战版)_第3页
HDFS 高频面试题及详细真实答案(实战版)_第4页
HDFS 高频面试题及详细真实答案(实战版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HDFS高频面试题及详细真实答案(实战版)一、基础概念类(入门必问)1、简单说下什么是HDFS?核心作用是什么?参考答案:HDFS是Hadoop的分布式文件系统,专门用来解决大数据场景下的海量数据存储问题。最大的特点是可以跑在普通廉价的服务器集群上,不用高端存储设备,就能支撑PB、EB级别的数据。它的核心设计思路就两点:1)大文件、高吞吐:适合存超大文件,不适合存大量小文件;侧重批量读取数据,不适合低延迟随机读写。2)高可靠、容错性强:通过多副本机制保证数据不丢,节点挂了数据也不会损坏。日常工作中,所有离线数仓、日志存储、原始数据归档,基本都是基于HDFS实现的。2、HDFS的三大组件是什么?各自作用?参考答案:HDFS整体是主从架构,核心三个组件:NameNode、DataNode、SecondaryNameNode。1)NameNode(主节点)管理整个文件系统的元数据,比如文件名、目录结构、文件权限、文件块对应的存储节点位置。它不存真实业务数据,只存索引和管理信息。客户端读写数据,第一步都是先找NameNode拿位置信息。2)DataNode(从节点)集群真正干活的节点,负责存储真实的文件数据块,响应客户端的读写请求,定时向NameNode上报心跳和块状态。集群大部分机器都是DataNode。3)SecondaryNameNode(辅助节点)不是NameNode的备用节点,不能实时接管主节点。核心作用是定期合并NameNode的FsImage和Edits日志,帮NameNode减负,防止日志文件无限膨胀,同时做元数据的备份。3、HDFS默认块大小是多少?为什么这么设计?为什么不设置太小?参考答案:Hadoop2.x默认块大小128M,Hadoop3.x默认256M。之所以设置这么大,核心是为了减少寻址开销、提升吞吐。1)大数据场景都是大文件,如果块太小:文件切块数量会暴增,NameNode需要维护的元数据就会爆炸式增长,占用大量内存,拖垮整个集群。2)块越大,单次读写的数据量越大,磁盘寻址时间占比就越低,整体IO吞吐效率更高。补充:块只是逻辑切割,不会把物理文件拆分损坏,只是为了分布式存储和并行计算。4、HDFS多副本机制默认是几个?副本存储策略是什么?参考答案:默认副本数3个,可以手动修改。副本存储是机架感知策略,不是随机乱放,目的是最大程度保证容错:1)第一个副本:存客户端当前所在的节点(如果客户端不在集群内,随机选一个节点);2)第二个副本:存同一机架、不同节点,防止单节点故障;3)第三个副本:存不同机架的节点,防止整机架断电、网络故障。这样设计的好处:既能保证数据安全,又能兼顾读写性能,同机架传输速度更快,跨机架做容灾。二、读写流程核心面试题(高频必考)5、详细说下HDFS文件写入流程?参考答案:(工作中实操流程,简洁好记)1)客户端发起文件写入请求,先访问NameNode,校验权限、文件是否存在,校验通过后创建空文件目录记录。2)NameNode根据机架策略,返回一批可用的DataNode节点列表(按优先级排序)。3)客户端根据节点列表,建立流水线Pipeline,依次连接第一个、第二个、第三个DataNode。4)客户端把文件切分成数据包,以包为单位发给第一个DataNode,第一个接收后同步给第二个,第二个再同步给第三个,完成副本同步。5)每写完一个数据包,反向返回ack确认,客户端收到确认后再写下一个包。6)所有数据写完后,关闭流水线,客户端通知NameNode文件写入完成,更新元数据。关键点:HDFS写入是流水线同步、逐包确认,保证副本一致性。6、HDFS文件读取流程?参考答案:1)客户端向NameNode发起读文件请求,请求获取文件的元数据和数据块对应的节点位置。2)NameNode返回该文件所有块的存储节点列表,优先返回同机架、就近节点,减少跨机架流量。3)客户端直接连接对应DataNode,读取数据块,读完一个块再读取下一个。4)读取过程中会做校验,如果发现某个节点数据损坏、读取失败,客户端会自动切换到该块的副本节点读取。5)全部读取完成后,关闭连接。7、HDFS为什么不支持随机写、不适合频繁修改文件?参考答案:HDFS的设计初衷是一次写入、多次读取,适合离线批量数据。1)HDFS文件只能追加写入,不能随机修改中间数据。如果修改文件中间内容,相当于重新生成整个文件,成本极高。2)一旦文件写入完成、关闭后,默认不允许修改,只能删除重写或者追加。3)如果支持随机修改,多副本的数据同步、一致性维护成本会非常高,集群性能会大幅下降,违背大数据高吞吐的设计目标。所以日常开发中,HDFS数据都是批量生成、批量覆盖,不会单条更新。三、容错机制与故障恢复(中高级必问)8、DataNode宕机后,HDFS怎么恢复数据?参考答案:1)NameNode通过心跳机制检测节点状态,默认每3秒DataNode上报心跳。2)如果连续10分钟左右没收到心跳,NameNode判定该DataNode宕机,直接将该节点标记为死亡。3)此时该节点上的所有数据块副本数不足,集群会自动触发副本补全机制。4)NameNode调度其他正常节点,从现有副本节点同步数据,把副本数重新补回3个,保证数据安全。整个过程全自动,不需要人工干预,这也是HDFS高可用的核心。9、NameNode宕机了怎么办?HA机制原理是什么?参考答案:单机版NameNode存在单点故障,生产环境全部开启HA高可用。HA架构有两个NameNode:Active(活跃)、Standby(备用)。1)ActiveNameNode负责处理所有客户端请求,实时记录Edits操作日志。2)StandbyNameNode实时同步Active的Edits日志,保持元数据和主节点完全一致。3)通过Zookeeper做故障自动转移,ZK会监控主节点状态。4)如果Active节点宕机,ZK立刻感知,自动将Standby切换为Active,接管所有业务,全程秒级切换,业务基本无感知。同时搭配JournalNode集群同步日志,保证双节点数据一致。10、FsImage和Edits日志的区别和作用?参考答案:这两个是NameNode维护元数据的核心文件。1)FsImage是NameNode的元数据镜像文件,保存某一时间点整个集群的完整目录、文件、块映射信息。相当于快照,但是它不会实时更新,只有合并的时候才会刷新。2)Edits是实时操作日志,客户端所有增删改文件的操作,都会实时记录在Edits中。NameNode运行期间,所有新操作都写日志,不刷新FsImage。合并机制:SecondaryNameNode定期拉取Edits日志,和旧的FsImage合并,生成新的FsImage,再推回给NameNode。避免Edits日志无限增大,导致NameNode重启极慢。四、小文件问题与集群优化(面试加分项)11、HDFS为什么怕小文件?小文件过多的危害?参考答案:HDFS最大的痛点就是大量小文件,危害非常明显:1)占满NameNode内存:每一个文件、每一个块都要存元数据,小文件多,元数据量爆炸,NameNode内存直接打满,集群卡死。2)寻址时间大于读取时间:小文件读写时,磁盘寻址开销远大于数据读取时间,吞吐率极低。3)影响计算引擎性能:Spark、MR任务会启动大量小任务,任务调度开销超过计算开销。4)磁盘碎片化严重,集群维护成本变高。12、工作中怎么解决HDFS小文件问题?参考答案:(实战常用四种方案)1)源头治理:日志采集、同步环节就做合并,不要生成大量零散小文件。2)定时合并小文件:通过Hive、Spark定时任务,把目录下的小文件合并成大文件,重写覆盖原目录。3)开启HDFS归档(HAR):将多个小文件打包成一个归档文件,减少元数据数量。4)调整业务策略:批量写入、按天/按小时分区聚合,避免频繁少量写入。13、HDFS数据倾斜和文件倾斜怎么简单处理?参考答案:HDFS层面的倾斜主要是部分目录/文件超大、数据集中,导致计算任务个别节点压力过大。处理方式:1)合理分区,按时间、维度打散数据,避免数据集中在单个文件;2)对超大文件进行拆分,避免单文件过大导致任务分区不均;3)动态调整副本、调整任务并行度,均衡节点IO压力。五、运维与经典踩坑题14、HDFS集群安全模式是什么?什么时候进入?参考答案:安全模式是HDFS的保护机制,集群启动、重启、故障恢复时会自动进入。此时集群只读不写,不能上传、删除、修改文件,只能读取数据。触发场景:1)集群刚启动,DataNode还在上报块信息,元数据未完全校验完成;2)集群故障、节点掉线,副本缺失过多;3)手动触发安全模式维护集群。满足副本达标、节点上线完成后,集群会自动退出安全模式,也可以手动强制退出。15、HDFS损坏块、丢失块怎么排查和修复?参考答案:1)用hdfsfsck路径检查文件系统,查看损坏块、缺失副本、异常文件;2)轻微异常:集群自动补全副本,等待自愈完成;3)块彻底损坏、无副本:直接删除损坏文件,重新同步数据;4)磁盘坏道、节点硬件故障:下线故障节点,更换磁盘,重新上线恢复数据。16、说说HDFS冷热数据分离怎么做?参考答案:生产常用策略:集群节点分热节点、冷节点。1)热数据:近期常用数据,存高性能磁盘,副本数3,读写性能高;2)冷数据:归档、过期日志、不常访问数据,存廉价大容量磁盘,降低副本数为2甚至1;3)通过HDFS的存储策略、目录规则,自动将冷数据迁移至冷节点,节省集群成本,提升热数据性能。六、区别对比类面试题17、HDFS和本地磁盘存储的区别?参考答案:1)本地存储单节点上限低,HDFS可以横向扩展集群,支撑海量数据;2)本地存储无容错,硬盘坏了数据就丢,HDFS多副本保证高可用;3)本地存储适合低延迟随机读写,HDFS适合高吞吐批量读写;4)HDFS是分布式架构,统一管理整个集群磁盘,本地磁盘是单机器独立管理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论