当前位置: 首页 > 科技观察

干货-98道Hadoop常见面试题及答案解析(一)

时间:2023-03-16 18:20:26 科技观察

这是一道Hadoop测试题及答案解析。有很多类型的问题。一共98题。问题并不难。对于高手,90分以上才是你的追求。1选择题1.1下面哪个程序负责HDFS的数据存储。a)NameNodeb)Jobtrackerc)Datanoded)secondaryNameNode)tasktrackerAnswerCdatanode1.2HDfS默认保存多少个block?a)3个块b)2个块c)1个块通常在与NameNode相同的节点上开始?a)SecondaryNameNodeb)DataNodec)TaskTrackerd)Jobtracker答案D、本题分析:Hadoop集群基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,而且只有一个master。slave有多个SecondaryNameNode内存需求,而NameNode在同一个数量级,所以通常secondary、NameNode(运行在单独的物理机上)和NameNode运行在不同的机器上。JobTracker和TaskTracker,JobTracker对应NameNode,TaskTracker对应DataNode,DataNode和NameNode是做数据存储的,JobTracker和TaskTracker是做MapReduce执行的,mapReduce中的几个主要概念,mapreduce整体上可以分为几个执行线程:obclient、JobTracker和TaskTracker。JobClient会在用户端通过JobClient类将应用配置参数打包成jar文件存储在hdfs中,并将路径提交给Jobtracker,然后JobTracker会创建各个Task(即MapTask和ReduceTask)并分发给各个要执行的TaskTracker服务。JobTracker是一项主服务。软件启动后,JobTracker接收到Job,负责调度Job的各个子任务任务在TaskTracker上运行,并对其进行监控,如果发现任务失败则重新运行。一般来说,JobTracker应该部署在单独的机器上。TaskTracker是一个运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,直接负责执行每一个任务。TaskTracker需要运行在HDFS的DataNode上。1.4Hadoop作者a)MartinFowlerb)KentBeckc)Dougcutting答案CDougcutting1.5HDFSDefaultBlockSizea)32MBb)64MBc)128MB答案:B(因为版本变化快,这里的答案仅供参考)1.6以下哪项通常是集群的主要瓶颈:a)CPUb)网络c)磁盘IOd)内存答案:C盘本题分析:首先,集群的目的是为了节省成本,并用廉价的PC机取代小型机和大型机。小型机和大型机的特点是什么?cpu处理能力强,内存够用。所以集群的瓶颈不可能是a和d网络是稀缺资源,但不是瓶颈。由于大数据面对的是海量数据,读写数据需要IO,进而需要冗余数据。Hadoop一般备份3份数据,所以IO会打折扣。1.7以下关于SecondaryNameNode的说法正确的是?a)是NameNode的热备b)没有内存需求c)目的是帮助NameNode合并编辑日志,减少NameNode的启动时间d)SecondaryNameNode应该和NameNode部署在同一个节点上。回答C2选择题2.1以下哪一项可以作为集群管理?a)Puppetb)Pdshc)ClouderaManagerd)ZookeeperAnswer:ABD2.2下列关于配置机架感知正确的是:a)如果一个机架有问题,不会影响数据的读写b)在写数据的时候,会写入不同机架的DataNodec)MapReduce会根据机架获取离自己更近的网络数据答案ABC2.3客户端上传文件时,下列哪项是正确的?a)数据通过NameNodedb)客户端将文件分块依次上传c)客户端只将数据上传到一个DataNode,然后NameNode负责分块复制工作一个写入文件的请求。NameNode根据文件大小和文件块配置,向Client返回其管理的DataNode的信息。客户端将文件分成多个block,根据DataNode的地址信息依次写入每个DataNodeblock。2.4Hadoop的运行方式有哪些:a)单机版b)伪分布式c)分布式答案ABC2.5Cloudera提供的安装CDH的方法有哪些?a)Clouderamanagerb)Tarballc)Yumd)Rpm答案:ABCD3判断题3.1Ganglia不仅可以监控,还可以报警。(正确)分析:这道题的目的是考Ganglia的理解能力。严格来说是对的。Ganglia作为Linux环境下最常用的监控软件,擅长根据用户需求,以较低的成本从节点采集数据。但是ganglia在事件发生后的预警和通知用户方面不是很好。最新的ganglia已经具备了这方面的一些功能。但Nagios更擅长警告。Nagios是一款擅长预警和通知的软件。通过结合Ganglia和Nagios,将Ganglia收集的数据作为Nagios的数据源,再利用Nagios进行预警通知,就可以完整的实现一套完整的监控管理系统。3.2块大小不能修改。(Error)分析:可以修改。Hadoop的基本配置文件是hadoop-default.xml。默认情况下,创建作业时,将创建作业的配置。config首先读取hadoop-default.xml的配置,然后读取进入hadoop-site.xml的配置(这个文件初始配置为),hadoop-site.xml中的主要配置需要覆盖系统级的配置hadoop-default.xml的。3.3Nagios由于不提供Hadoop支持,无法监控Hadoop集群。(错误)分析:Nagios是一个集群监控工具,是云计算的三大利器之一。3.4如果NameNode意外终止,SecondaryNameNode将接管以保持集群正常工作。(error)分析:SecondaryNameNode是帮助恢复,不是替换,如何恢复,可以查看3.5ClouderaCDH需要付费。(error)分析:第一套付费产品是ClouderaEnterprise,ClouderaEnterprise是在美国加州举办的HadoopSummit上发布的,通过几个私有的管理、监控、运维工具来增强Hadoop的功能。收费基于合同订阅,价格因所用Hadoop集群的大小而异。3.6Hadoop是用Java开发的,所以MapReduce只支持用Java语言编写。(错误)分析:rhadoop是用R语言开发的,MapReduce是一个框架,可以理解为一个idea,可以用其他语言开发。3.7Hadoop支持数据的随机读写。(错)分析:Lucene支持随机读写,而hdfs只支持随机读。但是HBase可以提供帮助。HBase提供随机读写,解决Hadoop无法处理的问题。HBase从其底层设计开始就专注于各种可扩展性问题:表可以“高大上”,有数十亿行数据;它们也可以是“宽”的,有数百万列;普通商业机器节点上的自动复制。表的模式是物理存储的直接反映,使得系统能够提高高效数据结构的序列化、存储和检索。3.8NameNode负责管理元数据。对于客户端的每一次读写请求,都会从磁盘中读取或写入元数据信息,并反馈给客户端。(错误)本题分析:NameNode不需要从磁盘读取元数据,所有数据都在内存中,硬盘上的数据只是序列化的结果,每次namenode启动时只会读取。1)文件写入Client向NameNode发起文件写入请求。NameNode根据文件大小和文件块配置,向Client返回其管理的DataNode的信息。客户端将文件分成多个block,根据DataNode的地址信息依次写入每个DataNodeblock。2)文件读取Client向NameNode发起文件读取请求。3.9NameNode本地磁盘保存Block的位置信息。(个人认为是正确的,欢迎其他意见)分析:DataNode是文件存储的基本单元。它将Block存储在本地文件系统中,保存Block的Meta-data,并定期将所有存在的Block信息发送给NameNode。NameNode返回文件所在DataNode的信息。客户端读取文件信息。3.10DataNode通过长连接与NameNode保持通信。(有分歧)分歧在于:我正在寻找这方面的有利信息。以下信息可供参考。首先明确概念:(1).长期连接的client端和server端先建立通信连接,连接建立后不断开连接,再进行消息的发送和接收。这样,由于通信连接始终存在,这种方式常用于点对点通信。(2).短连接。客户端和服务器每次发送和接收消息时都进行通信,事务完成后立即断开连接。这种方式常用于点对多点的通信,例如将多个客户端连接到一个服务器。限于篇幅,这里只能包含一小部分问题。如果你想测试更多的问题,请自行下载。(博客后台没找到附件选项。。。)http://www.dajiangtai.com/community/18456.do待续