HDFS经典简答题(实习生必看!)

猿人菌 2021-01-22 16:45:19
HDFS 经典 答题 简答 简答题


前一段时间,小菌陆续分享了HDFS系列1-12的博客,总算是要完结了。于是小菌打算再出一期关于HDFS的经典面试题,其中的内容大多都出自于在前面分享的博客中,感兴趣的小伙伴们可以自行浏览,链接小菌放到文末了哦~

1.怎么理解分布式?

分布式需要从计算存储两个方面来讨论: 分布式计算:是一种计算方法,是将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。 分布式存储,是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,将这些分散的存储资源构成一个虚拟的存储设备,数据分散存储在企业的各个角落,多台服务器。

2.hadoop 的组成部分

a) HDFS i. 管理者:NameNode ii. 工作者:DataNode iii. 辅助管理者:SecondaryNameNode b) MapReduce c) Yarn i. 管理者:ResourceManager ii. 工作者:NodeManager

3.HDFS副本存放机制

i. 第一副本来源于客户端 ii. 第二副本按照一定规则存放在与第一副本相同机架上的不同节点 iii. 第三副本按照一定规则存放在与第一二副本逻辑距离最近的不同机架上的随机节点上

4.Namenode作用

a) 维护管理文件系统的名字空间(元数据) b) 确定用户的文件块指向具体的DataNode结点的映射关系 c) 维护管理DataNode周期性上报的心跳信息

5.DataNode作用

a) 执行数据的读写 b) 周期性地向NameNode上报心跳信息(包括数据的信息、校验和)若DataNode超过10分钟没有向NameNode上传心跳信息,则视为该DataNode所在节点已宕机 c) 执行流水线式复制数据

6.什么是机架感知?

通俗的来说就是nameNode通过读取我们的配置来配置各个节点所在的机架信息

7.什么时候会用到机架感知?

NameNode分配节点的时候 (数据的流水线复制和HDFS复制副本时)

8.HDFS数据写入流程?

1、 client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否 存在,返回是否可以上传; 2、 client请求第一个block该传输到哪些DataNode服务器上; 3、 NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如: A,B,C; 4、 client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用 B,然后B调用C,将整个pipeline建立完成,后逐级返回client; 5、 client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A 收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答。 6、 数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应 答),最终由pipeline中第一个DataNode节点A将pipelineack发送给client;。 7、关闭写入流。 8、 当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器。

9.HDFS数据读取流程?

1、客户端通过调用FileSystem对象的open()来读取希望打开的文件。 2、 Client向NameNode发起RPC请求,来确定请求文件block所在的位置; 3、 NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排 靠后。 4、Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短 路读取特性)。 5、 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法, 直到这个块上的数据读取完毕。 6、并行读取,若失败重新读取。 7、 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表。并返回后续block列表。 8、 最终关闭读取流,并将读取来所有的 block 合并成一个完整的最终文件。

10.HDFS数据完整性如何保证?

数据在写入之后进行校验和的计算,DataNode周期性进行校验和计算,将计算结果与第一次的结果进行对比。 若相同表示无数据丢失,若不相同表示数据有丢失,丢失进行数据恢复。 数据读取之前对数据进行校验,与第一次的结果进行对比。若相同表示数据没有丢失,可以读取。若不相同表示数据 有所丢失。到其他副本读取。

11.HDFS 特性?

1、海量数据存储: HDFS可横向扩展,其存储的文件可以支持PB级别数据。 2、高容错性:节点丢失,系统依然可用,数据保存多个副本,副本丢失后自动恢复。可构建在廉价(与小型机大型机比)的机器上,实现线性扩展(随着节点数量的增加,集群的存储能力,计算能力随之增加)。 3、大文件存储:DFS采用数据块的方式存储数据,将一个大文件切分成多个小文件,分布存储。

12.HDFS缺点?

1.不能做到低延迟数据访问: HDFS 针对一次性读取大量数据继续了优化,牺牲了延迟性。 2. 不适合大量的小文件存储 : A:由于NameNode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于NameNode的内存容量。 B:每个文件、目录和数据块的存储信息大约占150字节。 由于以上两个原因,所以导致HDFS不适合大量的小文件存储。 3.文件的修改; 不适合多次写入,一次读取(少量读取)。 4.不支持多用户的并行写入同一个文本

13.什么时候进入安全模式?

当集群启动时,首先进入安全模式 或者使用 hdfs dfsadmin -safemode enter 命令手动进入安全模式

14.安全模式有什么特点?

a) 不允许客户端进行任何修改文件的操作,包括上传文件、删除文件、重命名、创建文件夹等操作。 b) 只允许客户端进行读取数据的操作

15.在安全模式下集群在做什么?

a) 会检查数据块的完整性 b) 合并fsimge,editslog恢复上一次关机前的状态

16.如何进入/退出安全模式?

a) hdfs dfsadmin -safemode enter 命令手动进入 b) hdfs dfsadmin -safemode leave 命令手动退出

17.Fsimage 和 Edits 的作用是什么?

a) fsimage文件其实是Hadoop文件系统元数据的一个永久性的检查点。 b) edits文件存放的是客户端对集群的操作 用这两个文件可以恢复集群在关机前的状态!

18.什么时候会使用Fsimage Edits?

a) 在NameNode启动的时候,它会将fsimage文件中的内容加载到内存中,之后再执行edits文件中的各项操作,使得内存中的元数据和实际的同步。 b).SecondayNameNode周期性的拉取fsimage和edits进行合并生成新的fsimage

19.SecondaryNamenode 的工作机制是什么?

a) NameNode创建一个Edits.new b)SNN从NameNode节点拷贝Fsimage和Edits文件到SNN,SNN将两个文件导入内存进行合并操作生成一个新的Fsimage.ckpt文件。 c)SNN将新的Fsimage.ckpt发送到NameNode节点,重命名为Fsimage替换原先的Fsimage,原先的Edits生成Edits.new文件,将Edits替换为新的Edits.new

20.SecondaryNamenode存在的意义是什么?

a):进行Fsimage和Edits的合并操作,减少edits日志大小,加快集群的启动速度 b):将Fsimage与Edits进行备份,防止丢失

21.SecondaryNamenode工作的触发因素有哪些?

1.时间维度,默认一小时触发一次 dfs.namenode.checkpoint.period :3600 2.次数维度,默认HDFS操作达到100万次触发一次 dfs.namenode.checkpoint.txns : 1000000 3、六十秒判断一次是否达到100W

22.使用SNN的FSimage和Edits还原Namenode流程是什么?

进入到SNN的数据存储文件夹----->将最新版本的Fsimage以及Edits拷贝至nameNode节点,放在NN节点相应的配置目录下----->重启集群

23.集群扩容1 新节点需要做哪些准备?

a) 关闭防护墙、关闭SELinux、配置ssh免密登录、配置IP与主机名对应、更改主机名、安装jdk、

24.集群扩容2 集群添加一个节点的流程?

b) 创建白名单dfs.hosts,将所有节点添加进该文件,编辑hdfs-site.xml文件配置dfs.hosts映射信息 c) 使用 hdfs dfsadmin -refreshNodes 刷新NameNode d) 使用 yarn dfsadmin -refreshNodes 更新resourceManager e) 修改slaves文件增加新服务节点的主机名称 f) 启动新增节点 g) 浏览器查看新增节点信息 h) 执行 start-balancer.sh 负载均衡

25.如何合并小文件?

a) 使用HDFS提供的 -getmerge 命令 【HDFS–>本地】 b) 遍历每个小文件追加到一个文件再进行上传 【本地–>HDFS】

26.设置 开启权限控制的key是什么?

a) dfs.permissions

27.使用java API 在hdfs创建一个全新的目录的过程是?

a)实例化configuration b) 实例化文件系统对象hdfs c) 调用hdfs的mkdirs()方法即可

28.HDFS web界面

各目录下常用英文对应的中文意思

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[猿人菌]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1778544

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云