Hadoop+HBase技术项目教程 课后习题答案_第1页
Hadoop+HBase技术项目教程 课后习题答案_第2页
Hadoop+HBase技术项目教程 课后习题答案_第3页
Hadoop+HBase技术项目教程 课后习题答案_第4页
Hadoop+HBase技术项目教程 课后习题答案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

【课后练习答案】

项目1:

一、选择题

l.A2.C3.D4.C5.A

二、判断题

l.T2.T3.F4.F

三、简答题

1.简述大数据研究的意义。

研究大数据,最重要的意义是预测。因为数据从根本上讲,是对过去和现在

的归纳和总结,其本身不具备趋势和方向性的特征,但是我们可以应用大数据去

了解事物发展的客观规律、了解人类行为,并且能够帮助我们改变过去的思维方

式,建立新的数据思维模型,从而对未来进行预测和推测。比如,商业公司对消

费者日常的购买行为和使用商品习惯进行汇总和分析,了解到消费者的需求,从

而改进己有商品并适时推出新的商品,消费者的购买欲将会提高。知名互联网公

司谷歌对其用户每天频繁搜索的词汇进行数据挖掘,从而进行相关的广告推广和

商业研究。

2.简述Hadoop版本区别。

Hadoopl.0和2.0的主要区别:

1.新增yarn,1.0时mr的运行环境为JobTracker和TaskTracker,2.0

则取消了JobTracker和TaskTracker,使用yarn作为mr的资源调度调度器

2.解决了hadoopl.0中NN的单点故障,可以使用NN的Ha

3.Hadoop2.x默认的block大小是128MB,Hadoop1.x默认的block

大小是64MB

项目2:

一、选择题

l.D2.D3.B4.C5.B6.B

二、判断题

l.T2.F3.F4.F

三、问答题:

1.启动Hadoop系统,当使用bin/start-all.sh命令启动时,请给出集群

各进程启动顺序。

启动顺序:

namenode->datanode->secondarynamenode->resourcemanager->nodemanager

2.列出Hadoop的进程名,作用分别是什么?

Namenode进程:HDFS的守护进程,负责维护整个文件系统,存储着整个文

件系统的元数据信息,有image+editlognamenode不会持久化存储这些数据,

而是在启动时重建这些数据。

Datanode进程:具体文件系统的工作节点,当我们需要某个数据,namenode

告诉我们去哪里找,就直接和那个DataNode对应的服务器的后台进程进行通信,

由DataNode进行数据的检索,然后进行具体的读/写操作

Secondarynamenode进程:一个冗余的守护进程,相当于一个namenode的

元数据的备份机制,定期的更新,和namenode进行通信,将namenode上的image

和edits进行合并,可以作为namenode的备份使用

Resourcemanager进程:yarn平台的守护进程,负责所有资源的分配与调度,

client的请求由此负责,监控nodemanager

nodemanager进程:单个节点的资源管理,执行来自resourcemanager的具

体任务和命令

项目3:

一、选择题

1.A2.C3.C4.D5.C

二、填空题

1.DataNode2.hdfsversion3.一次写入,多次读取4.DataNode

5.hadoopfs、hadoopdfs、hdfsdfs

三、问答题:

1.HDFS和传统的分布式文件系统相比较,有哪些独特的特性?

(1)分片冗余,本地校验。传统的分布式的文件系统会因为分布后的结构不

完整,导致系统复杂度加大,并且引入的网络编程,同样导致分布式文件系统更

加复杂。而HDFS采用分片冗余,本地校验的方法很好的解决了传统分布式的文

件系统的这一问题。数据冗余式存储,直接将多份的分片文件交给分片后的存储

服务器去校验。

(2)准确性高。冗余后的分片文件还有个额外功能,只要冗余的分片文件中

有一份是完整的,经过多次协同调整后,其他分片文件也将完整。经过协调校验,

无论是传输错误,I/O错误,还是个别服务错宕机,整个系统里的文件是完整的

(3)弹性好。传统分布式文件系统有个无法回避的问题,因为文件不在一个

磁盘导致读取访问操作的延时,而现阶段,HDFS的配置是按照高数据吞吐量优

化的,可能会以高时间延时为代价。但万幸的是,HDFS是具有很高弹性,可以

针对具体应用再优化。

(4)优化的副本存放策略。HDFS采用一种称为机架感知的策略来改进数据的

可靠性、可用性和网络带宽的利用率。

2.为什么HDFS的块如此之大?

HDFS的块比磁盘块大,其目的是为了最小化寻址开销。如果块设置得足够

大,从磁盘传输数据的时间可以明显大于定位这个块开始位置所需的时间。这样,

传输一个由多个块组成的文件的时间取决于磁盘传输速率。

我们来做一个速算,如果寻址时间为10ms左右,而传输速率为100MB/S,

为了使寻址时间仅占传输时间的1%,我们需要设置块大小为100MB左右。而默

认的块大小实际为64MB,但是很多情况下HDFS使用128MB的块设置。以后随着

新一代磁盘驱动器传输速率的提升,块的大小将被设置得更大。

但是该参数也不会设置得过大。M卯Reduce中的map任务通常一次处理一个

块中的数据,因此任务数太少(少于集群中的节点数量),作业的运行速度就会

比较慢。

3.HDFS中数据副本的存放策略是什么?

副本一:同Client的节点上

副木二,不同机架中的节点上

副本三:同第二个副本的机架中的另一个节点上

其他副本:随机挑选

项目4:

一、填空题:

Map;Reduce

Copy;Merge;Sort;Reduce;Write

Shuffle

二、判断题:

1、正确2、错误3、正确

三、单选题:

1、A2、D3、B

四、简答题

1.MapReduce的核心思想是什么?

MapReduce的核心思想就是“分而治之”。也就是说把一个复杂的问题,按

照一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找

出各个部分的结果,把各部分的结果组成整个问题的结果。

2.简述MapReduce的执行过程。

MapReduce存在以下4个独立的实体。

(1)JobClient:运行于clientnode,负责将MapReduce程序打成Jar包

存储到HDFS,并把Jar包的路径提交到Jobtracker,由Jobtracker进行任务的

分配和监控。

(2)JobTracker:运行于namenode,负责接收JobClient提交的Job,

调度Job的每一个子task运行于TaskTracker上,并监控它们,如果发现有失

败的task就重新运行它。

(3)TaskTracker:运行于datanode,负责主动与JobTracker通信,接

收作业,并直接执行每一个任务。

(4)HDFS:用来与其它实体间共享作业文件。

项目5:

一、填空题:

1.Combiner

2.分片;格式化数据源;执行MapTask;执行Shuffle过程;执行ReduceTask;

写入文件

3.将key均匀分布在ReduceTask上

二、判断题:

1、正确2、正确3、错误

三、单选题:

1、B2、B3、C

四、简答题

1.为什么要进行Combiner操作?

每一个map可能会产生大量的输出,combiner的作用就是在map端对输出

先做一次合并,以减少传输到reducer的数据量。

combiner最基本是实现本地key的归并,combiner具有类似本地的reduce

功能。

如果不用combiner,那么,所有的结果都是reduce完成,效率会相对低下。

使用combiner,先完成的map会在本地聚合,提升速度。

2.MapReduce是如何进行Partitioner分区的?

定义一个Partitioner组件,需要继承Partitioner类,并重写

getPartition()方法。在重写getPartition()方法时,通常的做法是使用hash

函数对文件数量进行分区,即通过hash操作,获得一个非负整数的hash码,然

后用当前作业的reduce节点数进行取模运算,从而实现数据均匀分布在

ReduceTask的目的。

项目6:

答案:本题为设计类题,设计答案不唯一,给出部分答案

1)按字段创建表vistor。

将数据源内容存储到集群中/usr/local/src/datas/user.txtr下。

创建表

hive>createdatabasevistorData;

hive>usevistorData;

hive>createtableifnotexistsvistor(useidint,name

string,umonthint,numint)

rowformatdelimitedfieldsterminatedby'\t'

storedastextfile

locationJ/usr/local/src/user,;

2)导入数据源到表中。

向普通表vistor中利用loaddata方式导入数据。

hive>loaddatalocalinpath*/usr/local/src/datas/user.txtJinto

tablevistor;

项目7:

以表7-5为例进行部分答案说明,本题为设计类题,设计答案不唯一

表7-5学生表(Student)

S_NoNameSexAge

2015001Zhangsanmale23

2015002Maryfemale22

2015003Lisimale24

1)要求用HBaseshell命令实现建表及数据的增/删除/改操作。

过程:

转换成HBase的逻辑表。

S_Nofl

namesexage

201500Zhangsanmale23

1

201500Maryfemale22

2

201500Lisimale24

3

用HBaseshell命令实现建表

hbase>create'student,,'fT

数据的增/删除/改操作。

增加数据:

hbase>putstudent*,'201500T,'fl:name,,'Zhangsan'

hbase>putstudent','2015001','fl:dex',male'

hbase>putstudent','2015001','fl:age',‘23'

hbase>putstudent'2015002',,fl:name,,,Mary

hbase>putstudent'2015002','fl:dcx',*female'

hbase>putstudent'2015002','fl:age','22'

hbase>putstudent'2015003',,fl:name,,,Lisi

hbase>putstudent1,'2015003','fl:dex',,male

hbase>putstudent*,'2015003',,fl:age,,'24'

修改数据:将2015002的age值改为23

hbase>put'student','2015002,,'f1rage*,'23

删除数据:将2015002的age值删除

hbase>delete'student'2015002','fl:age'

2)要求用HBaseJavaAPI编程实现建表及数据的增/删除/改操作。

大家查看前面教材中相关内容,自行编写相关代码。

3)要求能用HBaseshell命令实现单条/多条记录查询。

单条记录查询

查询student中2015002的age列的值。

hbase>get'student','rkOOl','2015002','fl:age,

利用ValueFilter属性,查询2015002中2015002行中值是23的数据。

hbase>get'student','2015002,,{FILTER

ValueFilter(=,Jbinary:23,)w)

多条记录查询

扫描整个表列族为fl的数据。

hbase>scan'student',{COLUMN=>'fl'}

倒序扫描整个表。

hbase>scan*student?,{

温馨提示

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

评论

0/150

提交评论