admin 管理员组

文章数量: 1184232


2024年3月20日发(作者:redis缓存经典面试题)

习题

一、选择题

1.下列有关 Hadoop 的说法正确的是( ABCD )。

A .Hadoop 最早起源于 Nutch

B

Hadoop

HDFS

的理念来源于谷歌发表的分布式文件系统(

GFS

)的论文 C .

Hadoop 中 MapReduce 的思想来源于谷歌分布式计算框架 MapReduce 的论文

D

Hadoop

是在分布式服务器集群上存储海量数据并运行分布式分析应用的一个开源

的 软件框架

2.使用 Hadoop 的原因是( ABCD )。

A

.方便:

Hadoop

运行在由普通商用机器构成的大型集群上或者云计算服务上

B

.稳健:

Hadoop

致力于在普通商用硬件上运行, 其架构假设硬件会频繁失效,

Hadoop

可以从容地处理大多数此类故障

C

.可扩展:

Hadoop

通过增加集群节点,可以线性地扩展以处理更大的数据集

D

.简单:

Hadoop

允许用户快速编写高效的并行代码

3.Hadoop 的作者是( B )。

A

Martin Fowler B

Doug Cutting C

Kent Beck D

Grace Hopper

4.以下关于大数据特点的描述中, 不正确的是(

ABC

)。

A

. 巨大的数据量 B .多结构化数据 C .增长速度快

D

.价值密度高

二、简答题

1.Hadoop 是一个什么样的框架?

答:

Hadoop

是一款由

Apache

基金会开辟的可靠的、可伸缩的分布式计算的开源软件。 它

允许使用简单的编程模型在跨计算机集群中对大规模数据集进行分布式处理。

2

Hadoop

的核心组件有哪些?简单介绍每一个组件的作用。

答:核心组件有 HDFS 、MapReduce 、YARN 。

HDFS ( Hadoop Distributed File Sy,stdoop 分布式文件系统)是 Hadoop 的核心组件之 一,

作为最底层的分布式存储服务而存在。它是一个高度容错的系统,能检测和应对硬件故障, 可

在低成本的通用硬件上运行。

MapReduce 是 Hadoop 的一个分布式计算框架, 也是一种大规模数据集并行运算的编程模型,

主要用于处理海量数据的运算。 MapReduce 主要包括 map (映射)和 reduce(规约)两部份。它 是

一个分布式运算程序的编程框架,其核心功能是将用户编写的业务逻辑代码和自带的默认组 件

整合成一个完整的分布式运算程序,并发运行在

Hadoop

集群上。

Hadoop YARN 是开源 Hadoop 分布式处理框架中的资源管理和作业调度框架,主要负责将

系统资源分配给在

Hadoop

集群中运行的各种应用程序,并调度在不同集群节点上执行的任务

3.简述

Hadoop

生态体系,并列举此生态体系中涉及的技术。

答: 当今的

Hadoop

已经成长为一个庞大的生态体系, 随着生态体系的成长,新浮现的项目

也越来越多,其中不乏一些非

Apache

主管的项目,这些项目对

Hadoop

做了更好的补充或者更

高层的抽象,涉及的技术有

HBase

Hive

Sqoop

Pig

Flume

Oozie

ZooKeeper

kafka

Spark

等。

4.简单列举几个 Hadoop 的应用场景。

答: (

1

)在线旅游

(

2

) 电子商务

(

3

) 挪移数据

(4)能源发现

(

5

)节约能源

(

6

)图象处理

(

7

)医疗保健

(

8

) IT 安全

(

9

)欺诈检测

(

10

)基础设施管理

习题

一、填空题

1.Hadoop 集群中的节点 DataNode 负责 HDFS 的数据存储。

2.Hadoop 集群中的 Jobtracker 程序通常与 NameNode 在一个节点启动。

3

Hadoop

的运行模式有 独立(本地)运行模式 、伪分布式运行模式 和彻底分布式运行

环境 。

4

Hadoop

集群搭建中常用的

4

个配置文件有

core-site,xm

l mapred-

site,.xm和l

二、操作题

1

.根据 2.2节伪分布式安装的安装及配置步骤, 在自己计算机上搭建伪分布式

Hadoop

集群

环境,环境搭建完毕后通过命令及

Web

访问方式查看集群的启动情况。

答:具体步骤见章节内容。

2.

根据

2.3

节彻底分布式安装的安装及配置步骤,根据自己计算机的实际配置情况分析是 否

可以搭建至少

2

台节点的彻底分布式

Hadoop

集群环境, 如果配置允许则搭建彻底分布式集群 环

境,搭建完毕后通过命令或者

Web

访问方式查看集群的启动信息。

答:具体步骤见章节内容。

习题

一、填空题

1.由于

NameNode

宕机,导致无法对外提供服务,可通过搭建

HDFS HA

来解决。

2.YARN 的高可用主要是解决 ResourceManager单点故障 。

3.由于

HDFS

存储数据量过大,导致

NameNode

内存不足,可以通过搭建 联邦

来解决。

二、简答题

1.Hadoop 是如何解决高可用问题的?

答:对于 Hadoop 集群, RM 和 NN 都是 S“ingle Point of Fai(lu单re点故障)”,起着“一票否 决”的作用,

所以Hadoop 对 NN 和 RM 都提供了 HA 选项,采用的都是 Active/Standb 措施来 达到 HA 的要求。

所谓 Active/Standb是y一种热备方案, 这种方案中, “在位”的行使职权 ctive 的管理者惟独一个,但有

一个作为备份(即 Standby)的候补管理者时刻准备着,当 Active的管 理者发生故障, Standby的管

理者就立刻顶上, 并进行业务的接管,不用暂时开机和初始化。

2.简述 ZooKeeper 的功能及其在 Hadoop 高可用中起到的作用。

答:

ZooKeeper

主要用来解决分布式应用中时常遇到的一些数据管理问题, 如统一命名服务、

状态同步服务、集群管理、 分布式应用配置项的管理等。

在 Hadoop 的 HA 集群中,使用 ZooKeeper 的存储功能可保存 NameNode 的状态信 息

,ZooKeeper会监听两个 NameNode 的工作状态,当状态发生改变时,由其协调 Active与 Standby 状

态的切换。

3

YARN

是如何解决高可用问题的?

答: Hadoop 在 2.4版本之后,针对 YARN 引入了 HA 机制,也就是 ResourceManager 的

Active/Standb。yYARN 的 HA 与 HDFS 的 HA 基本相同,但 YARN HA 能够支持多个 Standby的

ResourceManager

(

Hadoop 2.x的 HDFS HA

只允许有一个

Standby的 NameNode

Hadoop 3.x之 后,

允许有多个 Standby 的 NameNode ),Active和 Standby 的状态可以通过控制台命令手动切 换,也

可以自动切换。

4.Hadoop 联邦解决了什么问题?

答: Hadoop 集群启动后, NameNode 在内存中保存了文件和块的映射关系,这意味着对于

一个拥有大量文件的超大集群来说, 由于数据量太大, NameNode 的内存中可能也无法放下这么

多的对应关系, 内存将成为限制系统横向扩展的瓶颈。 Hadoop 2.x版本中引入了 HDFS 联邦机制

来解决这个问题

一、选择题

1.数据块(block)的大小由(

A

)参数决定。

A

ize B

ation C

tFS D

2.创建 HDFS 新目录 /“newdi 的命令为(D )。

A

hadoop mkdir /newdir B

hadoop fs mkdir /newdir

C

hadoop fs mkdir newdir D

hadoop fs mkdir /newdir

二、简答题

简述

HDFS

的写数据流程。

答: (

1

) 客户端首先与

NameNode

建立连接,发起文件上传请求。

(

2

)

NameNode

检查上传路径是否存在,目标文件是否存在, 权限是否允许。 若无问题则修

改命名空间,并反馈允许上传。

(

3

) 客户端收到允许上传反馈后再次请求第一个 Block 所在的节点名。

( 4 ) NameNode 根据机架感知原理选取三个节点( DataNode1、DataNode2、DataNode3 )并

将其反馈给客户端。

(

5

) 客户端从获取的三个节点中选取一个节点建立管道 (

Pipelin

)e连接, 请求上传数据。 节 点

1

收到请求后与节点

2

获取连接,节点

2

收到请求后与节点

3

获取连接。

(6)连接全部建立成功后,客户端开始向第一个节点传输第一个 Block。该 Block 数据以

Packet 为单位进行传输。数据的校验则是以更小的

Chunk

单位进行的。数据在客户端本地和

DataNode 端都有读取和写入的缓存队列。每一次 Packet在 Pipeline上的传输都需要反向应答。 直

到写完预定的 Block 为止。节点 1、节点

2

和节点

3

之间也会以同样的方式同步传输。

(7)当第一个 Block传输完毕后,客户端会再次发送请求到

NameNode

,将整个流程再次重

复。

三、编程题

编写程序完成

HDFS

文件系统根目录下所有文件的列举。

Configuration conf = new Configuration();

FileStatus[] listStatus = atus(new Path(path));

for(FileStatus fs:listStatus) {

..println(h())

);

习题

一、填空题

1.YARN 提供的调度器策略有 FIFO Scheduler(FIFO 调度器 )、Capacity Schedule 容 量调

度器)和 Fair Schedule(r公平调度器 ) .

2.YARN 采用的体系架构是主从结构,其中主节点是 ResourceManager ,从节点是

NodeManager 。

3.ResourceManager 的两个重要组件是 Scheduler和 ApplicationsManager。

4.在 NodeManager 中封装内存、CPU 、磁盘、网络等资源的是 Container 。

二、简答题

1.简述共享集群模式的优点。

答:

( 1 )资源利用率高

( 2 )运维成本低

( 3)数据共享

2.简述 ApplicationMaster的主要作用。

答:

( 1 )为运行应用向 ResourceManager 申请资源。

( 2 )在 Job 中对 Task 实现调度。

( 3)与 NodeManager 通信以启动或者住手任务。

( 4 )监控所有任务的运行情况,并在任务失败的情况下重新为任务申请资源以重启任

3.简述 YARN 的工作流程。

答:

( 1 )用户编写客户端应用程序, 向 YARN 中提交应用程序, 其中包括 ApplicationMaster 程序、

启动 ApplicationMaster的命令、用户程序等。

( 2 ) ResourceManager 接到客户端应用程序的请求,会为该应用程序分配一个

Container, 同 时 ResourceManager 的 ApplicationManager 会 与 该 容 器 所 在 的

NodeManager 通信,要求它在这个 Container中启动一个 ApplicationMaste。r (

3)ApplicationMaster被创建后首先向 ResourceManager 注册, 这样用户可以直接通 过

ResourceManager 查看应用程序的运行状态,然后它将为各个任务申请资源,并监 控

它的运行状态,直到运行结束,即重复步骤 4 ~步骤 7。

( 4 ) ApplicationMaster采用轮询的方式,通过 RPC 协议向 ResourceManager 申请和 领取

资源。

( 5 )一旦 ApplicationMaster申请到资源, 就会与该容器所在的 NodeManager 通信, 要求

它启动任务。

习题

一、 填空题

1.MapReduce 执行过程中,数据都是以 key、value的形式进行传递的。

2.整个MapReduce 作业的生命周期是由 ApplicationMaste来r管理的。

3.整个MapReduce 作业的资源分配是由 ResourceManager来管理的。

二、简答题

1.简述 MapReduce 的执行过程。

答:在

map

阶段,系统会将数据拆分成若干个“分片”

s

li)t,分片完成后,再将这些“分片” 数据以

键-值方式传递给 map 进行处理, map 和 reduce都以键-值形式作为输入和输出。 作为 map 端的输入,

默认情况下,键是字符的位移,值是当前行的数据;此键

-

值对会作为参数被陆续传 递给

map

的处理程序,直到数据全部传递完成。

map

方法产生输出时,经过分区和排序后将 其写入磁盘。

在 reduce端的, reduce端会通过多个复制线程去“拉取”不ap 节点输出的数据文件,并 对这

些数据文件进行排序和合并, 合并之后的文件被传入 reduce方法中, reduce方法执行后, 数 据将

被输出到文件系统,通常是

HDFS

2.简述 shuffle过程。

答: ( 1 ) map 端

map

任务产生输出时,基于效率的考虑,输出数据不会直接写到磁盘上,而是先写入一

个缓冲区中, 此缓冲区默认大小为

100MB

,当写入的数据达到缓冲区的阈值(默认为

80%

) 时,

会将缓冲区中的数据溢写(spil)l到磁盘,生成一个文件,在写入磁盘文件之前,会对这部份数

据进行分区, 然后对每一个分区中的数据按键进行排序, 然后写入磁盘中。 随着

map

任务的执行,

可能会产生多个溢写文件, 这些文件在任务结束执行前, 会合并为一个已分区且每一个分区都已

排 序的完整的文件,并保存在本地的磁盘中。

( 2 ) reduce 端

reduce端并不会等待所有map 任务结束再去获取map 端输出的数据, reduce端的一个线程会定

期问询 ApplicationMaste,r一旦有 map 任务结束,reduce端就开始复制数据。 reduce会启动若干复制 线

程,以并行的方式从各个

map

节点复制数据。reduce节点通常不会复制

map

节点整个的输出文件,

而是只复制属于自己的分区数据,复制完成所有

map

的数据后,会将各部份数据再次进行合并,


本文标签: 数据 集群 节点 运行 文件