Hadoop阶段考试
- 一 不定项选择题
-
- 1.下面那个程序负责HDFS数据存储(C)
- 2.关于SecondaryNameNode哪项是正确的(C)
- 3.下列哪个程序通常与NameNode 在一个节点启动(D)
- 4.Client端上传文件的时候下列哪项是正确(B)
- 5.以下描述错误的是(D)
- 6.Hadoop分布式文件系统(HDFS)具有(AC)的特性。
- 7.Zookeeper的角色有哪些(ABD)
- 8.下面那些选项正确描述了HBase的特性(ABCD)
- 9.Hadoop是由何种语言编写的(C)
- 10.以下哪个不是Hadoop运行的模式(B).
- 11.HDFS系统主要包括(AB)两类节点。
- 12.Hadoop Block Size 是否可以修改(B)
- 13.在开发分布式计算job的时候,可以去掉reduce阶段,这一说法是(A)的
- 14.写出以下组件的默认端口号,填写到对应的位置(每个组件只对应一个默认端口号)(版本为hadoop2.6.0-CDH5.14.2)
- 二 简答题
- 三 编程题
一 不定项选择题
1.下面那个程序负责HDFS数据存储(C)
A NameNode
B Jobtracker
C Datanode
D secondaryNameNode
E tasktracker
分析:Namenode:管理文件系统的命名空间;
Jobtracker:负责资源管理和程序调度;
Datanode:负责HDFS数据储存;
SecondaryNameNode:用来保存namenode中对HDFS metadata的信息的备份,并减少namenode重启的时间;
Tasktracker:是jobtracker和task的桥梁,从前者接收并执行命令,并把本地状态周期性的通过心跳汇报给前者。
2.关于SecondaryNameNode哪项是正确的(C)
A 它是NameNode的热备。
B 它对内存没有要求。
C 它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间。
D SecondaryNameNode应与NameNode部署到一个节点。
分析:从工作过程可以看出,SecondaryNameNode的重要作用是定期通过编辑日志文件合并命名空间镜像,以防止编辑日志文件过大。SecondaryNameNode一般要在另一台机器上运行,因为它需要占用大量的CPU时间与namenode相同容量的内存才可以进行合并操作。它会保存合并后的命名空间镜像的副本,并在namenode发生故障时启用。
3.下列哪个程序通常与NameNode 在一个节点启动(D)
A SecondaryNameNode
B DataNode
C TaskTracker
D Jobtracker
注:hadoop1.X
分析: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 整体上可以分为这么几条执行线索:
jobclient,JobTracker 与 TaskTracker。
1、JobClient 会在用户端通过 JobClient 类将应用已经配置参数打包成 jar 文件存储到 hdfs,并把路径提交到 Jobtracker,然后由 JobTracker 创建每一个 Task(即 MapTask 和 ReduceTask)并将它们分发到各个 TaskTracker 服务中去执行
2、JobTracker 是一个 master 服务,软件启动之后 JobTracker 接收 Job,负责调度 Job 的每一个子任务 task运行于 TaskTracker 上,并监控它们,如果发现有失败的 task 就重新运行它。一般情况应该把 JobTracker 部署在单独的机器上。
3、TaskTracker 是运行在多个节点上的 slaver 服务。TaskTracker 主动与 JobTracker 通信,接收作业,并负责直接执行每一个任务。TaskTracker 都需要运行在 HDFS 的 DataNode 上
4.Client端上传文件的时候下列哪项是正确(B)
A 数据经过NameNode传递给DataNode
B Client端将文件切分为Block,依次上传。
C Client只上传数据到一台DataNode,然后由NameNode负责Block复制
D 当某个DataNode失败,客户端不会继续传给其它的DataNode
分析:Client 向 NameNode 发起文件写入的请求。
NameNode 根据文件大小和文件块配置情况,返回给 Client 它所管理部分 DataNode 的信息。
Client 将文件划分为多个 Block,根据 DataNode 的地址信息,按顺序写入到每一个 DataNode 块中,由datanode复制block块。
5.以下描述错误的是(D)
A HDFS是解决分布式存储问题的
B MapReduce是解决计算问题的
C HBase可以实时地随机访问超大规模的数据集
D HBase是基于文档存储的非关系型数据库
分析:非关系型数据库是基于K-V键值对
6.Hadoop分布式文件系统(HDFS)具有(AC)的特性。
A 适合数据批量处理
B 数据处理能力极强
C 最大化吞吐率
D 允许计算向数据迁移
E 适合多线程问题
分析:BD是MapReduce特性。E储存数据时是单线程过程。
7.Zookeeper的角色有哪些(ABD)
A Leader
B Follower
C QuorumPeerMain
D Observer
分析:QuorumPeerMain是进程不是服务
8.下面那些选项正确描述了HBase的特性(ABCD)
A 高可靠性
B 高性能
C 面向列
D 可伸缩
9.Hadoop是由何种语言编写的(C)
A Scala
B Erlang
C Java
D Python
10.以下哪个不是Hadoop运行的模式(B).
A 单机版
B 嵌入式
C 伪分布式
D 完全分布式
11.HDFS系统主要包括(AB)两类节点。
A 元数据节点
B 数据节点
C 元节点
D 子节点
分析:元数据节点:namenode
数据节点:datanode
12.Hadoop Block Size 是否可以修改(B)
A 不可以
B 可以
13.在开发分布式计算job的时候,可以去掉reduce阶段,这一说法是(A)的
A 正确
B 错误
14.写出以下组件的默认端口号,填写到对应的位置(每个组件只对应一个默认端口号)(版本为hadoop2.6.0-CDH5.14.2)
a)HDFS Namenode UI: 50070
b)ResourceManagerUI: 8088
c)fs.defaultFS: 9000
二 简答题
1. MapReduce 中数据倾斜问题产生原因及解决方案?
- 数据倾斜原因:reduce端从map端copy数据时大量的数据处于同一个分区导致数据聚集到同一个reduce端从而形成数据倾斜
- 解决方案:适当增减mapTask和reduceTask的个数。对map端的键值对中的键重新赋随机值从而使它们在不影响逻辑的情况下不大量分到一个分区中。使用mapJoin代替reduceJoin。
2. 请讲述一下 Hadoop Shuffle 原理过程(越详细越好)
- 经过map方法的形成新的键值对进入收集器写入环形缓冲区,默认大小为100M,达到80%时溢写到磁盘形成小文件,溢出前默认hash分区,快速排序,溢出后可以有combine局部聚合,然后采用merge归并合并成大文件,大文件分区且区内有效,然后reducer端根据各自的分区号去每个mapper端取对应的数据,暂存在内存中,达到一定大小就溢写到磁盘合并,否则就在内存中合并
3. 简述一下 hdfs 写文件和读文件流程
- 写文件:客户端向namenode申请写文件,客户端检查要写文件及其父目录是否存在并返回是否可写,若可写,客户端再次向namenode申请往哪写,namenode返回datanode的地址,客户端找到最近的datanode申请建立通信,datanode向邻近datanode建立通信,然后一层层返回建立通信完成,客户端将数据切成一个个block块,然后分成packet64kb上传至最近的一个datanode,此datanode复制数据到其它datanode,直到一个block块写完,客户端再次申请下一个block的写入地址,重复循环,写完所有数据后,客户端通知namenode已写完,namenode记录写入数据的元数据。
- 读文件:客户端向namenode申请要读的文件,namenode返回文件block块的datanode的地址,客户端向这些datanode发起读的申请,datanode返回block数据,客户端取得所有block后将它们合并成文件。
4. 为什么 hdfs 不适合存小文件?
- 无论文件多小都用占用一个128M的block块,就会占用150B的元数据空间会使得namenode的内存不够。寻址时间大于储存时间,效率过低。
5. hadoop 中的 combine 的作用?
- 位于mapper端的combine可以在不影响业务逻辑的情况下局部聚合数据,使得mapper端向reducer端传递数据的网络IO减少,提高效率。<