1、Hadoop面试题汇总单选题1.下面哪个程序负责 HDFS 数据存储。a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker答案C datanode2. HDfS 中的 block 默认保存几份?a)3 份 b)2 份c)1 份d)不确定答案A默认3分3. 下列哪个程序通常与 NameNode 在一个节点启动?a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker答案D4. Hadoop 作者a)Martin Fowler b)Kent Beck c)D
2、oug cutting 答案C Doug cutting5. HDFS 默认 Block Sizea)32MB b)64MB c)128MB答案:1.X版本是64M2.X版本是128M6.下列哪项通常是集群的最主要瓶颈a)CPU b)网络 c)磁盘IO d)内存答案:C磁盘7.Doug Cutting所创立的项目的名称都受到其家人的启发,以下项目不是由他创立的项目是A HadoopB NutchC LuceneD Solr答案:D8.配置Hadoop时,JAVA_HOME包含在哪一个配置文件中A hadoop-default.xmlB hadoop-env.shC hadoop-site.xm
3、lD configuration.xsl答案:B9. Hadoop配置文件中,hadoop-site.xml显示覆盖hadoop-default.xml里的内容。在版本0.20中,hadoop-site.xml被分离成三个XML文件,不包括A conf-site.xmlB mapred-site.xmlC core-site.xmlD hdfs-site.xml答案:A10.HDFS默认的当前工作目录是/user/$USER,fs.default.name的值需要在哪个配置文件内说明A. mapred-site.xmlB. core-site.xmlC. hdfs-site.xmlD. 以上均
4、不是答案:B11.关于Hadoop单机模式和伪分布式模式的说法,正确是A 两者都起守护进程,且守护进程运行在一台机器上B 单机模式不使用HDFS,但加载守护进程C 两者都不与守护进程交互,避免复杂性D 后者比前者增加了HDFS输入输出以及可检查内存使用情况答案:D12.下列关于Hadoop API的说法错误的是A Hadoop的文件API不是通用的,只用于HDFS文件系统B Configuration类的默认实例化方法是以HDFS系统的资源配置为基础的C FileStatus对象存储文件和目录的元数据D FSDataInputStream是java.io.DataInputStream的子类答
5、案:A13.HDFS的NameNode负责管理文件系统的命名空间,将所有的文件和文件夹的元数据保存在一个文件系统树中,这些信息也会在硬盘上保存成以下文件:A日志B命名空间镜像C两者都是答案:C14. HDFS的namenode保存了一个文件包括哪些数据块,分布在哪些数据节点上,这些信息也存储在硬盘上。A正确B错误答案:B知识点:在系统启动的时候从数据节点收集而成的15.Secondary namenode就是namenode出现问题时的备用节点 A正确B错误答案:B知识点:它和元数据节点负责不同的事情。其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。合并过后
6、的命名空间镜像文件也在Secondary namenode保存了一份,以防namenode失败的时候,可以恢复。16.HDFS的是基于流数据模式访问和处理超大文件的需求而开发的,默认的最基本的存储单位是64M,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是A一次写入,少次读写B多次写入,少次读写C一次写入,多次读写D多次写入,多次读写答案:C17.HDFS无法高效存储大量小文件,想让它能处理好小文件,比较可行的改进策略不包括A 利用SequenceFile、MapFile、Har等方式归档小文件B 多Master设计C Block大小适当调小D 调大namenode内存或将
7、文件系统元数据存到硬盘里答案:D18.关于HDFS的文件写入,正确的是A 支持多用户对同一文件的写操作B 用户可以在文件任意位置进行修改C 默认将文件块复制成三份存放D 复制的文件块默认都存在同一机架上答案:C19.Hadoop fs中的-get和-put命令操作对象是A 文件B 目录C 两者都是答案:C20.Namenode在启动时自动进入安全模式,在安全模式阶段,说法错误的是A 安全模式目的是在系统启动时检查各个DataNode上数据块的有效性B 根据策略对数据块进行必要的复制或删除C 当数据块最小百分比数满足的最小副本数条件时,会自动退出安全模式D 文件系统允许有修改答案:D21. 下列
8、关于HDFS为存储MapReduce并行切分和处理的数据做的设计,错误的是 A FSDataInputStream扩展了DataInputStream以支持随机读 B 为实现细粒度并行,输入分片(Input Split)应该越小越好 C 一台机器可能被指派从输入文件的任意位置开始处理一个分片 D 输入分片是一种记录的逻辑划分,而HDFS数据块是对输入数据的物理分割 答案:B多选题1. 关于 SecondaryNameNode 哪项是正确的?a)它是 NameNode 的热备 b)它对内存没有要求c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间d)Second
9、aryNameNode 应与 NameNode 部署到一个节点答案C D2. 下列哪项可以作为集群的管理?a)Puppet b)Pdsh c)Cloudera Manager d)Zookeeper答案1:ABC3. 配置机架感知的下面哪项正确a)如果一个机架出问题,不会影响数据读写b)写入数据的时候会写到不同机架的 DataNode 中c)MapReduce 会根据机架获取离自己比较近的网络数据答案ABC具体可以参考hadoop机架感知-加强集群稳固性,该如何配置hadoop机架感知4. Client 端上传文件的时候下列哪项正确a)数据经过 NameNode 传递给 DataNodeb)C
10、lient 端将文件切分为 Block,依次上传c)Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作答案B5. 下列哪个是 Hadoop 运行的模式a)单机版 b)伪分布式 c)分布式答案ABC6. Cloudera 提供哪几种安装 CDH 的方法a)Cloudera manager b)Tarball c)Yum d)Rpm答案:ABCD具体可以参考Hadoop CDH四种安装方式总结及实例指导简答题1.Hadoop集群可以运行的3个模式?1)单机(本地)模式;2)伪分布式模式;3)全分布式模式;2.单机(本地)模式中的注意点?在单机模式
11、(standalone)中不会存在守护进程,所有东西都运行在一个JVM上。这里同样没有DFS,使用的是本地文件系统。单机模式适用于开发过程中运行MapReduce程序,这也是最少使用的一个模式。3.伪分布模式中的注意点?伪分布式(Pseudo)适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。4. 全分布模式又有什么注意点?全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及task tracker运行的主机。在分布式环境下,主节点和从节点会
12、分开。5. Hadoop是否遵循UNIX模式? 是的,在UNIX用例下,Hadoop还拥有“conf”目录。6. Hadoop的核心配置是什么?Hadoop的核心配置通过两个xml文件来完成:1,hadoop-default.xml;2,hadoop-site.xml。这些文件都使用xml格式,因此每个xml中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。7. 那当下又该如何配置?Hadoop现在拥有3个配置文件:1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。这些文件都保存在conf/子目录下。8. fs.mapr.workin
13、g.dir只是单一的目录?fs.mapr.working.dir只是一个目录。9. hdfs-site.xml的3个主要属性?dfs.name.dir决定的是元数据存储的路径以及DFS的存储方式(磁盘或是远端)dfs.data.dir决定的是数据存储的路径fs.checkpoint.dir用于第二Namenode10. 如何退出输入模式?退出输入的方式有:1,按ESC;2,键入:q(如果你没有输入任何当下)或者键入:wq(如果你已经输入当下),并且按下Enter。11. “jps”命令的用处?这个命令可以检查Namenode、Datanode、Task Tracker、 Job Tracker
14、是否正常工作。12. 如何重启Namenode?点击stop-all.sh,再点击start-all.sh。键入sudo hdfs(Enter),su-hdfs (Enter),/etc/init.d/ha(Enter),及/etc/init.d/hadoop-0.20-namenode start(Enter)。13. Fsck的全名?全名是:File System Check。14. mapred.job.tracker命令的作用?可以让你知道哪个节点是Job Tracker。15. /etc /init.d命令的作用是?/etc /init.d说明了守护进程(服务)的位置或状态,其实是L
15、INUX特性,和Hadoop关系不大。16. 如何在浏览器中查找Namenode?如果你确实需要在浏览器中查找Namenode,你不再需要localhost:8021,Namenode的端口号是50070。17. hadoop-env.sh是用于做什么的?hadoop-env.sh提供了Hadoop中. JAVA_HOME的运行环境。18. Master文件是否提供了多个入口?是的你可以拥有多个Master文件接口。19. Hadoop-env.sh文件当下的位置?hadoop-env.sh现在位于conf。20. 在Hadoop_PID_DIR中,PID代表了什么?PID代表了“Proces
16、s ID”。21. /var/hadoop/pids用于做什么? /var/hadoop/pids用来存储PID。22. Hadoop需求什么样的网络?Hadoop核心使用Shell(SSH)来驱动从节点上的服务器进程,并在主节点和从节点之间使用password-less SSH连接。23.全分布式环境下为什么需求password-less SSH?这主要因为集群中通信过于频繁,Job Tracker需要尽可能快的给Task Tracker发布任务。24. SSH工作的端口号是?SSH工作的端口号是NO.22,当然可以通过它来配置,22是默认的端口号。25.为什么SSH本地主机需要密码?在SS
17、H中使用密码主要是增加安全性,在某些情况下也根本不会设置密码通信。26.如果在SSH中添加key,是否还需要设置密码?是的,即使在SSH中添加了key,还是需要设置密码。27.假如Namenode中没有数据会怎么样?没有数据的Namenode就不能称之为Namenode,通常情况下,Namenode肯定会有数据28.当Job Tracker宕掉时,Namenode会发生什么?当Job Tracker失败时,集群仍然可以正常工作,只要Namenode没问题。29.是否可以在Windows上运行Hadoop?你最好不要这么做,Red Hat Linux或者是Ubuntu才是Hadoop的最佳操作系
18、统。在Hadoop安装中,Windows通常不会被使用,因为会出现各种各样的问题。因此,Windows绝对不是Hadoop的推荐系统。30.简要描述如何安装配置一个apache开源版hadoop,描述即可,列出步骤更好1.配置主机名 2.配置Hosts 3.配置面密码互通 4.安装JDK 5.安装hadoop 6.配置hadoop (1)修改 hadoop-env.sh (2)修改 core-site.xml (3)修改 hdfs-site.xml (4)修改 mapred-site.xml (5)修改 yarn-site.xml (6)修改 slaves7.配置hadoop的环境变量 8.格
19、式化namenode32.请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?NameNode - hdfs名字节点,存储hdfs元数据SecondaryNameNode - 辅助NameNode实现fsimage文件和edits文件的合并DataNode - 存储数据的节点ResourceManager -负责集群中所有资源的统一管理和分,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序NodeManager -是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点,包括与Resource
20、Manger保持通信,监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary service) 33.请写出以下执行命令1)杀死一个job? hadoop job kill job_id2)删除hdfs上的/tmp/aaa目录 hadoop fs -rmdir /tmp/aaa3加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令? hadoop balance5.请列出你所知道的hadoop调度器,并简要说明其工作方法? (1)默认的调度器FIFO(2) 计算能力调度器
21、Capacity Scheduler(3)公平调度器Fair Scheduler(4)适用于异构集群的调度器LATE(5)适用于实时作业的调度器Deadline Scheduler和Constraint-based Scheduler6.请列出在你以前工作中所使用过的开发mapreduce的语言? Java7.当前日志采样格式为34.hive有哪些方式保存元数据,各有哪些特点? Hive原生使用derby作为元数据库,无法并发调用hive可以将Hive元数据保存在mysql数据库中 远程服务器模式,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 Meta
22、StoreServer 访问元数据库35.请简述hadoop怎么样实现二级排序?有两种方法进行二次排序,分别为:buffer and in memory sort和 value-to-key conversion。对于buffer and in memory sort,主要思想是:在reduce()函数中,将某个key对应的所有value保存下来,然后进行排序。 这种方法最大的缺点是:可能会造成out of memory。对于value-to-key conversion,主要思想是:将key和部分value拼接成一个组合key(实现WritableComparable接口或者调用setSor
23、tComparatorClass函数),这样reduce获取的结果便是先按key排序,后按value排序的结果,需要注意的是,用户需要自己实现Paritioner,以便只按照key进行数据划分36.简述hadoop实现join的几种方法?2.1 reduce side joinreduce side join是一种最简单的join方式,其主要思想如下:在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签(tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2。即:map阶段的主要任务是对不同
24、文件中的数据打标签。在reduce阶段,reduce函数获取key相同的来自File1和File2文件的value list, 然后对于同一个key,对File1和File2中的数据进行join(笛卡尔乘积)。即:reduce阶段进行实际的连接操作。2.2 map side join之所以存在reduce side join,是因为在map阶段不能获取所有需要的join字段,即:同一个key对应的字段可能位于不同map中。Reduce side join是非常低效的,因为shuffle阶段要进行大量的数据传输。Map side join是针对以下场景进行的优化:两个待连接表中,有一个表非常大,
25、而另一个表非常小,以至于小表可以直接存放到内存中。这样,我们可以将小表复制多份,让每个map task内存中存在一份(比如存放到hash table中),然后只扫描大表:对于大表中的每一条记录key/value,在hash table中查找是否有相同的key的记录,如果有,则连接后输出即可。为了支持文件的复制,Hadoop提供了一个类DistributedCache,使用该类的方法如下:(1)用户使用静态方法DistributedCache.addCacheFile()指定要复制的文件,它的参数是文件的URI(如果是HDFS上的文件,可以这样:hdfs:/namenode:9000/home/
26、XXX/file,其中9000是自己配置的NameNode端口号)。JobTracker在作业启动之前会获取这个URI列表,并将相应的文件拷贝到各个TaskTracker的本地磁盘上。(2)用户使用DistributedCache.getLocalCacheFiles()方法获取文件目录,并使用标准的文件读写API读取相应的文件。2.3 SemiJoinSemiJoin,也叫半连接,是从分布式数据库中借鉴过来的方法。它的产生动机是:对于reduce side join,跨机器的数据传输量非常大,这成了join操作的一个瓶颈,如果能够在map端过滤掉不会参加join操作的数据,则可以大大节省网络
27、IO。实现方法很简单:选取一个小表,假设是File1,将其参与join的key抽取出来,保存到文件File3中,File3文件一般很小,可以放到内存中。在map阶段,使用DistributedCache将File3复制到各个TaskTracker上,然后将File2中不在File3中的key对应的记录过滤掉,剩下的reduce阶段的工作与reduce side join相同。2.4 reduce side join + BloomFilter在某些情况下,SemiJoin抽取出来的小表的key集合在内存中仍然存放不下,这时候可以使用BloomFiler以节省空间。BloomFilter最常见的
28、作用是:判断某个元素是否在一个集合里面。它最重要的两个方法是:add() 和contains()。最大的特点是不会存在false negative,即:如果contains()返回false,则该元素一定不在集合中,但会存在一定的true negative,即:如果contains()返回true,则该元素可能在集合中。因而可将小表中的key保存到BloomFilter中,在map阶段过滤大表,可能有一些不在小表中的记录没有过滤掉(但是在小表中的记录一定不会过滤掉),这没关系,只不过增加了少量的网络IO而已。37.请用Java实现非递归二分查找?public static int binary
29、Search(IntegersrcArray,int des) /第一个位置. int low=0; /最高位置.数组长度-1,因为下标是从0开始的. int high=srcArray.length-1;/当low指针和high不重复的时候. while(low1);/与最中间的数字进行判断,是否相等,相等的话就返回对应的数组下标.if(des=srcArraymiddle) return middle;/如果小于的话则移动最高层的指针 else if(dessrcArraymiddle) high=middle-1;/移动最低的指针 else low=middle+1; return -1
30、;38.请简述mapreduce中,combiner,partition作用?Partition:分区操作是shuffle操作中的一个重要过程,作用就是将map的结果按照规则分发到不同reduce中进行处理,从而按照分区得到多个输出结果Combiner:每一个MapperTask可能会产生大量的输出,combiner的作用就是在MapperTask端对输出先做一次合并,以减少传输到reducerTask的数据量39用mapreduce如何处理数据倾斜问题1. 增加reduce 的jvm内存2. 增加reduce 个数3. customer partition4. 其他优化的讨论.5. reduce sort merge排序算法的讨论6. 正在实现中的hive skewed join.7. pipeline8. distinct9. index 尤其是bitmap index40 Hive中内部表和外部表的区别内部表现有表后有数据,数据在hive的hdfs目录下管理外部表先有数据后有表,数据不再hive
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1