面试题以及答案

1. 下面哪一个程序负责 HDFS 数据存储。答案C datanodenode

a)NameNode
b)Jobtracker
c)Datanode 
d)secondaryNameNode
e)tasktrackerios

2. HDfS 中的 block 默认保存几份? 答案A默认3分apache

a)3 份
b)2 份
c)1 份
d)不肯定安全

3. 下列哪一个程序一般与 NameNode 在一个节点启动?答案D网络

a)SecondaryNameNode
b)DataNode
c)TaskTracker
d)Jobtracker数据结构

此题分析:框架

hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个SecondaryNameNode内存需求和NameNode在一个数量级上,因此一般secondary NameNode(运行在单独的物理机器上)和NameNode运行在不一样的机器上。分布式

JobTracker和TaskTracker工具

JobTracker 对应于 NameNodeoop

TaskTracker 对应于 DataNode

DataNode 和NameNode 是针对数据存放来而言的

JobTracker和TaskTracker是对于MapReduce执行而言的

mapreduce中几个主要概念,mapreduce总体上能够分为这么几条执行线索:obclient,JobTracker与TaskTracker。

一、JobClient会在用户端经过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,并把路径提交到Jobtracker,而后由JobTracker建立每个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。

二、JobTracker是一个master服务,软件启动以后JobTracker接收Job,负责调度Job的每个子任务task运行于TaskTracker上,并监控它们,若是发现有失败的task就从新运行它。通常状况应该把JobTracker部署在单独的机器上。

三、TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通讯,接收做业,并负责直接执行每个任务。TaskTracker都须要运行在HDFS的DataNode上。

4. Hadoop 做者 答案C Doug cutting

a)Martin Fowler
b)Kent Beck
c)Doug cutting

5. HDFS 默认 Block Size 答案:B

a)32MB
b)64MB 
c)128MB

(由于版本更换较快,这里答案只供参考)

6. 下列哪项一般是集群的最主要瓶颈:答案:C磁盘

a)CPU
b)网络
c)磁盘IO 
d)内存

该题解析:

首先集群的目的是为了节省成本,用廉价的pc机,取代小型机及大型机。小型机和大型机有什么特色?

1.cpu处理能力强

2.内存够大

因此集群的瓶颈不多是a和d

3.网络是一种稀缺资源,可是并非瓶颈。

4.因为大数据面临海量数据,读写数据都须要io,而后还要冗余数据,hadoop通常备3份数据,因此IO就会打折扣。

7. 关于 SecondaryNameNode 哪项是正确的?答案C

a)它是 NameNode 的热备
b)它对内存没有要求
c)它的目的是帮助 NameNode 合并编辑日志,减小 NameNode 启动时间
d)SecondaryNameNode 应与 NameNode 部署到一个节点。

多选题:

8. 下列哪项能够做为集群的管理?答案:ABD

a)Puppet 
b)Pdsh 
c)Cloudera Manager
d)Zookeeper

9. 配置机架感知的下面哪项正确:答案ABC

a)若是一个机架出问题,不会影响数据读写
b)写入数据的时候会写到不一样机架的 DataNode 中
c)MapReduce 会根据机架获取离本身比较近的网络数据
10. Client 端上传文件的时候下列哪项正确?答案B

a)数据通过 NameNode 传递给 DataNode

b)Client 端将文件切分为 Block,依次上传

c)Client 只上传数据到一台 DataNode,而后由 NameNode 负责 Block 复制工做

该题分析:
Client向NameNode发起文件写入的请求。

NameNode根据文件大小和文件块配置状况,返回给Client它所管理部分DataNode的信息。

Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每个DataNode块中。

11. 下列哪一个是 Hadoop 运行的模式:答案ABC

a)单机版 
b)伪分布式 
c)分布式

12. Cloudera 提供哪几种安装 CDH 的方法?答案:ABCD

a)Cloudera manager 
b)Tarball 
c)Yum 
d)Rpm

判断题:

13. Ganglia 不只能够进行监控,也能够进行告警。( 正确)

分析:此题的目的是考Ganglia的了解。严格意义上来说是正确。ganglia做为一款最经常使用的Linux环境中的监控软件,它擅长的的是从节点中按照用户的需求以较低的代价采集数据。可是ganglia在预警以及发生事件后通知用户上并不擅长。最新的ganglia已经有了部分这方面的功能。可是更擅长作警告的还有Nagios。Nagios,就是一款精于预警、通知的软件。经过将Ganglia和Nagios组合起来,把Ganglia采集的数据做为Nagios的数据源,而后利用Nagios来发送预警通知,能够完美的实现一整套监控管理的系统。

14. Block Size 是不能够修改的。(错误 )

分析:它是能够被修改的Hadoop的基础配置文件是hadoop-default.xml,默认创建一个Job的时候会创建Job的Config,Config首先读入hadoop-default.xml的配置,而后再读入hadoop-site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置须要覆盖的hadoop-default.xml的系统级配置。

15. Nagios 不能够监控 Hadoop 集群,由于它不提供 Hadoop 支持。(错误 )

分析:Nagios是集群监控工具,并且是云计算三大利器之一

16. 若是 NameNode 意外终止,SecondaryNameNode 会接替它使集群继续工做。(错误 )

分析:SecondaryNameNode是帮助恢复,而不是替代,如何恢复,能够查看

17. Cloudera CDH 是须要付费使用的。(错误 )

分析:第一套付费产品是Cloudera Enterpris,Cloudera Enterprise在美国加州举行的 Hadoop 大会 (Hadoop Summit) 上公开,以若干私有管理、监控、运做工具增强 Hadoop 的功能。收费采起合约订购方式,价格随用的 Hadoop 叢集大小变更。

18. Hadoop 是 Java 开发的,因此 MapReduce 只支持 Java 语言编写。(错误 )

分析:rhadoop是用R语言开发的,MapReduce是一个框架,能够理解是一种思想,可使用其余语言开发。

19. Hadoop 支持数据的随机读写。(错 )

分析:lucene是支持随机读写的,而hdfs只支持随机读。可是HBase能够来补救。HBase提供随机读写,来解决Hadoop不能处理的问题。HBase自底层设计开始即聚焦于各类可伸缩性问题:表能够很“高”,有数十亿个数据行;也能够很“宽”,有数百万个列;水平分区并在上千个普通商用机节点上自动复制。表的模式是物理存储的直接反映,使系统有可能提升高效的数据结构的序列化、存储和检索。

20. NameNode 负责管理 metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入 metadata 信息并反馈 client 端。(错误)

此题分析:

NameNode 不须要从磁盘读取 metadata,全部数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。
1)文件写入
Client向NameNode发起文件写入的请求。
NameNode根据文件大小和文件块配置状况,返回给Client它所管理部分DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每个DataNode块中。

2)文件读取
Client向NameNode发起文件读取的请求。

21. NameNode 本地磁盘保存了 Block 的位置信息。( 我的认为正确,欢迎提出其它意见)

分析:DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将全部存在的Block信息发送给NameNode。NameNode返回文件存储的DataNode的信息。
Client读取文件信息。

22. DataNode 经过长链接与 NameNode 保持通讯。( )

这个有分歧:具体正在找这方面的有利资料。下面提供资料可参考。

首先明确一下概念:

(1).长链接
Client方与Server方先创建通信链接,链接创建后不断开,而后再进行报文发送和接收。这种方式下因为通信链接一直存在,此种方式经常使用于点对点通信。

(2).短链接
Client方与Server每进行一次报文收发交易时才进行通信链接,交易完毕后当即断开链接。此种方式经常使用于一点对多点通信,好比多个Client链接一个Server.

23. Hadoop 自身具备严格的权限管理和安全措施保障集群正常运行。(错误 )

hadoop只能阻止好人犯错,可是不能阻止坏人干坏事

24. Slave 节点要存储数据,因此它的磁盘越大越好。( 错误)

分析:一旦Slave节点宕机,数据恢复是一个难题

25. hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。(错误 )

26. Hadoop 默认调度器策略为 FIFO(正确 )

27. 集群内每一个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行。(错误 )

分析:首先明白什么是RAID,能够参考百科磁盘阵列。这句话错误的地方在于太绝对,具体状况具体分析。题目不是重点,知识才是最重要的。由于hadoop自己就具备冗余能力,因此若是不是很严格不须要都配备RAID。具体参考第二题。

28. 由于 HDFS 有多个副本,因此 NameNode 是不存在单点问题的。(错误 )

29. 每一个 map 槽就是一个线程。(错误 )

分析:首先咱们知道什么是map 槽,map 槽->map slotmap slot 只是一个逻辑值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是对应着一个线程或者进程

30. Mapreduce 的 input split 就是一个 block。(错误 )

31. NameNode 的 Web UI 端口是 50030,它经过 jetty 启动的 Web 服务。(错误 )

32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置全部 Hadoop 守护线程的内存。它默认是 200 GB。( 错误)

hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。

3三、33. DataNode 首次加入 cluster 的时候,若是 log 中报告不兼容文件版本,那须要 NameNode执行“Hadoop namenode -format”操做格式化磁盘。(错误 )

分析:

首先明白介绍,什么ClusterID

ClusterID

添加了一个新的标识符ClusterID用于标识集群中全部的节点。当格式化一个Namenode,须要提供这个标识符或者自动生成。这个ID能够被用来格式化加入集群的其余Namenode。

二次整理

有的同窗问题的重点不是上面分析内容:内容以下:

这个报错是说明 DataNode 所装的Hadoop版本和其它节点不一致,应该检查DataNode的Hadoop版本