题量: 35 满分: 100
一. 单选题(共 20 题,60 分)
-
(单选题, 3 分)下面( )负责 HDFS 数据存储。
A. NameNode
B. JobTracker
C. DataNode
D. SecondaryNameNode
我的答案: C 正确答案: C
-
(单选题, 3 分)HDFS 中的 Block 默认保存( )份。
A. 3
B. 2
C. 1
D. 不确定
我的答案: A 正确答案: A
-
(单选题, 3 分)下列( )通常与 NameNode 在一个节点启动。
A. SecondaryNameNode
B. DataNode
C. TaskTracker
D. JobTracker
我的答案: D 正确答案: D
注:Hadoop 1.x
分析:
Hadoop 的集群是基于 Master/Slave 模式。
NameNode 和 JobTracker 属于 Master,DataNode 和 TaskTracker属于 Slave。
master 只有一个,而 slave 有多个。
SecondaryNameNode 内存需求和 NameNode 在一个数量级上,所以通常 SecondaryNameNode(运行在单独的物理机器上)和 NameNode 运行在不同的机器上。
JobTracker 对应于 NameNode
TaskTracker 对应于 DataNode
DataNode 和 NameNode 是针对数据存放来而言的
JobTracker 和 TaskTracker 是对于 MapReduce 执行而言的
-
(单选题, 3 分)Hadoop2.X 版本以后 HDFS 默认 Block Size 大小为( )。
A. 32MB
B. 64MB
C. 128MB
D. 256MB
我的答案: C 正确答案: C
-
(单选题, 3 分)关于 SecondaryNameNode 下面( )是正确的。
A. NameNode 的热备
B. 对内存没要求
C. 帮助 NameNode 合并编辑日志,减少 NameNode 启动时间
D. SecondaryNameNode 应与 NameNode 部署到同一个节点
我的答案: C 正确答案: C
-
(单选题, 3 分)下列( )属性是 hdfs-site.xml 中的配置。
A. dfs.replication
B. fs.defaultFS
C. mapreduce.framework.name
D. yarn.resourcemanager.address
我的答案: A 正确答案: A
常见的hdfs-site.xml配置如下:
<configuration>
<property>
<name>dfs.NameNode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.NameNode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.DataNode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
-
(单选题, 3 分)现有一个安装 2.6.5 版本的 Hadoop 集群,在不修改默认配置的情况下存储 200 个每个 200M 的文本文件,请问最终会在集群中产生( )个数据块(包括副本)。
A. 200
B. 40000
C. 400
D. 1200
我的答案: D 正确答案: D
解析:
Hadoop默认数据块大小为128M。题中1个文件200M将分成2个数据块存储,200个这样的文件需要400个数据块。由于Hadoop中默认1份数据保存3份副本,所以总共产生1200个数据块。
-
(单选题, 3 分)以下( )不是 HDFS 的守护进程。
A. SecondaryNameNode
B. DataNode
C. MRAppMaster/YarnChild
D. NameNode
我的答案: C 正确答案: C
答案解析:
NameNode 是 HDFS 集群的主节点,DataNode 是 HDFS 集群的从节点,SecondaryNameNode 是 HDFS 集群启动的用来给 NameNode 节点分担压力的角色。这个三个服务进程会一直启动着。MRAppMaster/YarnChild 是只有在 YARN集群运行了 MapReduce 程序之后才会启动的进程。
-
(单选题, 3 分)请问以下( )命令组成是错误的。
A. sbin/stop-dfs.sh
B. sbin/hdfs dfsadmin -report
C. bin/hadoop NameNode -format
D. bin/hadoop fs -cat /hadoopdata/my.txt
我的答案: B 正确答案: B
答案解析:
start, stop 相关的命令都在 sbin 中,文件主要以.sh结尾,
hadoop, hdfs, mapred, yarn这些集群使用操作命令都在 bin 目录中
-
(单选题, 3 分)HDFS 集群中的 NameNode 职责不包括
A. 维护 HDFS 集群的目录树结构
B. 维护 HDFS 集群的所有数据块的分布、副本数和负载均衡
C. 负责保存客户端上传的数据
D. 响应客户端的所有读写数据请求
我的答案: C 正确答案: C
答案解析:
NameNode 是 HDFS 的管理节点,DataNode 是 HDFS 集群的工作节点,所以用户上传的数据是由 DataNode 进行保存的。NameNode 是负责保存用户上传到的这些数据的元数据和维护 HDFS 的抽象目录树结构。也会响应客户端的所有读写请求。
-
(单选题, 3 分)HDFS 集群中的 DataNode 的主要职责是( )。
A. 维护 HDFS 集群的目录树结构
B. 维护 HDFS 集群的所有数据块的分布、副本数和负载均衡
C. 负责保存客户端上传的数据
D. 响应客户端的所有读写数据请求
我的答案: C 正确答案: C
答案解析:
NameNode 是 HDFS 的管理节点,DataNode 是 HDFS 集群的工作节点,所以用户上传的数据是由 DataNode 进行保存的。NameNode 是负责保存用户上传到的这些数据的元数据和维护 HDFS 的抽象目录树结构。也会响应客户端的所有读写请求。
-
(单选题, 3 分)MapReduce 的 Shuffle 过程肯定不会执行下面( )操作?
A. 合并
B. 分区
C. 排序
D. 分片
我的答案: D 正确答案: D
答案解析:
MapReduce 编程模型分为 Mapper 和 Reducer 阶段,在 Mapper 和 Reducer 的中间还有一个 Shuffle 阶段。但是 Shuffle 也分为 MapperShuffle 和 ReducerShuffler 两个阶段。这个 Shuffle 非常的重要,而且也是导致 MapReduce 执行效率低的一个重要原因。Shuffle 中的执行顺序是先分区,然后在溢写之前进行排序,最后溢出的多个磁盘文件会进行合并成一个大文件。分片在 Mapper 任务之前。
-
(单选题, 3 分)下面关于 MapReduce 的描述中正确的是( )。
A. MapReduce 程序必须包含 Mapper 和 Reducer
B. MapReduce 程序的 MapTask 可以任意指定
C. MapReduce 程序的 ReduceTask 可以任意指定
D. MapReduce 程序的默认数据读取组件是 TextInputFormat
我的答案: D 正确答案: D
答案解析:
MapReducer 编程模型中,可以没有 Reducer。
MapTask 是由逻辑切片规则决定,虽然可以通过参数进行调整,但是不能随意设置。ReduceTask 数量可以随意设置,但是通常都是和业务挂钩,所以也基本做不到随心所欲的设置,除非是 HashPartitioner 的分区器。
MapReduce 编程模型中的默认数据读取组件是 TextInputFormat 和 LineRecordReader
-
(单选题, 3 分)MapReduce 编程模型中以下组件( )是最后执行的。
A. Mapper
B. Partitioner
C. Reducer
D. RecordReader
我的答案: C 正确答案: C
答案解析:
以上这四个 MapReduce 编程模型中的执行顺序是:RecordReader --> Mapper --> Partitioner --> Reducer
-
(单选题, 3 分)在 MapReduce 中,( )组件是用户不指定也不会有默认的。
A. Combiner
B. OutputFormat
C. Partitioner
D. InputFormat
我的答案: A 正确答案: A
答案解析:
在 MapReduce 编程模型中,Combiner 是可有可无的组件,它的作用就是用来给 MapTask 的结果数据做局部合并以减少 ReduceTask 接收的数据量,以减少网络数据传输。OutputFormat 的默认组件是 TextOutputFormat,InputFormat 的默认组件是 TextInputFormat,Partitioner 的默认实现是 HashPartitioner。
-
(单选题, 3 分)下列( )类型的文件不是 HDFS 集群的元数据存储格式。
A. fsimage
B. edits
C. edits_inprogress
D. blk_000003425
我的答案: D 正确答案: D
答案解析:
D 是存储在 DataNode 节点上的数据块的命名格式。数据块Block缩写blk。
-
(单选题, 3 分)下列关于配置机架感知的相关描述( )不正确。
A. 如果一个机架出问题,不会影响数据读写和正确性
B. 写入数据的时候多个副本会写到不同机架的 DataNode 中
C. MapReduce 会根据机架的拓扑获取离自己比较近的数据块
D. 数据块的第一个副本会优先考虑存储在客户端所在节点
我的答案: B 正确答案: B
答案解析:
HDFS 的副本存放策略中,数据块的第一个副本和第二个副本会存放在不同的机架中,但是第三个副本会优先考虑存放在跟第二个副本相同机架的不同节点中,也有可能存放在跟第一个副本相同机架的不同节点中
-
(单选题, 3 分)Client 端上传文件的时候下列( )正确。
A. 数据经过 NameNode 传递给 DataNode
B. Client 端将文件切分为 Block,依次上传
C. Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制
D. Client 如果上传的时候没有上传成功指定的副本数,则整次上传不成功
我的答案: B 正确答案: B
答案解析:
HDFS 集群在上传数据的时候,请求由 NameNode 响应是没错,但是传输数据到 DataNode 节点的时候是直接 Client 直接和 DataNode 进行通信,而不用先把数据传输到 NameNode 再传送到 DataNode。这样实现会极大的增加 NameNode 节点的负担。
-
(单选题, 3 分)一个 MapReduce 程序中的 MapTask 的个数由( )决定。
A. 输入的总文件数
B. 客户端程序设置的 MapTask 的个数
C. FileInputFormat.getSplits(JobContext job)计算出的逻辑切片的数量
D. 输入的总文件大小/数据块大小
我的答案: C 正确答案: C
答案解析:
MapReduce 编程模型中的 MapTask 的并行度决定机制是由:FileInputFormat.getSplits(JobContext job)决定的。该方法的返回是 List
-
(单选题, 3 分)以下( )组件可以指定对 Key 进行 Reduce 分发的策略。
A. RecordReader
B. Combiner
C. Partitioner
D. FileInputFormat
我的答案: C 正确答案: C
答案解析:
Partitioner 组件就是负责给 MapTask 节点输出的数据进行分发的。 默认的实现是 HashParitioner
二. 多选题(共 5 题,20 分)
-
(多选题, 4 分)关于配置机架感知下面( )正确。
A. 如果一个机架出问题,会影响数据读写
B. 如果一个机架出问题,不会影响数据读写
C. 写入数据的时候会写到不同机架的 DataNode 中
D. MapReduce 会根据机架获取离自己比较近的网络数据
我的答案: BD 正确答案: BCD
-
(多选题, 4 分)Hadoop 可以运行的模式有( )。
A. 单机版
B. 伪分布式
C. 完全分布式
D. 混合分布式(伪分布式+完全分布式)
我的答案: ABC 正确答案: ABCD
-
(多选题, 4 分)关于 HDFS 集群中的 DataNode 的描述不正确的是( )。
A. DataNode 之间都是独立的,相互之间不会有通信
B. 存储客户端上传的数据的数据块
C. 一个 DataNode 上存储的所有数据块可以有相同的
D. 响应客户端的所有读写数据请求,为客户端的存储和读取数据提供支撑
我的答案: AC 正确答案: AC
答案解析:
DataNode 是真正为 HDFS 集群存储数据的。HDFS 集群的数据存储策略是分散+冗余的策略,由此可以看出,一个节点上,如果存储了两个一样的数据块,这样的冗余是没有任何意义的,所以一个节点上是不会存储一个数据块的多个副本的;DataNode 之间是要进行通信的,因为数据上传的时候就是第一个副本节点和第二个副本节点建立连接传输数据,而不是客户端和第二个副本建立连接传送,所以答案是 AC
-
(多选题, 4 分)启动 HDFS 后,jps 能看到的守护进程有( )。
A. DataNode
B. NameNode
C. NodeManager
D. SecondaryNameNode
我的答案: ABD 正确答案: ABD
-
(多选题, 4 分)启动 YARN后,jps 能看到( )这些守护进程。
A. DataNode
B. NodeManager
C. ResourceManager
D. NameNode
我的答案: BC 正确答案: BC
三. 填空题(共 5 题,10 分)
- (填空题, 2 分)负责 HDFS 数据存储的是 。
我的答案: (1) DataNode
正确答案:(1) DataNode;DataNode
- (填空题, 2 分)HDFS 的 Master/Slave 集群,分别是 和 。
我的答案: (1) NameNode (2) DataNode
正确答案: (1) NameNode;NameNode (2) DataNode;DataNode
- (填空题, 2 分)Hadoop 集群采中 Master 节点周期性接收 Slave 节点心跳信号时间间隔是 秒。
我的答案: (1) 3
正确答案: (1) 3
- (填空题, 2 分)combiner 是通过 这个类来定义的。
我的答案: (1) Reducer
正确答案: (1) Reducer;Reducer
- (填空题, 2 分)Hadoop 使用自己的序列化接口名称为 。
我的答案: (1) writable
正确答案: (1) Writable;writable
四. 判断题(共 5 题,10 分)
-
(判断题, 2 分)SecondaryNameNode 应与 NameNode 部署到一个节点。
A. 对
B. 错
我的答案: 错 正确答案: 错
-
(判断题, 2 分)每次启动 Hadoop 都要格式化文件系统。
A. 对
B. 错
我的答案: 错 正确答案: 错
-
(判断题, 2 分)启动 Hadoop 所有进程的命令是 start-all.sh。
A. 对
B. 错
我的答案: 对 正确答案: 对
-
(判断题, 2 分)SecondaryNameNode 是 NameNode 的热备份。
A. 对
B. 错
我的答案: 错 正确答案: 错
-
(判断题, 2 分)修改~/.bashrc 文件保存后,修改的内容能立即生效。
A. 对
B. 错
我的答案: 错 正确答案: 错
解析:要使用
source ~/.bashrc
或者重启Linux才能生效。