Hadoop自测题及参考答案

单选题
1、与其他几项不同的是
A. Mesos
B. Mongodb
C. Corona
D. Borg
E. YARN

注:其他几项都是资源统一管理系统或者资源统一调度系统,而 Mongodb一种非关系型数据库。

2、[java基础] 以下不属于线程安全的数据结构是
A. HashMap
B. HashTable
C. CopyOnWriteArrayList
D. ConcurrentHashMap

3、hadoop2.x采用什么技术构建源代码
A. ant
B. ivy
C. maven
D. makefile

4、Apache Tez是由哪个公司首先开发的
A. Cloudera
B. MapR
C. Hortonworks
D. Intel

5、DistributedFileSystem调用create方法后的返回类型是
A. FSDataOutputStream
B. DataOutputStream
C. DFSOutputStream
D. FSDataInputStream

6以下哪种不是hadoop对于小文件的处理方式
A. SequenceFile
B. CombinedInputFormat
C. Archive
D. MapFile
E. ByteBuffer

7、关系型数据库与HDFS之间相互数据迁移的工具是
A. distcp
B. fsck
C. fastcopy
D. sqoop

8、SecondaryNamenode的作用是
A. 监控Namenode
B. 管理Datanode
C. 合并fsimage和editlogs
D. 支持Namenode HA

9、[linux基础] 表示主机名与IP地址映射关系的文件是
A. /etc/host.conf
B. /etc/hostname
C. /etc/hosts
D. /etc/resolv.conf

10、以下属于oozie作用的是
A. 作业监控
B. 日志收集
C. 工作流调度
D. 集群管理

11、hadoop处在云计算三层模型中哪一层
A. PaaS
B. SaaS
C. IasS
D. 介于IaaS和PaaS之间

12、以下哪个数据结构是java中对文件读取速度最快的
A. RandomAccessFile
B. FileChannel
C. BufferedInputStream
D. FileInputStream

FileChannel 用于读取、写入、映射和操作文件的通道。多个并发线程可安全地使用文件通道。
RandomAccessFile 此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。
BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。
FileInputStream从文件系统中的某个文件中获得输入字节。

13、默认的Namenode web管理端口是
A. 50070
B. 8020
C. 50030
D. 22

14、Client端与Namenode之间的RPC通信协议是
A. ClientNamenodeProtocol
B. NamenodeProtocl
C. DatanodeProtocol
D. ClientProtocol

15、FSDataOutputStream实现了哪个接口
A. DataOutputStream
B. FilterOutputStream
C. OutputStream
D. Syncable

public class FSDataOutputStream extends DataOutputStream implementsSyncable, CanSetDropBehind{}

16、关于DirectByteBuffer和ByteBuffer描述错误的是
A. ByteBuffer在heap上分配内存
B. DirectByteBuffer的字节访问速度比ByteBuffer块
C. ByteBuffer需要通过wrap方法来封装字节数组
D. DirectByteBuffer由jvm负责垃圾回收

ByteBuffer需要通过wrap方法来封装字节数组,ByteBuffer在heap上分配内存,DirectByteBuffer的字节访问速度比ByteBuffer快。
ByteBuffer由JVM负责垃圾回收(DirectByteBuffer不是)

17、没有提供FUSE功能的分布式文件系统有
A. lustre
B. glusterfs
C. fastdfs
D. moosefs

mogileFS:Key-Value型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小图片,效率相比mooseFS高很多。
fastDFS:国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能。
mooseFS:支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多。
glusterFS:支持FUSE,比mooseFS庞大
ceph:支持FUSE,客户端已经进入了linux-2.6.34内核,也就是说可以像ext3/rasierFS一样,选择ceph为文件系统。彻底的分布式,没有单点依赖,用C编写,性能较好。基于不成熟的btrfs,其本身也非常不成熟。
lustre:Oracle公司的企业级产品,非常庞大,对内核和ext3深度依赖。
NFS:老牌网络文件系统。

18、下面哪个类的声明是正确的
A. abstract final class A{}
B. abstract private B(){}
C. protected private C;
D. public abstract class D{}

19、FileSystem类是一个
A. 接口
B. 抽象类
C. 普通类
D. 内部类

public abstract class FileSystemextends Configuredimplements Closeable{}


20、使用javap命令的哪个参数可以查看java内部类型的签名
A. -p
B. -l
C. -s
D. -c

21、使用snappy-java,需要的native库是
A. libhadoop.so
B. libsnappyjava.so
C. libsnappy.so
D. libjavasnappy.so

22、下列压缩算法支持splitable,能作为mapreduce输入的是
A. deflate
B. gzip
C. bzip2
D. snappy

23、禁用本地文件系统的校验功能可以设置属性是
A. fs.file.impl
B. fs.hdfs.impl
C. fs.local.impl
D. fs.raw.impl

设置fs.file.impl的值为org.apache.hadoop.fs,RawLocalFileSystem

24、linux默认情况下,一个进程最多能打开多少文件
A. 64
B. 128
C. 512
D. 1024

25、linux中使用tar归档命令,以下哪个命令可以列出详细列表
A. tar -cv
B. tar -r
C. tar -cvf
D. tar –t

t 列出档案文件的内容,查看已经备份了哪些文件。

26、和网络字节序一样的字节序是
A. Big Endian
B. Little Endian
C. BigLittle
D. Misc

不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序,最常见的有两种:
1. Little endian:将低序字节存储在起始地址
2. Big endian:将高序字节存储在起始地址
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian排序方式

27、Namenode发送给Datanode什么命令可以让Datanode对坏块进行删除
A. DNA_TRANSFER
B. DNA_FINALIZE
C. DNA_INVALIDATE
D. DNA_RECOVERBLOCK

28、数据节点通过运行什么后台线程来检测是否有数据损坏
A. DataXceiver
B. ReplicationManager
C. BlockPoolManager
D. DataBlockScanner


29、以下正确的语句是
A. new InputStreamReader(new FileReader(“data”))
B. new InputStreamReader(new BufferedReader(“data”))
C. new InputStreamReader(“data”)
D. new InputStreamReader(System.in)

30、以下哪个Set**默认是排序**的
A. HashSet
B. TreeSet
C. AbstractSet
D. LinkedHashSet

31、以下描述正确的是
A. Comparable在java.util.*包下
B. Comparator用于集合内对数据的比较
C. WritableComparable继承了WritableComparator
D. 实现了Comparable接口的类需要实现compareTo方法

32、以下描述正确的是
A. NullWritable可以用来表示一个空的Writable对象
B. fix()方法是MapFile的静态成员方法
C. Text的值不可以被修改
D. WritableComparator继承了WritableComparable

This method attempts to fix a corrupt MapFile by re-creating its index.
public static long fix(参数省略) {}

33、以下7层OSI网络模型按照正确顺序排序的是
A. 物理层 数据链路层 传输层 网络层 会话层 表示层 应用层
B. 物理层 数据链路层 会话层 网络层 传输层 表示层 应用层
C. 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
D. 网络层 传输层 物理层 数据链路层 会话层 表示层 应用层

34、以下描述错误的是
A. MapFile的key是Writable类型
B. SequenceFile中如果采用记录压缩方式,key是不压缩的
C. SequenceFile.Writer类支持append方法
D. SequenceFile中如果采用块压缩方式,key也要被压缩

35、以下说法的错误是
A. 使用Writable序列化方法不满足可扩展的需求
B. BytesWritable是不可变长度的
C. VIntWritable是可变长度的
D. 使用protocobuffer需要自定义消息类型

36、设计模式中注重接口或抽象与具体实现分离的是
A. Bridge模式
B. Facade模式
C. Proxy模式
D. Adapter模式

37、以下描述正确的是
A. LinkedHashMap.keySet()默认是按降序排序的
B. Hashtable.keySet()默认是按升序排序的
C. HashMap.keySet()默认是按乱序排序的
D. TreeMap.keySet()默认是顺序排序的

TreeMap.keySet()默认是升序排序的
LinkedHashMap.keySet()默认是按顺序排序的

38、DAO模式一般采用以下哪种设计模式
A. Proxy模式
B. Factory模式
C. Prototype模式
D. Observer模式

—2015.6.8


39、一个作业的map个数是怎么确定的
A. 属性mapred.map.tasks设定
B. JobTracker计算得出
C. InputSplit分片的个数
D. TaskTracker通过配置map的个数

40、TaskTracker与JobTracker之间的通信协议是
A. JobSubmissionProtocol
B. ClientProtocol
C. TaskUmbilicalProtocol
D. InterTrackerProtocol

在Hadoop中JT(JobTracker)与TT(TaskTracker)之间的通信是通过心跳机制完成的。JT实现InterTrackerProtocol协议,该协议定义了JT与TT之间的通信机制——心跳。心跳机制实际上就是一个RPC请求,JT作为Server,而TT作为Client,TT通过RPC调用JT的heartbeat方法,将TT自身的一些状态信息发送给JT,同时JT通过返回值返回对TT的指令。

41、默认的mapreduce输入格式是
A. TextInputFormat
B. KeyValueTextInputFormat
C. NLineInputFormat
D. SequenceFileInputFormat

42、以下描述错误的是
A. SequenceFile可以用来作为小文件的合并存储容器
B. TextInputFormat的key是LongWritable类型的
C. CombineFileInputFormat是抽象类
D. TextInputFormat的key是指该记录在文件中的行号

43、以下关于新旧mapreduce API的描述错误的是
A. 新API放在org.apache.hadoop.mapreduce包中,而旧API则是放在org.apache.hadoop.mapred中
B. 新API倾向于使用接口方式,而旧API倾向于使用抽象类
C. 新API使用Configuration,而旧API使用JobConf来传递配置信息
D. 新API可以使用Job对象来提交作业

44、map中环形缓冲区的大小可以由以下哪个属性确定
A. io.sort.spill.percent
B. io.sort.factor
C. io.sort.mb
D. mapred.reduce.parallel.copies

每个map都有一个环形缓冲区,默认大小100M,大小可以由属性io.sort.mb来修改。
一旦内存缓冲区达到一个溢写阀值(io.sort.spill.percent),就会新建一个溢写文件。
io.sort.factor控制着一次最多可以合并多少个分区。

45、以下描述错误的是
A. 输入分片InputSplit其实是对数据的引用
B. MultipleInputs可以设置多个数据源以及它们对应的输入格式
C. 可以通过重载isSplitable()方法来避免文件分片
D. ReduceTask需要等到所有的map输出都复制完才进行Merge

46、Task与TaskTracker直接的通信协议是
A. JobSubmissionProtocol
B. ClientProtocol
C. TaskUmbilicalProtocol
D. InterTrackerProtocol

InterDatanodeProtocol:Datanode内部交互的接口,用来更新block的元数据;
InnerTrackerProtocol:TaskTracker与JobTracker交互的接口,功能与DatanodeProtocol相似;
JobSubmissionProtocol:JobClient与JobTracker交互的接口,用来提交Job、获得Job等与Job相关的操作;
TaskUmbilicalProtocol:Task中子进程与母进程交互的接口,子进程即map、reduce等操作,母进程即TaskTracker,该接口可以回报子进程的运行状态(词汇扫盲: umbilical 脐带的,关系亲密的) 。

—2015.6.11


47、以下哪个组件可以指定对key进行Reduce分发的策略?
A. RecordReader
B. Combiner
C. Partitioner
D. FileInputFormat

48、以下描述正确的是
A. 只要设置了job.setCombinerClass(),那么Combiner函数一定会被执行
B. LineRecordReader类内部成员变量end变量是指这个输入分片的位置
C. M/R集群中Map的数量可以设置
D. M/R集群中Reduce的数量可以设置

49、在NameNode解决方案中,以下哪种方案不可以用来存储元数据信息
A. QJM
B. Bookeeper
C. NFS
D. Zookeeper

BookKeeper是Apache ZooKeeper项目的一个子项目。它是一个用来可靠地记录流数据的系统,主要用于存储WAL(Write Ahead Log)。我们知道,Hadoop Namenode用来存储HDSF集群的元数据,其中存在一个用于写就花数据的EditLog文件和一个存在于内存中的FsImage镜像,每当客户端与HDFS集群交互时,对于集群中数据的变更都会记录在Namenode的EditLog文件中,然后再将该变更同步到内存的FsImage镜像上。
在BookKeeper中,服务节点(多个)称为Bookie,日志流(Log Stream)称为Ledger,每个日志单元(如一条记录)被称为Ledger条目。一组服务节点Bookie主要存储Ledger,Ledger的类型非常复杂多样,那么可能某一个Bookie节点可能发生故障,然而只要我们的BookKeeper系统的多个服务节点Bookie存储中存在正确可用的节点,整个系统就可以正常对外提供服务,BookKeeper的元数据存储在ZooKeeper中(使用ZooKeeper存储的只是元数据,实际日志流数据存储在Bookie中)。

50、在M/R系统中,考虑以下情况: HDFS采用默认数据块大小(64M); InputFormat采用的是FileInputFormat; 现在有三个文件大小分别是64K,65M和127M,那么会有几个map任务产生?
A. 3个
B. 4个
C. 5个
D. 6个

—2015.6.14


51、以下描述正确的是
A. 计数器的值需要在多个任务之间传递
B. 计数器的值在job运行过程中是不稳定的
C. 枚举类型计数器比字符串类型计数器更加灵活
D. 计数器每次增加的值是1

计数器是一个全局变量。

52、以下描述错误的是
A. 一旦改变了分布式缓存里面的数据,就会自动同步到其他缓存节点
B. 分布式缓存里的内容是在Map任务执行之前被分发到其他节点的
C. 分布式缓存可以通过命令行的方式提交缓存文件
D. 分布式缓存需要用在Map端的连接操作

53、执行一个job,如果这个job的输出路径已经存在,那么程序会
A. 覆盖这个输出路径
B. 抛出警告,但是能够继续执行
C. 抛出一个异常,然后退出
D. 创建一个新的输出路径

54、以下哪个**不是**JobTracker的作用?
A. 从JobClient端接收job
B. 分配任务给TaskTracker
C. 接收来自TaskTracker的heartbeart
D. 创建每个TaskTracker上的slot

TaskTracker首先创建一个TaskTrackerStatus对象,其中包含有TaskTracker的各种信息,比如,map slot的数目,reducer slot的数目,TaskTracker所在的主机名等信息。然后,对TaskTracker的空闲的slot以及磁盘空间进行检查,如果满足相应的条件时,最终就会通过JobClient(为JobTracker的代理)将心跳信息发送给JobTracker,并得到JobTracker的响应HeartbeatResponse。(hadoop1.x)

55、Hadoop pipes编程方式使用哪种进程间通信方法?
A. Socket
B. MMap
C. Signal
D. MsqQueue

Hadoop pipes允许用户使用C++语言进行MapReduce程序设计;它采用的主要方法是将应用逻辑相关的C++代码放在单独的进程中,然后通过Socket让Java代码与C++代码通信。

56、map输出记录数计数器是属于哪个类别的计数器
A. Map-Reduce Framework
B. FileSystem Counters
C. Job Counters
D. File Output Format Counters

File System Counters    FILE: Number ofbytesread=226    FILE: Number ofbytes written=873182    FILE: Number ofread operations=0    FILE: Number of large read operations=0    FILE: Number ofwrite operations=0    HDFS: Number ofbytesread=2610    HDFS: Number ofbytes written=215    HDFS: Number ofread operations=43    HDFS: Number of large read operations=0    HDFS: Number ofwrite operations=3Job Counters    Launched map tasks=10    Launched reduce tasks=1    Data-local map tasks=10    Total time spent by all maps in occupied slots (ms)=30053    Total time spent by all reduces in occupied slots (ms)=3246Map-Reduce Framework    Map input records=10    Map output records=20----------------    Map output bytes=180    Map output materialized bytes=280    Input splitbytes=1430    Combine input records=0    Combine output records=0    Reduce input groups=2    Reduce shuffle bytes=280    Reduce input records=20    Reduce output records=0    Spilled Records=40    Shuffled Maps =10    Failed Shuffles=0    Merged Map outputs=10    GC time elapsed (ms)=257    CPU time spent (ms)=7820    Physical memory (bytes) snapshot=2836697088    Virtual memory (bytes) snapshot=9740886016    Total committed heap usage (bytes)=2210988032Shuffle Errors    BAD_ID=0    CONNECTION=0    IO_ERROR=0    WRONG_LENGTH=0    WRONG_MAP=0    WRONG_REDUCE=0File Input Format Counters    Bytes Read=1180File Output Format Counters    Bytes Written=97

2015.6.16


57、HBase表中每个cell的多版本是通过什么表示的
A. timestamp
B. rowkey
C. blockid
D. cellid

58、以下描述错误的是
A. hadoop streaming使用标准输入输出方式来传递数据
B. hadoop pipes编程模式支持脚本语言开发
C. Simple模式可以限制一个用户的task向其他用户的task发送kill信号
D. Region是hbase中实现负载均衡的最小单元

用户提交作业的每个task均是以用户身份启动的,这样,一个用户的task便不可以向TaskTracker或者其他用户的task发送操作系统信号,对其他用户造成干扰。

59、hbase中的Compaction过程发生在什么时候
A. MemStore发生flush的时候
B. HLog大小达到一定阈值的时候
C. StoreFile文件个数达到一定阈值的时候
D. HFile写入HDFS的时候

compaction是将多个HFile合并为一个HFile操作。进行compaction有如下几个作用:减少HFile文件的个数,HFile减少可能提高读取性能,清除过期和删除数据。

60、以下对hbase的描述正确的是
A. regionserver负责对多个region实现负载均衡
B. ROOT表可以有多个region
C. StoreFile是HFile的底层实现
D. HLog是一个实现了Write Ahead Log的类

Master为Region server分配region,负责Region server的负载均衡。
-ROOT-表最多只有一个region。
每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类。

61、以下对hbase的描述错误的是
A. 当StoreFile的大小达到一定阈值的时候就会发生spilt操作
B. HFile格式中的Magic内容放的就是一些随机数字
C. ROOT表的存放位置可以通过询问HMaster进程得到
D. META表可以有任意多的region

Magic内容就是一些随机数字,目的是防止数据损坏。Magic Number用来做安全check。
StoreFile是只读的,一旦创建后就不可以再修改。因此Hbase的更新其实是不断追加的操作。当一个Store中的StoreFile达到一定的阈值后,就会进行一次合并(major compact),将对同一个key的修改合并到一起,形成一个大的StoreFile,当StoreFile的大小达到一定阈值后,又会对 StoreFile进行分割(split),等分为两个StoreFile。

你可能感兴趣的:(Hadoop)