Hadoop之HDFS常见面试题

大数据面试题+
一:HDFS面试题
1. HDFS的写流程

1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。
2)NameNode返回是否可以上传。
3)客户端请求第一个 Block上传到哪几个DataNode服务器上。
4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。
5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。
6)dn1、dn2、dn3逐级应答客户端。
7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。
8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。
2.HDFS读数据流程

1)客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。
3.datenode什么情况下不会备份
设置备份数为1时, 就不会备份了.
延申—Hadoop中在哪里设置备份数, 是哪个字段?
在hdfs-site.xml中的dfs.replication变量.
4.HDFS中大量小文件带来的问题以及解决的方案
问题:
hadoop中目录,文件和块都会以对象的形式保存在namenode的内存中, 大概每个对象会占用150bytes. 小文件数量多会大量占用namenode的内存; 使namenode读取元数据速度变慢, 启动时间延长; 还因为占用内存过大, 导致gc时间增加等.

解决办法:
两个角度, 一是从根源解决小文件的产生, 二是解决不了就选择合并.

从数据来源入手, 如每小时抽取一次改为每天抽取一次等方法来积累数据量.
如果小文件无可避免, 一般就采用合并的方式解决. 可以写一个MR任务读取某个目录下的所有小文件, 并重写为一个大文件.
5.HDFS三个核心组件时什么,分别有什么作用
1 NameNode. 集群的核心, 是整个文件系统的管理节点. 维护着
a) 文件系统的文件目录结构和元数据信息
b) 文件与数据块列表的对应关系
2 DataNode. 存放具体数据块的节点, 主要负责数据的读写, 定期向NameNode发送心跳
3 SecondaryNameNode. 辅助节点, 同步NameNode中的元数据信息, 辅助NameNode对fsimage和editsLog进行合并.
6. fsimage和editlogs是做什么用的?
fsimage文件存储的是Hadoop的元数据文件, 如果namenode发生故障, 最近的fsimage文件会被载入到内存中, 用来重构元数据的最近状态, 再从相关点开始向前执行edit logs文件中记录的每个事务.

文件系统客户端执行写操作时, 这些事务会首先记录到日志文件中.

在namenode运行期间, 客户端对hdfs的写操作都保存到edit文件中, 久而久之就会造成edit文件变得很大, 这对namenode的运行没有影响, 但是如果namenode重启, 它会将fsimage中的内容映射到内存中, 然后再一条一条执行edit文件中的操作, 所以日志文件太大会导致重启速度很慢. 所以在namenode运行的时候就要将edit logs和fsimage定期合并.
7. Linux中的块大小为4KB, 为什么HDFS中块大小为64MB或128MB?
块是存储在文件系统中的数据的最小单元. 如果采用4kb的块大小来存放存储在Hadoop中的数据, 就会需要大量的块, 大大增加了寻找块的时间, 降低了读写效率.
并且, 一个map或者一个reduce都是以一个块为单位处理, 如果块很小, mapreduce任务数就会很多, 任务之间的切换开销变大, 效率降低
8

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Hadoop 常见面试题: 1. 什么是 HadoopHadoop 是一个开源的分布式存储和计算框架,它可以处理大规模数据集并提供高可靠性、高可扩展性和高效性能。 2. Hadoop 的组件有哪些? Hadoop 组件包括 HDFS、MapReduce、YARN 和 Hadoop Common。 3. 什么是 HDFSHDFSHadoop 分布式文件系统,它是一种高容错性、高可靠性的文件系统,可以将大量数据存储在集群中的多个节点上。 4. 什么是 MapReduce? MapReduce 是一种编程模型和处理框架,它可以将大规模数据集分解成小的数据块并在分布式系统上进行处理。 5. 什么是 YARN? YARN 是 Hadoop 的资源管理系统,它可以管理和调度集群中的资源,并为 MapReduce 等计算框架提供资源。 6. Hadoop 中的 NameNode 和 DataNode 有什么作用? NameNode 是 HDFS 的主节点,它负责管理文件系统的命名空间和元数据。DataNode 是 HDFS 的数据节点,它负责存储和处理实际的数据块。 7. 什么是 Hadoop Streaming? Hadoop Streaming 是 Hadoop 的一个工具,它可以让用户使用任何可以处理标准输入和输出的程序来编写 MapReduce 作业。 8. Hadoop 的优点是什么? Hadoop 具有高可靠性、高可扩展性、高效性能、低成本等优点,可以处理大规模的数据集并提供强大的数据处理能力。 9. Hadoop 的缺点是什么? Hadoop 的缺点包括复杂性高、学习门槛高、调试困难等,同时需要一定的硬件和人力资源投入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值