hdfs 多租户_【技术干货】常见的HDFS面试问答精选

f50ac3d16866f521bbb8df2cbf3cd820.png

最常见的HDFS面试问答

1. 什么是HDFS?

答:HDFS代表Hadoop分布式文件系统,该系统将大型数据集存储在Hadoop中。它可以在商用硬件上运行,并且具有很高的容错能力。HDFS遵循主/从体系结构,其中许多计算机在集群上运行。群集由一个NameNode和群集中的多个从属节点(称为DataNodes)组成。

359060d2108dda0412e975c8df29f924.png

NameNode存储元数据,即数据块的数量、副本、位置和其他详细信息。另一方面,数据节点存储实际数据,并根据客户端的请求执行读/写请求。

2. HDFS有哪些不同的组件?

答:HDFS具有三个组成部分:

  • 名称节点
  • 数据节点
  • 次要名称节点

3. HDFS DataNode中DataBlock的默认块大小是多少?

答:在Hadoop 1.x中,DataBlock的默认块大小为64MB,在Hadoop 2.x中,其默认块大小为128MB。

4. 解释Hadoop中NameNode的服务。

答:NameNode在HDFS中扮演主节点的角色。它包含两个重要信息:

  • 关于Hadoop元数据和文件系统树
  • 数据块和数据节点之间的内存中映射

NameNode包含元数据信息,例如文件许可权、文件复制因子、块大小、文件创建时间、文件的所有者信息以及文件的块与数据节点之间的映射。

5. HDFS中的fsimage和editlogs是什么?

答:Hadoop文件的元数据存储在HDFS NameNode内存中的文件中,该文件称为fsimage。

当对Hadoop文件系统进行任何更改(例如添加或删除文件等)时,不会立即将其写入fsimage,而是将其保存在磁盘上称为editlog的单独文件中。当名称节点启动时,editlog将与旧的fsimage文件同步,并更新新的副本。

6. 在Unix和Linux中,默认块大小为4KB,那么为什么HDFS块大小设置为64MB或128MB?

答:块是存储在文件系统中的数据的最小单元。因此,如果我们考虑将Linux / Unix的默认块大小用于Hadoop中的数据存储,那么对于海量数据(PB),它将占用大量块。因此,元数据量将显着增加,从而导致NameNode的性能问题。因此,在Hadoop 1.x中,默认块大小为64MB,在Hadoop 2.x中,默认块大小为128MB。

7. NameNode启动时会发生什么?

答:当NameNode启动时,它将执行以下操作:

  • 从最后保存的FsImage和editlog文件中,它将文件系统名称空间加载到其主内存中。
  • 通过合并先前的fsimage和editslog文件来创建新的fsimage文件,以创建新的文件系统名称空间。
  • 从所有DataNode接收有关块位置的信息。

8. Hadoop中的安全模式是什么?

答:安全模式指示NameNode的维护状态。在安全模式下,HDFS群集变为只读。因此,文件系统中不允许修改。同样,你不能在此模式下删除或复制任何数据块。

9. 如果更改HDFS中的块大小,现有数据会发生什么?

答:如果我们更改HDFS中的块大小,不会影响现有数据。

10. 什么是HDFS复制?默认复制因子是什么?

答:HDFS旨在容错以防止数据丢失。因此,HDFS在不同的机架和不同的数据节点中维护每个DataBlock的三个副本,这被称为复制。

默认复制因子为3。

11. 什么是次要NameNode?

答:Hadoop元数据存储在NameNode主内存和磁盘中。主要有两个文件用于此目的:

  • 编辑日志
  • 图像

对HDFS所做的任何更新都将输入到编辑日志中。随着条目数量的增加,文件大小会自动增长,但是,fsimage文件的文件大小保持不变。当服务器重新启动时,editlogs文件的内容将被写入fsimage文件,然后将其加载到主内存中,这非常耗时。editlogs文件大小越多,加载到fsimage中所花费的时间就越多,从而导致停机时间延长。

为避免此类长时间停机,使用了称为次要NameNode的NameNode帮助程序节点,该节点定期将内容从Editlog复制到fsimage,并将新的fsimage文件复制回NameNode。

12. NameNode如何处理DataNode故障?

答:HDFS体系结构的设计方式是,每个DataNode都会定期向HeartNode发送心跳以确保其处于工作模式。当NameNode没有收到来自特定DataNode的任何心跳信号时,它将认为该DataNode已失效或不起作用,并将所有相应的DataBlock转移到已经与其复制的其他活动DataNode。

HDFS面试高级问题

13. 如何在HDFS中执行数据/文件读取操作?

答:HDFS NameNode是所有文件信息及其在从属节点中实际位置的占位符。文件的读取操作遵循以下步骤:

  • 当需要读取文件时,DistributedFileSystem实例从NameNode检索文件信息。
  • NameNode检查该特定文件是否存在,并且用户有权访问该文件。
  • 一旦满足上述条件,NameNode便将令牌提供给客户端,以进行身份验证以从DataNode获取文件。
  • NameNode提供文件的所有Block细节和相关数据节点的列表。
  • 然后根据它们与客户端的接近程度对DataNode进行排序。
  • DistributedFileSystem将输入流返回到名为FSDataInputStream的客户端,以便客户端可以从中读取数据。
  • FSDataInputStream充当DFSInputStream的包装,DFSInputStream负责管理NameNode和DataNode和I / O。
  • 当客户端在流上调用read()时,DFSInputStream连接到壁橱DataNode块,数据通过流返回给客户端。重复调用read()操作,直到完全读取第一个块的末尾为止。
  • 完全读取第一个块后,将关闭与该DataNode的连接。
  • 接下来,DFSInputStream再次连接到下一个块的下一个可能的DataNode,并继续直到完全读取该文件。
  • 读取整个文件后,FSDataInputStream调用close()操作以关闭连接。

14. 是否可以同时写入HDFS文件?

答:否,HDFS不允许并发写入。因为当一个客户端收到NameNode的允许在数据节点块上进行写入的权限时,该特定块将被锁定,直到写入操作完成。因此,没有其他客户端可以在同一块上写入。

15. 现有的HDFS体系结构面临哪些挑战?

答:现有的HDFS体系结构仅由一个NameNode(包含单个Namespace)和多个保存实际数据的DataNode组成。此体系结构在群集大小有限的情况下效果很好。但是,如果我们尝试增加集群大小,则会遇到一些挑战。

  • 由于命名空间和块紧密耦合,因此其他服务无法轻松有效地利用块的存储容量。
  • 对于单个NameNode,如果我们想在集群中添加更多DataNode,它将创建巨大的元数据。在这里,我们可以水平缩放DataNodes。但是,我们不能以相同的方式扩展NameNode。这是一个命名空间可伸缩性问题。
  • 当前的HDFS文件系统具有与吞吐量相关的性能限制。因为单个名称节点仅支持60000个并发任务。
  • 我们无法获得单个应用程序的隔离名称空间,因为HDFS部署发生在多租户环境中,并且多个应用程序或组织共享一个群集。

16. 什么是HDFS联盟?

答:在现有的HDFS体系结构中,无法水平扩展NameNode。Hadoop Federation是一个过程,通过该过程可以水平扩展几个独立的NameNode,而无需任何相互协调。

bb353b1f2d9e8499975253065c3eda49.png

在HDFS联合体系结构中,DataNode位于底层,并用作公用存储。每个DataNode都向集群中的所有NameNode进行注册。在这里,许多名称节点管理许多名称空间,而每个名称空间都有其自己的块池。块池是一组块,并且属于单个命名空间。

总结

以上就是今天的内容了,如果对你有所帮助,希望你能够关注、点赞、转发一键三连支持一下。

需要完整学习线路和配套课堂笔记,请回复111。

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

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

相关文章

python装饰器常见问题_python 装饰器常见用法

跟踪调用class tracer: # State via instance attributesdef __init__(self, func): # On decoratorself.calls 0 # Save func for later callself.func funcdef __call__(self, *args, **kwargs): # On call to original functionself.calls 1print(call %s to %s % (self…

php通过url传递变量,PHP:如何在模态URL中放置和传递变量

所以,我有一个按钮,可以在同一页面中直接链接到模态.这是按钮和网址href"main_user.php?user_id<?php echo $user[user_id]; ?>#myModal"class"btn btn-warning">(我尝试在#modal之前回显$user_id)是不是&#xff1f;单击按钮后,将出现模态.这…

python 根据类名 查找module_关于 Python 命令中的 m 参数

在命令行中使用 Python 时&#xff0c;它可以接收大约 20 个选项(option)&#xff0c;语法格式如下&#xff1a;python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]本文想要聊聊比较特殊的“-m”选项&#xff1a;关于它的典型用法、原理解析与发…

php xampp bug,PHP网站访问慢的处理方法

如果网站跑在了LAMP环境中&#xff0c;就无法使用php-fpm的slow log了&#xff0c;那如何分析瓶颈点&#xff1f;没关系你还可以使用这个XdebugWebgrind&#xff0c;其中Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具)&#xff0c;可以用来跟踪&#xff0c;调试和分析…

matlab安装程序无法启动jvm_JVM 执行 Java 程序时的内存区域划分

在学习 Java 虚拟机(后面简称&#xff1a; JVM )中的垃圾回收机制(GC)之前&#xff0c;先需要了解 在 JVM 中的 Java 程序(class 文件)加载到内存之后到底是怎么存的。在阅读了 JVM规范 和周志明的 《深入理解Java虚拟机(第2版)》 之后&#xff0c;总结一下JVM中的内存划分以及…

phpFpm加载php,php-fpm添加service服务的例子

nginx通过FastCGI运行PHP比Apache包含PHP环境有明显的优势,最近有消息称,PHP5.4将很有可能把PHP-FPM补丁包含在内核里,nginx服务器平台上运行PHP将更加轻松,下面我们就来看一篇php-fpm平滑启动并配置服务例子。我的php是源码安装的。php-fpm在PHP 5.3.2以后的版本不支持以前的p…

python 性能问题_Python 性能问题一直饱受诟病,这篇我们讨论下提升 Python 应用性能的常见方法。...

Python - 提高Python运行效率的六个窍门Python是一门优秀的语言&#xff0c;它能让你在短时间内通过极少量代码就能完成许多操作。不仅如此&#xff0c;它还轻松支持多任务处理&#xff0c;比如多进程。不喜欢Python的人经常会吐嘈Python运行太慢。但是&#xff0c;事实并非如此…

php中没有dockerfile,Dockerfile在RUN composer install命令中没有使用缓...

我以为我已经理解了Docker,但今天我发现了一些关于利用docker缓存的问题.这是我的dockerfileFROM quay.io/my_company/phpjenkinsWORKDIR /usr/src/my_projectADD composer.json composer.jsonADD composer.lock composer.lockRUN composer install -oADD . .RUN mkdir -p temp…

map循环遍历取值_Collection集合框架集和map

Collection集合框架集Java培训之Collection集合框架集MapMap概述Map与Collection并列存在。用于保存具有映射关系的数据:Key-ValueMap 中的 key 和 value 都可以是任何引用类型的数据Map 中的 key 不允许重复key 和 value 之间存在单向一对一关系&#xff0c;即通过指定的 key …

php查询字段前30个字符,php/json我的字段名被截断为30个字符。我能停下来吗?

好吧,我得到了一个供应商软件,他们说应该在ApachePHP服务器和MySQL数据库上运行。我没有这两个,所以我把它放在一个php-iis服务器上,并将代码转换为在SQL服务器上工作。前任。mysql_select_db->mssql_select_db(除其他外)所以我在一个PHP文件中有以下代码$query "SELE…

rserve php,使用Rserve远程执行R脚本

Rserve介绍Rserve是一个基于TCP/IP协议的&#xff0c;允许R语言与其他语言通信的C/S结构的程序&#xff0c;支持C/C,Java,PHP,Python,Ruby,Nodejs等。 Rserve提供远程连接&#xff0c;认证&#xff0c;文件传输等功能。我们可以设计R做为后台服务&#xff0c;处理统计建模&…

搜索引擎提交软件_搜索引擎优化的发展史及SEO前景展望

SEO 是随着搜索引擎的普及而出现&#xff0c;并伴随搜索引擎的发展而发展的。关于搜索引擎和搜索引擎优化SEO 最初是怎么诞生的有很多种说法。有一个非常有趣的事实是&#xff0c;最早的一批SEO 甚至可以追溯到Yahoo 出现之前&#xff0c;我们可以把Yahoo 的传世人David Filo 和…

mongodb模糊查询_MongoDB的CRUD基本操作

原创&#xff1a;牛津小马哥Python后端工程师小李哥。在上周的推文中&#xff0c;我们介绍了MongoDB的数据库和集合的操作&#xff0c;现在&#xff0c;让我们来继续学习mongodb的另一个操作&#xff1a;CRUDCRUD操作&#xff1a;创建、读取、更新、删除文档。创建操作&#xf…

java有关问题,java经典有关问题!

java经典问题&#xff01;&#xff01;&#xff01;问题一&#xff1a;与equal的区别&#xff1f;和 equals 都是比较的,而前者是运算符,后者则是一个方法,基本数据类型和引用数据类型都可以使用运算符,而只有引用类型数据才可以使用 equals,下面具体介绍一下两者的用法以及区别…

python怎么创业_python创业

从GitHub中整理出的15个最受欢迎的Python开源框架。这些框架包括事件I/O&#xff0c;OLAP&#xff0c;Web开发&#xff0c;高性能网络通信&#xff0c;测试&#xff0c;爬虫等。Django:PythonWeb应用开发框架Django应该是最出名的Python框架&#xff0c;GAE甚至Erlang都有框架受…

python开发需要什么基础_零基础学习Python需要用什么开发工具?

对于学习Python的小伙伴&#xff0c;小编首推的Pycharm。首先&#xff0c;PyCharm用于一般IDE具备的功能&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制另外&#xff0c;PyCharm还提供了一些很好的功能用于Djan…

php send helo/ehlo first错误,phpmailer发送邮件提示SMTP server error怎么回事?

以下是我的代码错误提示信息为&#xff1a;SMTP server error: Error: send HELO/EHLO first如果把SMTPAuth改为true&#xff0c;错误为SMTP Error: Could not authenticate. Mail errorSMTP Error: Could not authenticate.请教大神是什么原因&#xff1f;是不是还需要哪些设置…

python elasticsearch_python elasticsearch模块使用

加载模块from elasticsearch import Elasticsearch连接ESes Elasticsearch(["172.30.6.12"])查询res es.search(index"test-index", body{"query":{"match_all":{}}})# 查询请求主机是ai.baidu.com 所有信息res es.search(index&qu…

php ci model条件查询,php – CodeIgniter中的多条件WHERE子句

我想删除一些像核心PHP中的查询这样的数据WHERE user_id$id AND sender_id$send_id OR user_id$send_id AND sender_id$id所以我在CodeIgniter中尝试使用Active Record,如下所示&#xff1a;$this->db->where(user_id ,$id);$this->db->or_where(user_id ,$send_id…

python语言打印菱形_Python 实现打印单词的菱形字符图案

Python 实现打印单词的菱形字符图案我就废话不多说了&#xff0c;还是直接看代码吧&#xff01;a [1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1]b [ * 2 * (7 - i) Good * i for i in a]for line in b:print(line)程序运行结果如下&#xff1a;补充知识&#xff1a;python打印菱…