逐梦
一、单选题
1、下列各项中,执行流程正确的是:
A.InputFormat-Mapper-Reducer-OutputFormat
B.Mapper-InputFormat-Reducer-OutputFormat
C.InputFormat-Mapper-OutputFormat-Reducer
D.Mapper-InputFormat-OutputFormat-Reducer
【正确答案】A
【答案解析】在MapReduce 的计算过程中,应该是先利用InputFormat对文件进行切片读取数据,然后交给Mapper处理,之后交给Reducer进行规约,最后由OutputFormat来决定输出格式,输出到指定的位置。
2、下列关于跳跃表的说法正确的是:
A.跳跃表适合于查询多而增删少的场景
B.跳跃表是一种典型的以时间换空间的产物
C.跳跃表中新添加的元素一定要提取到上层的跳跃表
D.跳跃表的查询时间复杂度是nlog(n)
【正确答案】A
【答案解析】跳跃表是一种典型的以空间换时间的产物,利用大量的内存来提高查询效率,因此适合于查询多而增删少的场景,因此A正确B错误。在跳跃表中新添加的元素是否提取到上层的跳跃表中要遵循抛硬币原则,所以C错误。跳跃表的查询时间复杂度是log(n),所以D错误。
3、下列关于MapReduce的序列化的说法错误的是:
A.MapReduce之所以要求数据能够被序列化,是因为在计算过程中涉及到数据的存储和传输过程
B.MapReduce的序列化采用的是Java原生序列化机制
C.MapReduce要求序列化的对象中的属性值不能为null
D.MapReduce要求对应的类实现Writable接口之后才能被序列化
【正确答案】B
【答案解析】MapReduce在计算过程中,涉及到spill过程,涉及到MapTask和ReduceTask之间的通信问题,所以要求数据能够被序列化,因此A正确。MapReduce的序列化机制是在AVRO的基础上进行了封装,要求对应的类实现Writable接口,所以B错误,D正确。
4、下列关于Buffer的阐述正确的是:
A.Buffer本质上是利用数组完成数据的存储且针对八种基本类型提供了对应的子类
B.Buffer中有四个重要的位置:position,capacity,mark,limit,其中大小关系为mark<=position<=limit<=capacity
C.Buffer在创建好之后可以随着数据的大小而动态改变
D.Buffer中的flip操作表示重绕缓冲区
【正确答案】B
【答案解析】Buffer底层是利用了数组进行存储,但是针对八种基本类型只提供了七种子类,其中没有针对boolean类型提供子类,所以A错误。在Buffer,mark是标记位,用于标记已经操作的位置,所以不能超过操作位;position是操作位,用于指向要操作的位置,而limit是限制位,用于限定position所能达到的最大位置,所以position<=limit,而capacity是容量位,用于指定容量,在缓冲区创建之初,limit指向容量位,所以B正确。Buffer底层的数组使用final修饰的,所以在Buffer创建好之后容量就不能动态改变了,因此C错误。Buffer中flip表示翻转缓冲区,而重绕缓冲区是rewind操作,所以D错误。
5、下列关于原子广播的说法错误的是:
A.原子广播的主要作用是解决数据的一致性问题
B.原子广播是基于2PC算法进行实现
C.在原子广播中,只要一个follower返回了no给leader,则leader会命令所有的节点都放弃执行这个操作
D.原子广播过程中,能够有效的保证操作提交的顺序性
【正确答案】C
【答案解析】原子广播能够保证所有节点的操作一致从而保证数据的一致性,所以A正确。原子广播是基于了2PC算法进行实现,但是采取了过半性进行改进,所以B正确,C错误。在原子广播过程中,leader接收到操作之后会将操作放入队列发送给follower,所以能够有效的保证操作接收和提交的顺序性,因此D正确。
6、下列关于NIO与BIO的叙述中,说法错误的是:
A.NIO是非阻塞式IO,BIO是阻塞式IO
B.NIO和BIO一样,都是一对一的连接方式
C.NIO基于Channel可以实现双向传输,而BIO是单向传输的
D.NIO适合于高并发短任务场景,而BIO适合于连接少长任务场景
【正确答案】B
【答案解析】NIO是JDK1.4提供的一种同步式非阻塞式IO,BIO是Java提供的一种同步式阻塞式IO,所以A正确。与BIO不同的一点在于,NIO利用Selector进行选择,使用一个或者少量线程处理大量请求,所以NIO是一种一对多的连接方式,所以B错误。NIO中Channel可以实现双向传输,而BIO因为要区分方向来确定是使用输入流还是输出流,所以是单向传输,所以C正确。因为NIO是利用一对多的方式来处理数据,所以如果是长任务场景,则会导致靠后的任务需要等待的事件比较长,所以NIO适合于高并发短任务场景;而因为BIO是一对一的连接,所以如果是高并发场景会导致在服务器端产生的线程量比较多从而加剧服务器的并发压力,所以BIO适合于连接少的长任务场景,所以D正确。
7、在dfs目录中,不包括的子目录是:
A.data
B.name
C.namesecondary
D.secondaryname
【正确答案】D
【答案解析】dfs目录中包含3个子目录:data、name、namesecondary
8、下列关于RPC的说法错误的是:
A.RPC全称是远程过程调用,是一种进程间的通信方式
B.RPC允许程序调用另一个地址空间的过程或函数,而不用程序员显式编码这个远程调用的细节
C.RPC中,一般利用接口作为存根
D.RPC的特点是复杂高效且只能用于特定的场景
【正确答案】D
【答案解析】RPC的特点是简单、通用、高效,所以D错误。
9、下列各项中不属于Shuffle的优化的是:
A.适当增加Combiner过程
B.增大缓冲区
C.增加fetch线程的数量
D.指定sort的方式
【正确答案】D
【答案解析】Shuffle的调优常见的有以下几种方式:调大缓冲区;增大缓冲区阈值;引入combine过程;对final out文件进行压缩;增多fetch的线程数;降低ReduceTask的阈值;提高merge因子
10、Zookeeper中,每一个节点发送的选举信息不包括的内容是:
A.最大事务id
B.选举id
C.逻辑时钟值
D.节点IP
【正确答案】D
【答案解析】选举信息包括:最大事务id,myid(即选举id),逻辑时钟值。
11、下列各项中,关于Zookeeper的节点信息描述正确的是:
A.czxid表示的是节点被修改的事务id
B.cversion表示的是节点被修改的编号
C.dataversion表示的是节点数据的修改次数
D.ephemeralOwner如果为0,则表示当前节点是临时节点
【正确答案】C
【答案解析】cZxid:创建该节点所分配的全局事务idctime:创建时间mZxid:更新该节点数据所分配的全局事务idmtime:更新时间pZxid:子节点的最新事务idcversion:子节点版本,表示对子节点的更改次数dataversion:数据版本,数据每发生一次变化,数据版本增加1aclVersion:ACL的更新次数,实际上是权限更新的次数ephemeralOwner:如果不是临时节点,则此值为0;如果是临时节点,则此值是其会话iddataLength:数据的字节个数numChildren:子节点的个数
12、关于数据仓库和数据库的说法正确的是:
A.两者都是提供了完整的增删改查的能力
B.两个都提供了完整的事务能力
C.两者针对冗余的处理是不同的
D.两者的数据种类都相对单一
【正确答案】C
【答案解析】数据库中数据的种类和来源相对单一,提供了完整的增删改查的能力,且提供了完整的事务能力,但是数据库强调的是避免冗余;数据仓库中数据的种类和来源相对多样,但是只提供了增和查的能力,不支持修改,且一般强调事务,并且在数据仓库中一般会认为的制造冗余(副本)。
13、如果一个Zookeeper集群中,现在的事务id为0x2,此时发生了如下操作:
create /news ‘’
create /news/n01 ‘’
create /log ‘’
set /news ‘’
delete /news/n01
get /news
则news节点的mZxid是:
A.0x5
B.0x6
C.0x7
D.0x8
【正确答案】B
【答案解析】在Zookeeper中,事务id是用于记录全局写操作发生的事务id。而本题中,起始id为2,mZxid表示的是节点数据被修改的事务id,而news节点的数据被修改操作是set /news ‘’,是全局第6个操作,所以事务id为0x6,因此B正确
14、下列关于Yarn的描述正确的是:
A.Yarn的管理结构是ResourceManager直接管理具体的子任务
B.ApplicationMaster如果划分出来5个MapTask以及2个ReduceTask,则会和ResourceManager申请7份资源
C.如果某一个MapTask出现异常退出,则ResourceManager会试图重启这个任务
D.提交的每一个job任务会对应一个ApplicationMaster
【正确答案】D
【答案解析】Yarn的结构是ResourceManager管理ApplicationMaster,ApplicationMaster管理具体的子任务,而当子任务失败的时候,是由ApplicationMaster负责重新启动这个子任务,所以A、C错误。ApplicationMaster在和ResourceManager申请资源的时候是尽量多的申请,所以默认情况下,5个MapTask以及2个ReduceTask会申请17份资源,但是ResourceManager实际上会返回7份资源,所以B错误。
15、关于Kafka的术语,下列说法错误的是:
A.Kafka集群中的每台服务器叫Broker,整个集群由Zookeeper进行管理
B.Kafka采用发布订阅模式,每条消息都要发送到指定的Topic上
C.每个Topic可分为多个Partition,这样可以提高Kafka的并发执行能力
D.Replica用于提高Kafka的扩展性,它分为Leader Replica、Follower Replica
【正确答案】D
【答案解析】Replica的存在是为了保证数据的完整性和可靠性,而不是保证Kakfa的扩展性,器扩展性是由Partition来保证的。因此D错误。
16、下列关于HRegionServer的各个组件描述正确的是:
A.WAL是负责记录日志,采用了局部性原理
B.BlockCache能够有效的保证数据的可靠性
C.目前版本的HBase中,WAL只支持串行写
D.HRegion中,HStore的个数由列族的数量决定
【正确答案】D
【答案解析】WAL负责记录日志,用于保证操作不会丢失,从HBase的0.96版本开始,支持并行写机制,所以A、C错误。BlockCache是读缓存,维系在内存中,采用了局部性原理,所以B错误。
17、下列关于Hadoop的说法正确的是:
A.Hadoop是Apache提供的一套分布式框架
B.Hadoop集群一旦搭建好之后不能动态扩展
C.Hadoop目前的所有版本都是兼容的
D.Hadoop提供的主要功能是存储而不能计算
【正确答案】A
【答案解析】Hadoop是Apache提供的一个开源的、可靠的、可扩展的系统架构,可以利用分布式架构来进行海量数据的存储以及计算。所以A正确,B、D错误。Hadoop目前所有版本中,Hadoop1.0和Hadoop2.0版本是不兼容的,所以B错误。
18、下列各项中,关于SecondaryNameNode的说法正确的是:
A.SecondaryNameNode是NameNode的热备份
B.SecondaryNameNode可以辅助NameNode完成edits文件的滚动
C.如果HDFS集群中不存在SecondaryNameNode,则无法完成edits文件的滚动
D.SecondaryNameNode如果宕机会导致数据丢失
【正确答案】B
【答案解析】SecondaryNameNode只是辅助NameNode进行edits的滚动,但是不能对NameNode进行实时热备,所以A错误,B正确。在HDFS集群中,如果不存在SecondaryNameNode,则edits滚动由NameNode自己完成,所以C错误。因为SecondaryNameNode只是辅助NameNode进行edits的滚动,既不能进行实时热备又不存储具体数据,所以宕机也不会引起数据丢失,因此D错误。
19、下列关于Shuffle说法正确的是:
A.默认情况下,如果一个文件切片是240M,则一定会产生3次的spill过程
B.默认情况下,Spill文件的大小是80M
C.在缓冲区中,数据会进行排序,采用的是快速排序的方式
D.如果溢写文件个数大于等于3个,则在merge过程中一定会进行combine
【正确答案】C
【答案解析】缓冲区的溢写次数和原始数据大小没有关系而是要看MapTask处理之后产生的数据量的大小,所以A错误。Spill文件的大小要考虑序列化因素的影响,所以文件大小不一定是80M,因此B错误。只有在指定了Combiner之后,在merge过程中才可能会产生combine,所以D错误。
20、下列各项中,关于崩溃恢复的说法错误的是:
A.崩溃恢复包含leader丢失之后会选举出新的leader从而保证集群的正常运行
B.崩溃恢复包含节点宕机重启之后能够找回数据
C.崩溃恢复能够有效的保证集群的可用性
D.崩溃恢复中依然存在单点故障
【正确答案】D
【答案解析】崩溃恢复主要包含两个方面的内容:leader丢失之后的再选举以及数据的找回,所以A、B正确。因为崩溃恢复保证leader丢失之后会再选举出一个新的leader,所以不会因为一个leader丢失就导致集群无法服务,有效的避免了单点故障,保证了集群的可用性,所以C正确,D错误。
21、下列关于MapReduce的分区机制,说法正确的是:
A.在MapReduce中,分区的作用是将数据进行分门别类
B.一个分区可以对应多个ReduceTask
C.分区的数量不影响结果文件的数量
D.默认情况下,因为代码中没有显式的指定分区类,所以是不进行分区的
【正确答案】A
【答案解析】在MapReduce中,要求一个分区对应一个ReduceTask,而一个ReduceTask会产生一个结果文件,所以B、C错误。在默认情况下,如果不指定,则MapReduce中的分区类用的是HashPartitioner,所以D错误。
22、下列关于Flume的Channel中,描述错误的是:
A.Memory Channel是内存通道,特点是读写速度快,但是不可靠
B.File Channel是文件通道,特点是读写速度慢,但是可靠
C.JDBC Channel支持MySQL、Oracle等数据库
D.Memory Spillable Channel是内存溢出通道,在存储数据的时候先将数据存入内存,如果内存已满再放入磁盘
【正确答案】C
【答案解析】JDBC Channel目前只支持Derby数据库。
23、下列关于机架感知策略,说法错误的是:
A.HDFS中所谓的机架指的是逻辑机架而不是物理机架
B.HDFS中的机架本质上是一个映射,可以利用Shell或者Python等脚本实现
C.实际开发中,可以将一个或者多个物理机架上的节点映射在一个逻辑机架上
D.HDFS中,不能将一个物理机架上节点映射在多个逻辑机架上
【正确答案】D
【答案解析】因为HDFS中的机架本质上是一个映射,所以可以将一个物理机架上的节点映射到不同的逻辑机架上,因此D错误。
24、在Flume中,如果需要对传输的数据进行一些数据的处理和修改,则需要使用:
A.Selector
B.Interceptor
C.Processor
D.Filter
【正确答案】B
【答案解析】Selector负责数据的分发方式是复制模式或者是路由模式,不能改变数据,所以A错误。Interceptor中提供了正则格式允许对数据进行改动,所以B正确。Processor是输出方式的指定,决定是采用优先输出还是负载均衡方式,不能改变数据,所以C错误。
25、下列关于红黑树的说法正确的是:
A.红黑树本质上是一棵二叉树
B.红黑树适合于增删多而查询少的场景
C.红黑树的查询时间复杂度是nlog(n)
D.在红黑树中,新添的节点的颜色可以是黑色的
【正确答案】A
【答案解析】红黑树是一棵自平衡二叉查找树的体现,是二叉树的一种,所以A正确。因为在红黑树中新添节点可能会导致红黑树自平衡的修正,但是查找却相对快速,所以红黑树适合于查询多而增删少的场景,因此B错误。红黑树的查询时间复杂度是Olog(n),所以C错误。在红黑树中,新添的节点一定是红节点,因为如果是黑节点则会导致黑节点的高度不一致,所以D错误
26、关于Zookeeper的选举机制,说法错误的是:
A.所有的Zookeeper节点在选举刚开始的时候会选举自己成为leader
B.选举过程中会先比较最大事务id,如果最大事务id一致再比较myid
C.在刚开始选举的时候,所有的节点都是follower状态
D.如果一个节点想要成为leader,则这个节点需要胜过至少一半的节点才能选举成功
【正确答案】C
【答案解析】在Zookeeper中,每一个节点刚开始都会选举自己称为leader并且发送自己的选举信息,而此时所有的节点都处于looking/voting状态,在收到选举信息之后会进行比较,先比较最大事务id,最大事务id一致则比较myid,而最后称为leader的节点需要满足过半性,因此A,B,D正确,C错误。
27、下列关于小文件的说法错误的是:
A.在HDFS上存储小文件会产生大量元数据占用大量内存
B.每一个小文件会对应一个切片,则大量小文件会导致产生大量的MapTask
C.目前对于小文件的处理手段只有合并
D.Hadoop Archive是Hadoop提供的一种原生的处理小文件的方式
【正确答案】C
【答案解析】目前市面上行对于小文件的处理手段有2种:合并和打包
28、下列关于NameNode的职能描述错误的是:
A.管理DataNode
B.存储元数据
C.对外接收操作
D.对数据进行切块
【正确答案】D
【答案解析】对数据进行切块是在客户端进行而不是NameNode负责,所以D错误。
29、在Shuffle的merge过程中进行排序使用的排序方式是:
A.冒泡排序
B.归并排序
C.快速排序
D.插入排序
【正确答案】B
【答案解析】merge过程中的排序是将局部有序数据变成整体有序,而冒泡、快速、插入排序都是讲杂乱数据整理成有序数据,效率较低
30、如果一个文件是650M,则在默认情况下,对应的Block和Split的个数为:
A.5,5
B.5,6
C.6,5
D.6,6
【正确答案】C
【答案解析】在默认情况下,Block和Split的大小都是128M,但是需要注意的是在切片过程中由一个切片阈值1.1的问题,所以应该是产生6个Block以及5个Split
二、多选题
31、下列关于线程池的说法错误的是:
A.线程池的意义是提高线程的利用率,减少线程的创建和销毁
B.利用线程池可以使服务器端的并发压力降低从而提高服务器的并发性能
C.在线程池中,即使核心线程未满,但是如果有空闲的核心线程,则新来的请求会交给空闲的核心线程
D.核心线程在使用完成之后会被销毁
【正确答案】C,D
【答案解析】线程池的目的是为了通过减少线程的创建和销毁从而提高线程的利用率,并且核心线程在使用完成之后不会被销毁而是会等待下一个请求,所以A正确,D错误。由于线程池的存在,是的服务器端可以利用少量线程去处理大量请求,所以能够一定程度的提高服务器的并发性能,因此B正确。在线程池中,如果核心线程未满,即使有空闲的核心线程,新来的请求也会在线程池中创建一个对应的核心线程而不是交给空闲的核心线程,直到所有的核心线程被创建满为止,所以C错误。
32、Hive中,关于索引的说法正确的是:
A.Hive中的索引需要手动建立
B.如果在Hive表中新添加了数据,会自动建立索引
C.在删除索引表的时候会删除原数据表
D.Hive中可以根据指定的字段建立索引
【正确答案】A,C,D
【答案解析】在Hive中因为不存在主键的概念,所以不会自动建立索引需要手动建立索引,而在建立索引的时候需要指定字段,因此A、D正确。如果向Hive中新添了数据,那么需要手动更新索引表,所以B错误。
33、下列关于Zookeeper的说法正确的是:
A.Zookeeper的节点个数一般为奇数个
B.在Zookeeper集群中,如果新添加的节点的myid比leader的myid要大,那么新添加的节点会称为leader
C.Zookeeper中的过半性能够有效防止脑裂
D.在Zookeeper中,每一个leader都会产生一个递增的编号
【正确答案】A,C,D
【答案解析】Zookeeper的节点个数一般为奇数个,目的是为了使Zookeeper集群在操作过程中容易满足过半性,所以A正确。在Zookeeper集群中,一旦选举出来leader,那么后续添加的节点的事务id以及myid无论是多少,都会称为follower,所以B错误。如果集群产生了分裂,而集群中剩余节点个数不过半数的时候,那么这些节点不选举也不服务,能够有效的防止脑裂,所以C正确。每一个leader产生之后都会分配一个递增的编号,称之为epochid,所以D正确。
34、以下Flume启动指令的参数中,说法正确的是:
A.–conf,简写为–c,表示启动的配置文件所在的路径
B.–name,简写为-n,表示指定agent的名称
C.–file,简写为-f,表示指定要执行的格式文件
D.-Dflume.root.logger,可以简写为-Dlog,表示指定日志格式
【正确答案】A,B,C
【答案解析】- - Dflume.root.logger不能简写,用于表示日志信息输出的方式。
35、大数据的特点包括:
A.数据量大
B.数据增长速度快
C.数据价值密度大
D.数据的真实性
【正确答案】A,B,D
【答案解析】大数据的特点包括:数据量大,数据的种类和样式多,数据增长速度快,数据价值密度低,数据的真实性,连通性,以及动态性,可视化和合法性
36、下列关于job执行流程的准备阶段中,包含的内容有:
A.检查输入输出
B.计算切片
C.设置缓存存根
D.分配MapTask和ReduceTask
【正确答案】A,B,C
【答案解析】Job在准备阶段会包含以下5个操作:检查输入输出路径,提交jar包和配置,计算切片,设置缓存存根以及提交提交jar包
37、Zookeeper集群中,节点状态包括:
A.voting
B.leader
C.follower
D.standalone
【正确答案】A,B,C
【答案解析】在Zookeeper集群中,节点状态包括4种:looking/voting、follower、leader、observer,而standalone是Zookeeper的单机模式中的节点状态而不是集群中的节点状态,所以A,B,C正确,D错误。
38、ZAB协议包括以下:
A.原子广播
B.轮询调度
C.崩溃恢复
D.实时监控
【正确答案】A,C
【答案解析】ZAB协议是针对Zookeeper所专门设计的一套用于原子广播和崩溃恢复的协议
39、下列关于MapReduce的排序机制,说法正确的是:
A.在MapReduce中,默认的会对键进行排序
B.MapReduce中键所对应的类需要实现WritableComparable接口
C.如果两个键的比较结果为0,则两个键会被认为是同一个键,从而导致对应的值分到了一个组
D.在排序过程中,只能对单个属性进行排序
【正确答案】A,B,C
【答案解析】MapReduce中,允许对多个属性进行排序,此时称之为二次排序,所以D错误。
40、下列各项中是Agent的组件的是:
A.Source
B.Channel
C.Selector
D.Sink
【正确答案】A,B,D
【答案解析】Agent一共包含3个组件:Source,Channel和Sink,其中Source中包含子组件Selector和Interceptor
41、Hadoop中包含的模块有:
A.MapReduce
B.Ozone
C.HDFS
D.AVRO
【正确答案】A,B,C
【答案解析】Hadoop目前包含的模块有HDFS,MapReduce,YARN,Ozone以及Submarine
42、下列关于HDFS的写流程,说法错误的是:
A.客户端在写入数据的时候,会选择响应速度最快的节点来进行读取,即“最近”的节点
B.客户端需要自己连接对应的节点写入全部的三个副本
C.数据在写完之后就不能再进行修改了,但是可以继续追加
D.客户端在写完全部数据之后,会通知NameNode关闭文件
【正确答案】A,B
【答案解析】客户端在选择最近的节点,指的是网络拓扑距离最近,所以A错误。客户端在写入的时候只连接一个节点写入一个副本,其余副本由节点之间自动通过pipeline进行备份,所以B错误。HDFS支持的是一次写入多次读取,不支持修改但是支持追加写入,所以C正确。
43、下列关于Flume中EventDrivenSource和PollableSource的说法正确的是:
A.EventDrivenSource是主动型Source
B.PollableSource是被动型Source
C.EventDrivenSource需要自定义线程去获取数据
D.PollableSource已经提供了线程主动拉取数据
【正确答案】C,D
【答案解析】EventDrivenSource是被动型Source,需要自定义线程去获取数据;PollableSource是主动型Source,已经提供了线程去拉去数据。
44、下列关于MapReduce中的Combiner机制阐述正确的是:
A.Combiner能够有效的提高MapReduce的执行效率
B.Combiner是保证结果不变从而减少数据总量
C.Combiner的执行逻辑往往和Reducer是相同的
D.Combiner适合于任何场景下的MapReduce
【正确答案】A,B,C
【答案解析】Combiner是将相同的键对应的值提前进行了合并,减少了shuffle过程中缓冲区和磁盘的交互,所以能够有效的提高效率,因此A正确。Combiner适合于进行求和、求最值等场景,但是如果进行求平均之类的运算,则不适合,所以D错误。
45、下列关于数据倾斜的说法错误的是:
A.数据倾斜本质原因是因为Shuffle过程中分区规则的不合理
B.数据倾斜只会发生在Reduce端
C.目前为止,对于Reduce端的数据倾斜常用的解决方案为:二阶段聚合或者是join
D.数据倾斜会导致MapReduce过程中产生慢任务从而降低效率
【正确答案】A,B
【答案解析】试题解析 数据倾斜的本质原因是因为数据本身就是不均匀的,具有倾斜特性,所以A错误。数据倾斜在Map端以及Reduce端都可能发生,所以B错误。
46、下列关于observer的说法错误的是:
A.observer的特点是不参与选举不参与投票也不监听结果
B.如果一个集群中有15个节点,其中有8个observer,则称为leader的节点需要胜过至少3个节点
C.设置observer可以减少网络对投票结果的影响
D.如果一个集群中有21个节点,其中有14个observer,那么如果有12个observer宕机,则集群就不会在对外提供服务
【正确答案】A,D
【答案解析】observer的忒但是不参与投票不参与选举,但是会监听投票以及选举结果,根据结果执行对应的操作,所以A错误。在Zookeeper集群中,observer不参与投票和选举,因此observer的存活与否不影响集群是否对外操作,而D选项中因为宕机的是12个observer,所以不影响结果,因此D错误。一个节点想要成为leader,只要在参与投票的节点中胜过一半就可以;所以B选项中实际上只有7个节点参与投票,而leader只要胜过3个节点(加上自己本身是4个几点恰好过半)就可以成功,因此B正确。observer适用于网络状态不好的情况下,能够减少因为网络而带来的问题,所以C选项正确。
47、下列关于HDFS的读取流程,说法正确的是:
A.在读取过程中,NameNode在收到客户端的请求之后,会从DataNode中读取数据然后返回给客户端
B.客户端在读取数据的时候,会选择响应速度最快的节点来进行读取,即“最近”的节点
C.客户端在读取完一个Block之后,会进行checksum的验证
D.当读取完最后一个Block之后,客户端会通知NameNode关闭文件
【正确答案】C,D
【答案解析】在读取过程中,NameNode在收到请求之后给客户端返回的是Block地址而不是读取的数据,所以A错误。客户端在选择最近的节点,指的是网络拓扑距离最近,所以B错误。
48、下列关于NIO的说法错误的是:
A.因为NIO是非阻塞式IO,所以NIO用于数据传输的Channel默认是非阻塞的
B.NIO中的Selector是面向通道进行选择,且要求通道非阻塞
C.NIO中,利用Selector可以实现一对多的连接
D.NIO中的Selector适用于长任务场景
【正确答案】A,D
【答案解析】虽然NIO是同步非阻塞式IO,但是NIO中的Channel默认是阻塞的,需要通过configureBlocking方法来手动设置为非阻塞,所以A错。NIO中要求Selector所选择的通道必须是非阻塞的,不然无法完成选择过程以及一对多的连接过程,所以B,C正确。如果利用NIO来完成长任务,会导致后续的任务等待时间过程从而产生任务积压,因此NIO适合于高并发短任务场景而不是长任务场景,所以D错误。
49、下列各项中说法正确的是:
A.在执行hadoop namenode -format之后,hadoop.tmp.dir指定的路径下会产生dfs目录
B.在格式化完成之后,name目录中会产生fsimage文件和edits文件
C.在HDFS中,接收的每一个操作都会分配一个全局递增的编号,称之为是事务id
D.edits_inprogress文件的作用是记录当前正在执行的事务文件。后面的编号是以上一次txid+1来命名的
【正确答案】A,D
【答案解析】hadoop namenode -format是格式化NameNode的指令,在格式化之后,会在指定的路径下产生dfs目录以及dfs的子目录name目录,在name的current目录中此时会包含fsimage、VERSION以及seen_txid三个文件,而在启动之后才会产生edits文件,所以A正确,B错误。在HDFS中,会对每一个接收的写操作分配一个全局递增的事务id,但是读操作不会产生事务id,所以C错误。
50、下列关于删除流程的说法错误的是:
A.客户端在收到ack信号之后,就表示数据此时已经真正从HDFS上移除了
B.在DataNode发送心跳之后,NameNode会进行心跳响应,要求删除对应数据
C.DataNode在接收到心跳响应之后才会删除对应的Block
D.客户端可以要求NameNode删除指定文件中的某段数据
【正确答案】A,D
【答案解析】NameNode在收到请求之后会记录操作修改内存中的元数据,然后给客户端返回ack表示删除成功给,此时只是修改了元数据但是没有真正删除Block,所以A错误。如果要求删除文件中的某段数据这是在对文件内容进行修改,但是HDFS中支持的是一次写入多次读取,不支持修改,所以D错误。