Hadoop测试题
一.填空题,1分(41空),2分(42空)共125分
1. 2. 3. 4. 5.
(每空1分) datanode 负责HDFS数据存储。 (每空1分)HDFS中的block默认保存 3 份。
(每空1分) ResourceManager 程序通常与 NameNode 在一个节点启动。 (每空1分)hadoop运行的模式有: 单机模式 、 伪分布模式 、 完全分布式 。 (每空1分)Hadoop集群搭建中常用的4个配置文件为: 、 、 、 。
6. (每空2分)HDFS将要存储的大文件进行 分割 , 分割 后存放在既定的存储块
中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求。
7. (每空2分)一个HDFS集群包括两大部分,即 namenode 与 datanode 。一般来说,一个集群中会有一个 namenode 和多个 datanode 共同工作。 8.
9.
10.
11. 12. 13. 14.
15.
16.
(每空2分) namenode 是集群的主服务器,主要是用于对HDFS中所有的文件及内容数据进行维护,并不断读取记录集群中 datanode 主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储。
(每空2分) datanode 在HDFS集群中担任任务具体执行角色,是集群的工作节点。文件被分成若干个相同大小的数据块,分别存储在若干个 datanode 上, datanode 会定期向集群内 namenode 发送自己的运行状态与存储内容,并根据 namnode 发送的指令进行工作。
(每空2分) namenode 负责接受客户端发送过来的信息,然后将文件存储位置信息发送给 client ,由 client 直接与 datanode 进行联系,从而进行部分文件的运算与操作。 (每空1分) block 是HDFS的基本存储单元,默认大小是 128M 。
(每空1分)HDFS还可以对已经存储的Block进行多副本备份,将每个Block至少复制到 3 个相互独立的硬件上,这样可以快速恢复损坏的数据。 (每空2分)当客户端的读取操作发生错误的时候,客户端会向 namenode 报告错误,并
请求 namenode 排除错误的 datanode 后,重新根据距离排序,从而获得一个新的 的读取路径。如果所有的 datanode 都报告读取失败,那么整个任务就读取失败。 (每空2分)对于写出操作过程中出现的问题, FSDataOutputStream 并不会立即关闭。客户端向Namenode报告错误信息,并直接向提供备份的 datanode 中写入数据。备份 datanode 被升级为首选 datanode ,并在其余2个 datanode 中备份复制数据。NameNode对错误的DataNode进行标记以便后续对其进行处理。
(每空1分)格式化HDFS系统的命令为: hdfs namenode –format 。
…
17. — 18. (每空1分)启动hdfs的shell脚本为: 。 19. (每空1分)启动yarn的shell脚本为: 。 20. (每空1分)停止hdfs的shell脚本为: 。 21. (每空1分)hadoop创建多级目录(如:/a/b/c)的命令为: hadoop fs –mkdir –p /a/b/c 。
22. (每空1分)hadoop显示根目录命令为: hadoop fs –lsr 。
23. (每空1分)hadoop包含的四大模块分别是: Hadoop common 、 HDFS 、
Mapreduce 、 yarn 。
24. (每空1分)namenode默认的WebUI访问端口号为: 50070 。 25. (每空1分)ResourceManager默认的WebUI访问端口号为: 8088 。 26. (每空1分)historyServer默认的WebUI访问端口号为: 19888 。 27. (每空1分)修改blocksize大小的属性是: ,在 配置文件里。
28. ~ 29. (每空1分)HDFS中namenode的RPC端口号为: 8021 ,其作用是: 接收Client连
接的RPC端口,用于获取文件系统metadata信息 。
30. (每空2分)Mapper类中有 4 个函数。
31. (每空1分)默认NameNode周期性从DataNode接收心跳信号的时间间隔为: 3s 。 32. (每空1分)hadoop集群默认机架感知是启用的。是否正确: 错误 。
33. (每空2分)Hadoop Map/Reduce Shuffle过程: inputsplit-->map函数—>内存缓冲区
Partitionsortcombinespill--> map端merge -->reduce端copy—>mergereduce函数。
34. (每空2分)一个NodeManager能够同时运行最大reduce任务数(默认): 2 。 35. (每空2分)默认情况下,一个同时运行了namenode,secondarynamenode和
ResourceManager的主节点,所使用的内存容量为 3000 M。
36. (每空2分)Hadoop集群中有三种作业调度算法,分别为 FIFO调度 , 计算能力调度 和 公平调度 。
37. (每空1分)HA产生的背景是: 为了解决单NN可能出现宕机导致集群不可用或数据丢失的问题 。 38. { 39. (每空1分)通过 Zookeeper 管理两个或者多个NameNode,使一个NameNode为
active 状态,并且同步每个NN的元数据,如果 active 状态的NN宕机后马上启用状态为 standby 状态的备用节点。
40. (每空1分) job 是客户端需要执行的一个工作单元。
41. (每空1分)Hadoop将作业分成若干个 task 来执行,其中包括: maptask 和
reducetask 。
42. (每空2分)combiner是通过 Reducer 类来定义的。 43. (每空2分)map任务将其输出写入到 本地磁盘 。
44. (每空2分)reduce的输出通常存储在 HDFS 中以实现可靠存储。
45. (每空2分)HDFS会对写入的所有数据计算 校验和 ,并在读取数据时验证 校验和 。
46. (每空2分)序列化用于分布式数据处理的两大领域为: 进程间通信 和 永久存储 。 47. (每空2分)hadoop使用自己的序列化格式为: Writable 。
?
二.简答题,3分(17题),5分(5题)共75分
1. (3分)简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出
具体步骤,列出具体步骤更好。 答:
1使用root账户登录 2 修改IP
3 修改host主机名 4 配置SSH免密码登录 5 关闭防火墙 6 安装JDK
7 解压hadoop安装包
《
8 配置hadoop的核心文件 , , , 9 配置hadoop环境变量
10 格式化 hadoop namenode -format 11 启动节点
2. (3分)请列出正常的hadoop集群中hadoop都分别需要启动哪些进程,他们的作用
分别都是什么,请尽量列的详细一些。 答:
namenode:管理集群,存储数据的原信息,并管理记录datanode中的文件信息。 secondarynamenode:它是namenode的一个快照,会根据configuration中设置的值来 决定多少时间周期性的去cp一下namenode,记录namenode中的metadata及其它数据。
Datanode:存储数据 ,
ResourceManager:ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)
NodeManager:是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点 (3分)请写出以下的shell命令
(1)杀死一个job
(2)删除hdfs上的 /tmp/aaa目录
(3)加入一个新的存储节点和删除一个节点需要执行的命令 答:
(1)mapred job -list得到job的id,然后执行mapred job –kill jobId就可以杀死一个指定jobId的job工作了。
(2)hadoop fs -rmr /tmp/aaa或者hdfs dfs –rmr /tmp/aaa <
(3)增加一个新的节点在新的节点上执行 start datanode 然后在主节点中执行 hdfs dfsadmin -refreshNodes 删除一个节点的时候,只需要在主节点执行 hdfs dfsadmin –refreshnodes
3. (3分)请简述mapreduce中的combine和partition的作用
答:
combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。
Partition的主要作用就是指定输出到reduce的个数的。 5. (3分)hdfs的体系结构 答:
HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据
.
4.
6. (3分)三个datanode中当有一个datanode出现错误时会怎样 答:
当有一个datanode出现错误的时候,namenode会将那个datanode上的数据拷贝到其他的节点去进行存储。
7. (3分)文件大小默认为 64M,改为 128M 有什么影响 \
答:
更改文件的block块大小,需要根据我们的实际生产中来更改block的大小,如果block定义的太小,大的文件都会被切分成太多的小文件,减慢用户上传效率,如果block定义的太大,那么太多的小文件可能都会存到一个block块中,虽然不浪费硬盘资源,可是还是会增加namenode的管理内存压力。
8. (3分)NameNode与SecondaryNameNode的区别与联系 答:
secondaryNameNode更像是Namenode的一个冷备份,当namenode宕机之后,可以从SecondaryNamenode上面恢复部分数据。
9. (5分)在一个运行的hadoop任务中,什么是InputSplit 答:
InputSplit是MapReduce对文件进行处理和运算的输入单位,只是一个逻辑概念,每个InputSplit并没有对文件实际的切割,只是记录了要处理的数据的位置(包括文件的path和hosts)和长度(由start和length决定),默认情况下与block一样大。
—
10. (3分)参考下列M/R系统的场景:hdfs块大小为64MB,输入类为FileInputFormat,
有3个文件的大小分别为64KB, 65MB, 127MB,Hadoop框架会把这些文件拆分为多少块 答:
64k------->一个block
65MB---->两个文件:64MB是一个block,1MB是一个block
127MB--->两个文件:64MB是一个block,63MB是一个block
11. (5分)hadoop中RecordReader的作用是什么 答:
RecorderReader是一个接口,主要是用来读取文件的输入键值对的,我们也可以自定义输入的key,value对的读取规则。属于split和mapper之间的一个过程,将inputsplit输出的行为一个转换记录,成为key-value的记录形式提供给mapper
&
12. (3分)Map阶段结束后,Hadoop框架会处理:Partitioning, Shuffle和Sort,在这几
个阶段都发生了什么 答:
Partition是对输出的key,value进行分区,可以自定义分区,按照业务需求,将map的输出归分到多个不同的文件中
将map的输出作为输入传给reducer 称为shuffle sort是排序的过程,将map的输出,作为reduce的输入之前,我们可以自定义排序,按照key来对map的输出进行排序
13. (5分)如果没有定义partitioner,那数据在被送达reducer前是如何被分区的 答:
Partitioner是在map函数执行()时被调用。用户可以通过实现自定义的Partitioner来控制哪个key被分配给哪个Reducer。 )
hadoop有一个默认的分区类,HashPartioer类,通过对输入的k2去hash值来确认map输出的k2,v2送到哪一个reduce中去执行。
14. (3分)什么是combiner 答:
combiner就是规约操作,通过对map输出的数量进行规约,可以减少reduce的数量,提高执行效率。combiner的输入输出类型必须和mapper的输出以及reducer的输入类型一致
15. (3分)分别举例什么情况要使用 combiner,什么情况不使用 答:
求平均数的时候就不需要用combiner,因为不会减少reduce执行数量。在其他的时候,可以依据情况,使用combiner,来减少map的输出数量,减少拷贝到reduce的文件,从而减轻reduce的压力,节省网络开销,提升执行效率
16. ! 17. (5分)简述Hadoop中replication(复本)放置策略 答:
Hadoop的默认布局策略是在运行客户端的节点上放第一个复本;第二个复本放在与第一个不同且随机另外选择的机架中的节点上(离架);第三个复本与第二个复本放在同一个机架上,且随机选择另一个节点。
hadoop常见笔试题答案



