Hadoop应用开发与案例实战课后习题参考答案1-10章全书章节练习题答案题库_第1页
Hadoop应用开发与案例实战课后习题参考答案1-10章全书章节练习题答案题库_第2页
Hadoop应用开发与案例实战课后习题参考答案1-10章全书章节练习题答案题库_第3页
Hadoop应用开发与案例实战课后习题参考答案1-10章全书章节练习题答案题库_第4页
Hadoop应用开发与案例实战课后习题参考答案1-10章全书章节练习题答案题库_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题

一、选择题

1.下列有关Hadoop的说法正确的是(ABCD工

A.Hadoop最早起源于Nulch

B.Hadoop中HDFS的理念来源于谷歌发表的分布式文件系统(GFS)的论文

C.Hadoop中M叩Reduce的思想来源于谷歌分布式计算框架M叩Reduce的论文

D.Hadoop是在分布式服务器集群上存储海量数据并运行分布式分析应用的一个开源的

软件框架

2.使用Hadoop的原因是(ABCD\

A.方便:Hadoop运行在由一般商用机器构成的大型集群上或者云计算服务上

B.稳健:Hadoop致力于在一般商用硬件上运行,具架构假设硬件会频繁失效,Hadoop

可以从容地处理大多数此类故障

C.可扩展:Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据集

D.简单:Hadoop允许用户快速编写高效的并行代码

3.Hadoop的作者是(B1

A.MartinFowlerB.DcugCuttingC.KentBeckD.GraceHopper

4.以下关于大数据特点的描述中,不正确的是(ABCX

A.巨大的数据量B.多结构化数据C.增长速度快D.价值密度高

二、简答题

1.Hadoop是一个什么样的框架?

答:Hadoop是一款由Apache基金会开发的可靠的、可伸缩的分布式计算的开源软件。它

允许使用简单的编程模型在跨计算机集群中对大规模数据集进行分布式处理。

2.Hadoop的核心组件有哪些?简单介绍每一个组件的作用。

答:核心组件有HDFS、MapReduce、YARN。

HDFS(HadoopDistributedFileSystem,Hadoop分布式文件系统)是Hadoop的核心组件之

-,作为最底层的分布式存储服务而存在。它是一个高度容错的系统,能检测和应对硬件故障,

可在低成本的通用硬件上运行。

MapReduce是Hadoop的一个分布式计算框架也是一种大规模数据集并行运算的编程模型,

主要用于处理海量数据的运算。MapReduce主要包括map(映射)和reduce(规约)两部分。它

是一个分布式运算程序的编程框架,其核心功能是将用户编写的业务逻辑代码和自带的默认组

件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。

HadoopYARN是开源Hadoop分布式处理框架中的资源管理和作业调度框架,主要负责将

系统资源分配给在Hadoop集群中运行的各种应用程序,并调度在不同集群节点上执行的任务

3.简述Hadoop生态体系,并列举此生态体系中涉及的技术。

答:当今的Hadoop已经成长为一个庞大的生态体系,随着生态体系的成长,新出现的项目

也越来越多,其中不乏一些非Apache主管的项目,这些项目对Hadoop做了更好的补充或者更

高层的抽象,涉及的技术有HBase、Hive、Sqoop、Pig、Flume、Oozie、ZooKeeper、kafka、Spark

等。

4.简单列举几个Hadoop的应用场景。

答:(1)在线旅游

(2)电子商务

(3)移动数据

(4)能源发现

(5)节约能源

(6)图像处理

(7)医疗保健

(8)IT矽

(9)欺诈检测

(10)基础设施管理

习题

一、填空题

1.Hadoop集群中的节点__DataNode―负责HDFS的数据存储。

2.Hadoop集群中的Jobtracker程序通常与NameNode在一个节点启动。

3.Hadoop的运行模式有独立(本地)运行模式、伪分布式运行模式和完全分布式运行

环境。

4.Hadoop集群搭建中常用的4个配置文44^hadoop-env.sh、core-sile.xml.mapred-

site,.xml1口yarn-site.xml〃

二、操作题

1•根据2.2节伪分布式安装的安装及配置步骤,在自己计算机上搭建伪分布式Hadoop集群

环境,环境搭建完毕后通过命令及Web访问方式直看集群的启动情况。

答:具体步骤见章节内容。

2.根据23节完全分布式安装的安装及配置步骤,根据自己计算机的实际配置情况分析是

否可以搭建至少2台节点的完全分布式Hadoop集群环境,如果配置允许则搭建完全分布式集群

环境,搭建完毕后通过命令或Web访问方式查看集群的启动信息。

答:具体步骤见章节内容。

习题

一、填空题

1.由于NameNode宕机,导致无法对外提供服务,可通过搭建__HDFSHA__来解决。

2.YARN的高可用主要是解决ResourceManager单点故障。

3.由于HDFS存储数据量过大,导致NameNode内存不足,可以通过搭建联邦

来解决。

二、简答题

1.Hadoop是如何解决高可用问题的?

答:对于Hadoop集群,RM和NN都是"SinglePointofFailure(单点故障)",起着"一票否

决”的作用,所以Hadoop对NN和RM都提供了HA选项,采用的都是Active/Standby的措施来

达到HA的要求。所谓Active/Standby是一种热备方案,这种方案中,"在位"的行使职权的Active

的管理者只有一个,但有一个作为备份(即Standby)的彳斯卜管理者时刻准备着,当Active的管

理者发生故障,Standby的管理者就立刻顶上,并进行业务的接管,不用临时开机和初始化。

2.简述ZooKeeper的功能及其在Hadoop高可用中起到的作用。

答:ZooKccpcr主要用来解决分布式应用中经常遇到的一些数据管理问题,如统一命名服务、

状态同步服务、集群管理、分布式应用配置项的管理等。

在Hadoop的HA集群中,使用ZooKeeper的存储功能可保存NameNode的状态信

息,ZooKeeper会监听两个NameNode的工作状态当状态发生改变时由其协调Active与Standby

状态的切换。

3.YARN是如何解决高可用问题的?

答:Hadoop在2.4版本之后,针对YARN弓|入了HA机制,也就是ResourceManager的

Active/Standby,YARN的HA与HDFS的HA基本相同,但YARNHA能够支持多个Standby的

ResourceManager(Hadoop2.x的HDFSHA只允许有一^Standby的NamcNodc,Hadoop3.x之

后,允许有多个Standby的NameNode),Active和Standby的状态可以通过控制台命令手动切

换,也可以自动切换。

4.Hadoop联邦解决了什么问题?

答:Hadoop集群启动后,NameNode在内存中保存了文件和块的映射关系,这意味着对于

一个拥有大量文件的超大集群来说,由于数据量太大,NameNode的内存中可能也无法放下这么

多的对应关系,内存将成为限制系统横向扩展的瓶颈。Hadoop2.x版本中引入了HDFS联邦机制

来解决这个问题

一、选择题

1.数据块(block)的大小由(A)参数决定。

A.dfs.blocksizeB.fs.replicationC.fs.defaultFSD.dfs.block

2.创建HDFS新目录"/newdir"的命令为(D1

A.hadoopmkdir/newdirB.hadoopismkdir/newdir

C.hadoopfs-mkdirnewdirD.hadoopfs-mkdir/newdir

二、简答题

简述HDFS的写数据流程。

答:(1)客户端首先与NameNode建立连接,发起文件上传请求。

(2)NameNode检杳上传路径是否存在,目标文件是否存在,权限是否允许。若无问题则修

改命名空间,并反馈允许上传。

(3)客户端收到允许上传反馈后再次请求第一个Block所在的节点名。

(4)NameNode根据机架感知原整取三个节点(DalaNodel、DalaNode2、DataNode3)并

将其反馈给客户端。

(5)客户端从获取的三个节点中选取一个节点建立管道(Pipeline)连接,请求上传数据。节

点1收到请求后与节点2获取连接,节点2收到请求后与节点3获取连接。

(6)连接全部建立成功后,客户端开始向第一个节点传输第一个Block。该Block数据以

Packet为单位进行传输。数据的校验则是以更小的Chunk单位进行的,数据在客户端本地和

DataNode端都有读取和写入的缓存队列。每一次Packet在Pipeline上的传输都需要反向应答。

直到写完预定的Block为止。节点1、节点2和节点3之间也会以同样的方式同步传输。

(7)当第一个Block传输完毕后,客户端会再次发送请求到NameNode,将整个流程再次重

复。

三、编程题

编写程序完成HDFS文件系统根目录下所有文件的列举。

Configurationconf=newConfiguration();

hdfs=FileSystem.get(newURIiHDFS.PATH),conf,"hadoop");

Stringpath=

FileStatusQlistStatus=hdfs.listStatus(newPath(path));

for(FileStatusfs:listStatus){

system.out.|println(fs.getPath())

);

习题

一、填空题

1.YARN提供的调度器策略有FIFOScheduler(FIFO调度器)、CapacityScheduler(容

量调度器)和FairScheduler(公平调度器).

2.YARN采用的体系架构是主从结构,其中主节点是ResourceManager,从节点是

NodeManager。

3.ResourceManager的两个重要组件是Scheduler和ApplicationsManager0

4.在NodeManager中封装内存、CPU、磁盘、网络等资源的是Container。

二、简答题

1.简述共享集群模式的优点。

答:

(1)资源利用率高

(2)运维成本低

(3)数据共享

2.简述ApplicationMaster的主要作用。

答:

(1)为运行应用向ResourceManager申请资源。

(2)在Job中对Task实现调度。

(3)与NodeManager通信以启动或者停止任务。

(4)监控所有任务的运行情况,并在任务失败的情况下重新为任务申请资源以重启任

3.简述YARN的工作流程。

答:

(1)用户编写客户端应用程序,向YARN中提交应用程序,其中包括ApplicationMaster

程序、启动ApplicationMaster的命令、用户程序等。

(2)ResourceManager接到客户端应用程序的请求,会为该应用程序分配一个

Container,同时ResourceManager的ApplicationManager会与该容器所在的

NodeManager通信,要求它在这个Container中启动一个ApplicationMaster。

(3)ApplicationMaster被创建后首先向ResourceManager注册,这样用户可以直接通

过ResourceManager查看应用程序的运行状态,然后它将为各人任务申请资源,并监

控它的运行状态,直到运行结束,即重复步骤4〜步骤7。

(4)ApplicationMaster采乐轮询的方式,通过RPC协议向ResourceManager申请和

领取资源。

(5)一旦ApplicationMaster申请到资源,就会与该容器所在的NodeManager通信,

要求它启动任务。

习题

一、填空题

1.MapReduce执行过程中,数据都是以key.汕&的形式进行传递的。

2.整个MapReduce作业的生命周期是由A—plicaiionMasier来的.

3.整个MapReduce作业的资源分配是由ResourceManager来菅理的,

二、简答题

1.简述MapReduce的执行过程。

答:在map阶段,系统会将数据拆分成若干个“分片"(split),分片完成后,再将这些"分片"

数据以键-值方式传递给m叩进行处理,m叩和reduce都以键-值形式作为输入和输出。作为map

端的输入,默认情况下,键是字符的位移,值是当前行的数据;此键-值对会作为参数被陆续传

递给m叩端的处理程序,直到数据全部传递完成。imp方法产生输出时,经过分区和排序后将

其写入磁盘。

在reduce端的,reduce端会通过多个复制线程去"拉取"不同imp节点输出的数据文件,并

对这些数据文件进行排序和合并,合并之后的文件被传入reduce方法中/educe方法执行后,数

据将被输出到文件系统,通常是HDFS。

2.简述shuffle过程。

答:(1)m叩端

当m叩任务产生输出时,基于效率的考虑,输出数据不会直接写到磁盘上,而是先写入一

个缓冲区中,此缓冲区默认大小为100MB,当写入的数据达到缓冲区的阈值(默认为80%)时,

会将缓冲区中的辘溢写(spill)到磁盘,生成一个文件,在写入磁盘文件之前,会对这部分数

据进行分区,然后对每个分区中的数据按键进行排序,然后写入磁盘中。随着map任务的执行,

可能会产生多个溢写文件,这些文件在任务结束执行前,会合并为一个已分区且每个分区都已排

序的完整的文件,并保存在本地的磁盘中。

(2)reduce端

reduce端并不会等待所有map任务结束再去获取map端输出的数据,induce端的T线程会定

期询问ApplicationMaster,一旦有m叩任务结束rreduce端就开始复制糊g。reduce会启动若干复制

线程以并行M方式从各个m叩节点复制数据。reduce节点通常不会复制map节点整个的输出文件,

而是只复制属于自己的分区幡,复制完成所有map的辘后,会将各部分辘再次进行合并,合

并前会3行必要K腓序,以彳称勺完整性。

3.简述本地化的含义。

答:m叩任务有本地化的局限,意思是m叩任务一般情况下都会运行在分片所在的节点上,

这样的好处是可以不用跨节点传输数据,从而大大提高了程序运行效率。

4.简述数据分片过程。

答:在m叩阶段,系统会将数据拆分成若干个“分片”(split),这里所说的“分片"只是逻辑上

的切分,并非真正物理上的切分,每个分片的大小默认就是一个块的大小。例如,假设初始设定

一个块的大小为128MB,如果有两个文件,一个50MB,一个150MB,则一共会被划分成3个

分片,50MB的划分成一个,150MB划分成两个,分别是128MB和22MB。

5.简述YARN的MapReduce的资源分配过程。

答:当MapReduce作业启动后,会通知YARN,并由YARN的ResourccManager在

NodeManager的管理下分配一个容器(Container),然后在这个容器中启动ApplicationMaster进

程。MapReduce作业的ApplicationMaster是一个Java程序,它的主类是MRAppMastero

ApplicationMaster启动后,首先会做一定的初始工作,然后会分析M叩Reduce作业的规模,

如果规模足够大,则再次向ResourceManager请求容器用于map和reduce任务的执行。对于imp

任务,根据数据本地化的要求,会尽可能地将容器分配到数据所在节点,而reduce任务则不会

考虑。默认情况下,每个m叩和reduce任务都被分配了1024MB的内存和一个虚拟CPU内核,

容器启动后,会拉取任务所需的相关的配置信息、打包好的MapReduce的JAR文件以及来自分

布式缓存的文件到当前节点,然后开始运行m叩或reduce任务。

6.简述InputFormat和OutputFormat的作用。

答:⑴InputFormat负责创建输入分片并将它们分割成记录

(2)OutputFormat主要用于描述输出数据的格式,它能够将用户提供的

key/value对

写入特定格式的文件中

习题

一、选择题

1.Writable接口中进行序列化写操作的方法为(A\

A.writeB.readFieldsC.writeFieldsD.read

2.SequenceFile.Writer完成新记录的添加的方法为(C\

A.writeB.newC.appendD.add

二、简答题

列举JavaJang.String和Text类型的区别。

答:(1)Text对象的charAt方法返回的是当前位置字符对应的Unicode编码的位置,String

对象返回的是当前位置对应的字符(char类型X

三、编程题

实现自定义序列化类,要求该类可以实现以下数据的序列化。

编号姓名年龄

StringStringByte

publicclassPeopleimplementsWritable{

privateStringid;

privateStringname;

privatebyteage;

©Override

publicvoidreadFields(Datalnputin)throwslOException{

id=in.readUTF();

name=in.readUTF();

age=in.readByte();

)

©Override

publicvoidwrite(DataOutputout)throwslOException{

out.write(id.getBytes());

out.write(name.getBytesQ);

out.write(age);

)

习题

一、选择题

1.Hadoop3.x是基于(C)版本的JDK进行编译的。

A.JDK1.6B.JDK1.7C.JDK1.8D.JDK1.9

2.Hadoop2.x版本中HDFS默认的NameNoderpc监听端口号是(B),Hadoop3.x中

将此默认端口号改为了(BI

A.90009820B.80209820C.500708020D.5001050070

3.Hadoop的NameNoderpc监听端口可以在配置文件(C)中进行配置。

A.mapred-site.xmlB.hdfs-site.xml

C.core-site.xmlD.hadoop-env.sh

4.以下不属于Hadoop3.x新特性的是(D工

A.引入了EC技术B.JDK进行了升级

C.实现了DataNode内部负责均衡D.实现了HA集群

二、填空题

1.EC技术的全称昂ErasureCoding.星HadoopHDFS3.x版本以卜新增的功能,

2.在较老版本的Hadoop集群中,NameNodeBHDFS集群中的单点故障。每个集群只有一

个NameNode,并且如果该计算机或进程不可用,则整个集群将不可用。

3.Hadoop2.x版本中HDFS默认的NameNodeHTTPUI端口号是50070,Hadoop3.x版本

中将此默认端口号改为了9870o

三、简答题

1.Hadoop3.x相比Hadoop2.x都有哪些新的特性?

答:(1)Hadoop2.x版本是基于JDK1.7进行编译的,而Hadoop3.x所有的HadoopJARs都是

针对JDK1.8编译的。

(2)HDFS3.x很多改进采用了EC技术,且支持数据的擦除编码

(3)Hadoop3.x弓|入了YARNTimelineService(YARN时间轴服务)v.2,创建v.2是为了应

对'•」的两个主要挑战提高时间轴服务的可伸缩性和可靠性、通过引入流和聚合来增强可用性。

(4)在Hadoop3中允许用户运行多个备用的NameNode,

(5)DataNode内部负载均衡

(6)端口号的改变

(7)Shell脚本重写

(8)GPU和FPGA支持

2.Hadoop3.x支持的NameNode和传统的HadoopHA架构相比有什么优势?

答:在Hadoop3中允许用户运行多个备用的NameNode

3.Hadoop3.x的DataNode内部负载均衡功能如何使用?

答:Hadoop3.x通过新的内部DataNode平衡功能来处理内部负载均衡,具体是通过

HDFSDiskBalancerCLI(HDFS磁盘平衡命令行接口)来实现的,实现DiskBalancer功能,首

先需要创建操作计划,然后在DataNode上执行该计划。操作计划通常是由一组语句组成的,计

划中描述两个磁盘之间应移动多少数据。使用磁盘平衡功能前应该注意在默认情况下,集群上未

启用磁盘平衡器。要启用磁盘平衡功能,必须在hdfs-site.xml配置文件中将

dfs.disk.balancer.enabled设置为true.

习题

一、填空题

1.ClouderaManager的主要组件包括Server、AgentManagement、Database、

ClouderaRepository和Clients,

2.ClouderaManager提供的管理功能有批量自动化部署节点、可视化的参数配置、智能

参数验证以及优化和权限管理.

3.ClouderaManager提供的监控功能有服务监控、主机监控、行为监控、事件活动、报警

和日志和报告.

二、简答题

1.简述ClouderaManager的主要特点。

答:

(1)大数据处理相关服务安装过程自动化,部署时间从几周缩短到几分钟。

(2)提供集群范围内的主机和正在运行的服务的实时视图。

(3)提供了单个中央控制台,方便在整个集群中进行配置更改。

(4)整合了各种报告和诊断工具,可以优化集群的性能和利用率,提高服务质量,提高合规

性并降低管理成本。

2.分别简述service和serviceinstance的概念。

答:Service(服务)是ClouderaManager中的托管功能类别,有时也被称为服务类型,

这些服务运行在集群中,可能是分布式的,也可能是单节点的,如MapReduce、HDFS%YARN

和Spark.

ServiceInstance(服务实例)即在ClouderaManager集群中运行的服务的实例。

3.分别简述role、roleinstance和rolegroup的概念。

Role(角色)是指service中的一类功能,有时也被称为角色类型。例如,HDFS服务中的角

色有NameNode、SecondaryNameNode.DataNode和Balancer,

RoleInstance(角色实例)是指ClouderaManager中,在主机上运行的角色的实例,它通常

会映射到JUNIX进程中,我们可以通过jps命令对其进行查看。

在ClouderaManager中,RoleGroup(角色组)是指角色实例的一组配置属性,这是一种将

配置分配给一组角色实例的机制。

三、上机题

1•根据9.4节,完成ClodueraManager和CDH的离线部署,搭建CDH集群环境。

答:见章节内容

2.在ClouderaManager管理菜单中启动HDFSHA和YARNHA。

答:见章节内容

习题

一、填空题

1.AvroSchema的基本类型中表示空值的是_null,表示8位无符号字节序列的是

bytes

2.AvroSchema的复杂类型中record类型定义record名称的属性是_皿型—,限定名称的属

件是namesDace»»

3.定义AvroSchema类型的属性是type,定义JSON数组的属性是fields0

二、简答题

1.简述ApacheAvro的主要功能。

答:(1)丰富的数据结构。

(2)一种紧凑、快速的二进制数据格式。

(3)容器文件,用于存储持久性数据。

(4)远程过程调用。

(5)与动态语言的简单集成。读取或写入数据文件,使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论