Hadoop面试题*精选*(附答案)

Hadoop面试题

Hadoop种常问的就三块:

第一:分布式存储(HDFS)

第二:分布式计算框架(MapReduce)

第三:资源调度框架(YARN)

1.hadoop1和hadoop2的架构异同

**hadoop1组成:**MapReduce(计算+资源调度),HDFS(数据存储),Common(辅助工具)

**hadoop2组成:**MapReduce(计算),Yarm(资源调度),HDFS(数据存储),Common(辅助工具)

在hadoop1时代,hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合度较大

在hadoop2时代,增加了Yarm。Yarm只负责资源的调度,MapRedecue只负责运算。另外,hadoopHA加入了对zookeeper的支持实现比较可靠的高可用

hadoop3可以理解为hadoop的生态圈

2.介绍hadoop中的HDFS

HDFS是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由多个服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建,写入和关闭之后就不需要改变。

**HDFS优点 **

1)高容错性

​ 1.数据自动保存多个副本,通过增加副本的形式,提高容错性

​ 2.某一个副本丢失后,它可以自动恢复

2)适合处理大数据

​ 1.能够处理的数据规模达到GB,TB,PB

​ 2.能够处理百万规模以上的文件数量

3)可构建在廉价服务器上,通过多副本机制,提高可靠性

HDFS缺点

1)不适合低延时数据访问。理解为即时数据访问

2)无法高效的对大量小文件进行存储

​ 1.存储大量小文件的话,会占用NameNode大量的内存来存储文件目录和块信息。但其内存式有限的

​ 2.小文件存储的寻址时间会超过读取时间,违反了HDFS的设计目标

​ 3.HDFS的block大小可以设置,默认为126M.

3)不支持并发写入、文件随机修改

​ 1.一个文件只能由一个写,不允许多个线程同时写

​ 2.仅支持数据append(追加),不支持文件的随机修改

3.Hadoop的运行模式

共有3中运行模式:

​ 本地模式:单机运行,用来演示,生产环境不可用

​ 伪分布式模式:也是单机模式,但是具备hadoop集群的所有功能。生产环境不可用

​ 完全分布式:多台服务器组成分布式环境,生产环境使用

4.Hadoop生态圈的组件

1)zookeeper:一个开源的分布式协调服务框架,为分布式系统提高一致性服务,基于zookeeper可以实现数据同步,统计配置,命名服务。

2)Flume:一个分布式的海量日志采用,聚合和传输的系统

3)Hbase:一个分布式的,面向列的开源数据库,利用HDFS作为其存储系统

4)Hive:基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行

5)Sqoop:将一个关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中

5.hadoop和hadoop生态系统

Hadoop是指Hadoop框架

Hadoop生态系统:不仅包含hadoop,还包括保证hadoop正常高效运行的其他框架

6.Hadoop的组成框架

(一)NameNode(nn):就是Master。负责管理整个文件系统的元数据,所有的文件路径和数据块的存储信息都保存在nn中。NN处理客户端读写请求,分发给DN去执行

(二)DataNode(DN):就是Slave,存储实际的数据块,执行真正的读写操作

(三)Client:就是客户端

​ 1.文件切分。文件上传HDFS的时候,Client将文件切分为一个一个的Block,进行上传

​ 2.与NN交互,获取文件的位置信息。与DN交互,读取或者写入数据

​ 3.Client提供一些命令来管理HDFS,也可以通过一些命令访问HDFS

(四)SecondaryNameNode:并非NN的热备。其定期触发CheckPoint(服务),代替NN合并编辑日志EditLog和镜像文件Fsimage,从而减小EditLog的大小,减少NN的启动时间,

7.HDFS的文件块大小影响

HDFS中的文件在物理上是分块存储的,块大小可以通过配置参数规定

如果一个文件小于规定大小,其只能占文件本身大小的空间

在寻址流程中: 寻址时间为传输时间的1%时,为最佳状态

为什么块的设置不能太大,不能太小?

​ HDFS块设置太小,会增加寻址时间。块小,文件大,则存储的块多,寻址时间多

​ HDFS块设置太大,从磁盘传输数据的时间明显大于寻址的时间

​ **总结:**HDFS块的大小设置主要取决于磁盘传输速率。一般设置为128M.固态硬盘传输速率块,设置为256M.

8.HDFS的写数据流程

img

​ 1.client向NN请求上传文件,NN检查其权限,判断文件是否已经存在

​ 2.如果权限许可,目标文件也存在,NN进行响应,返回是否可以上传文件

​ 3.客户端请求第一个Block上传到哪几个DN上

​ 4.NN返回3个DN节点(默认为3)

​ 5.客户端创建数据流对象,通过该对象请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3。这样dn1~dn3通信通道建立完成

​ 6.传输通道建立完成后,dn1,dn2,dn3逐级应答客户端

​ 7.客户端开始往dn1上传第一个Block,以Packet为单位,dn1收到Packet传给dn2,dn2传给dn3

​ 8.当一个block传输完成之后,客户端请求NN来上传第二个Block到服务器

​ 9.当所有的Block传输完毕后并确认后,客户端关闭数据流对象。然后联系NN,确认数据写完成。NN在内存中对元数据进行增删改。

9.机架感知(副本存储节点选择策略)

默认情况下,HDFS中的数据块有3个副本。副本存储策略如下(看源码):

第一个副本在Client所处的节点上。如果客户端在集群外,随机选一个。
第二个副本在另一个机架的随机一个节点
第三个副本在第二个副本所在机架的随机节点
第四个及以上,随机选择副本存放位置。

这么选择的好处:

第一个副本在本地,考虑到结点距离最近,上传速度最快
第二个副本在另一个机架的节点上,考虑到数据的可靠性
第三个副本在第二个副本所在机架的节点,又要兼顾对应的效率

10.HDFS读数据流程

在这里插入图片描述

​ 1.client向NN请求下载文件

​ 2.挑选一台DN服务器,请求读取数据

​ 3.DN开始传输数据给客户端,串行读取,即先读取第一个块,在读取第二个块拼接到上一个块后面

​ 4.客户端以Packet为单位接收,现在本地缓存,然后写入目标文件

11.NN和2NN工作机制(元数据持久化机制)

在这里插入图片描述

(一)第一阶段:NameNode 启动
(1)第一次启动 NameNode 格式化后,创建 镜像文件fsimage 和 编辑日志edits_inprogress_001 文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)NameNode 记录更新操作到edits_inprogress_001(编辑日志) 中
(4)NameNode 在内存中对元数据进行增删改(然后再通过SecondaryNameNode对元数据进行修改)。

(二)第二阶段:Secondary NameNode 工作
(1)Secondary NameNode 询问 NameNode 是否需要 CheckPoint(即是否需要服务),带回 NameNode是否可服务的条件。CheckPoint触发条件:定时时间到;Edits中的数据满了。
(2)Secondary NameNode 请求执行 CheckPoint(即请求服务)。
(3)NameNode 滚动正在写的 edits_inprogress_001 日志,将其命名为edits_001,并生产新的日志文件edits_inprogress_002,以后再有客户端操作,日志将记录到edits_inprogress_002中。
(4)将编辑日志edits_001和镜像文件fsimage拷贝到 SecondaryNameNode。
(5)Secondary NameNode 加载编辑日志和镜像文件到内存,并合并。
(6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值