大数据技术基础及应用教程(Linux+Hadoop+Spark) 习题答案_第1页
大数据技术基础及应用教程(Linux+Hadoop+Spark) 习题答案_第2页
大数据技术基础及应用教程(Linux+Hadoop+Spark) 习题答案_第3页
大数据技术基础及应用教程(Linux+Hadoop+Spark) 习题答案_第4页
大数据技术基础及应用教程(Linux+Hadoop+Spark) 习题答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

大数据技术基础及应用教程(Linux+Hadoop+Spark)习题答案

第1章练习

一、选择题

I.大数据的特点有哪些?(多选)(AB)

A.处理速度快B.多样化

C.价值密度高D.数据冗余度低

2.下面哪些是人数据的计算模式?(多选)(ABCD)

A.流式计算B.批处理计算:

C.查询分析计算D.图计算

3.Linux支持多少位硬件?(多选)(AC)

A.64位B.I28;立

C.32位D.256位

4.Hadoop生态系统的主要组成不包括?(B)

A.MapReduceB.ZooKeeper

C.HDFS文件系统D.YARN

二、判断题

1.大数据是指数据量很大的数据集。(X)

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

软件框架。<V)

3.Hadoop只能运行在由一般商用机器构成的大型集群上。(X)

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

三、简答题

1.简述大数据技术的特点。

答:Volume(大体量):即可从数百TB到数十数百PB、甚至EB规模。Variety

(多样性):即大数据包括各种格式和形态的数据。Velocity(时效

性):即很多大数据需要在定的时间限度下得到及时处理。Vdity(准确性):即

处理的结果要保证一定的准确性。Value(大价值):即大数据包

含很多深度的价值,大数据分析挖掘和利用带来巨大的商

业价值。

2.简要介绍几种Hadoop系统的组件及其作用。

答:

HDFS:Hadoop分布式文件系统,具有处理超大数据、流式处理、可以运行在廉价商用

服务器上等优点。HDFS在访问应用程序数据时,可以具有很高的吞吐率,因此对于超大数

据集的应用程序而言,选择HDFS作为底层数据存储是较好的选择。

HBase:相当于关系型数据库,数据放在文件中,而文件放在HDFS中。因此,HBase

是基于HDFS的关系型数据库。

M叩Reduce:是一种编程模型,用于大规模数据集(大于1TB)的并行运算,它将复杂

的、运行于大规模集群上的并行计算过程高度抽象到了两个函数一一M叩和Reduce上,并

且允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,并将其运行于廉价的计

算机集群上,从而完成海量数据的处理。

ZooKeeper是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供

分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。

第2章练习

一、选择题

I.下列哪项不包括在大数据的分析流程中?(A)

A.数据校验B.数据集成

C.数据规约D.数据挖掘

2.人数据分析的常用方法有哪些?(多选)(ABCD)

A.K-meansB.线性回归

C.分类分析D.数理统计

3.下列哪项不是数据可视化的工具?(D)

A.SupersetB.Matplotlib

C.PycharlsD.seleniuin

二、判断题

I.大数据分析包括数据采集、预处理、存储、分析和可视化。(J)

2.selenium是大数据清洗过程中用到的主要工具。(X)

3.常用的聚类分析法有决策树、神经网络、贝叶斯分类、SVMo(X)

三、简答题

1.用自己的语言描述大数据分析的流程。

答:大数据分析的一㈱花程,分为数据采集、数据预处理、数据存储、数据建模与分析、数据

可视化这几个阶段。首先通过传感器数据、社交网络数据等获得各种类型的结构化、半结构化及非

结构化的海量数据:对数据进行梃取、转换、加我,最终挖掘数据的潜在价值;把采集到的数据都

存储起来,建立相应的数据库,进行管理和调用:通过已有数据的统计分析技术和未知数据的

挖掘技术,从海量的数据中提取有用的知识;最终将大数据分析与预测结果以计算机图形或图像

的方式展示给用户。

2.说出数据分析过程中各阶段所用到的几种工具。

答:数据采集工具----Sclcuiuin和PhaiituiiiJS;数据清洗工具----Kellie;数据存储工具

-----MongoDB和MySQL;机器学习工具---Scikit-lcam;数据可视化工具----Matplotlib^

PyEchartsxSuperset。

第3章练习

一、选择题

L观察系统动态进程的命令是(B)

A.freeB.topC.lastcommD.df

2.系统中某文件的组外权限是只读、属主权限是全部、组内权限是可读可写,那么该文

件权限为(D)

A.467B.674C.476D.764

3.解压缩文件mydjango.tar.gz可以执行(A)

A.tar-zxvfinydjango.tar.gz

B.tar-xvzmydjango.tar.gz

C.tar-czfmydjango.tar.gz

D.tar-xvfmydjango.tar.gz

4.下列哪一项包含了主机名到IP地址映射关系的文件?(B)

A./etc/hostnameB./etc/hosts

C./etc/resolv.confD./etc/networks

5.退出交互式shell,应该输入什么命令?(D〉

A.q!B.quitC.;D.exit

二、判断题

I.Linux配置文件一般放在bin目或(X)

2.改变文件属主的命令是chmodo(X)

3.ping命令常用于检测网络主机是否可达。(V)

4.cd命令可以改变用户的当前目录,当用户键入命令“cd”并按Enter键后,当前目录

改为根目录。(J)

5.按下<Clrl+C>键能终止当前命令的运行。(V)

三、简答题

I.什么是Linux?创始人是谁?有哪些版本?

答:Linux是•套免费使用和自由传播的类Unix操作系统,是•个基于POSIX和UNIX

的多用户、多任务、支持多线程和多CPU的操作系统。创始人是芬兰人林纳斯•托瓦兹。版本:

Fedora、Debian、Ubunlu、Gcr.loo,FreeBSD,CcntOS....

2.请简单描述Linux系统安装完成后系统配置的步骤。

答:①修改用户权限:在root用户权限下(切换至root用户),修改文件/cic/sudocrs,

在rootALL=(ALL)ALL下方加入hadoopALL=(ALL)ALL,保存文件。

②关闭防火墙:使内网集群间的通信不受影响。

③新建资源目录:在目录/opt下新建两个文件夹softwares和modules,用于存储软件安

装包和安装后的文件。

3.执行命令“ls-1”时,某行显示:

-ru-r—r—1chrischris207Jul2011:58mydata

(1)用户chris对该文件有什么权限?

答;读写

(2)执行命令"useraddTom”后,用户Tom对该文件有什么权限?

答:只读

(3)如何使得全部用户拥有对该文件的所有权限?

答:chmod777mydata

(4)如何将文件属主更改为root?

答:chownrootmydata

第4章练习

一、选择题

1.下面哪个程序负责HDFS数据存储?(C)

A.NameNodeB.Jobtracker

C.DatanodcD.sccondaryNamcNodcE.taskirackcr2.

下列哪个程序通常与NameNode在一个节点启动?(D)

A.Scconda^NamcNodcB.DataNodc

C.TaskTrackerD.Jobtracker

3.关于SecondaryNameNode哪项是正确的?(C)

A.它是NameNode的热备B.它对内存没有要求

C.它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间

D.Seconda^NameNode应与NameNode部署到一个节点

4.下列哪个是Hadoop运行的模式?(多选)(ABC)

A.单机版B.伪分布式C.分布式

二、思考题

I.启动hadoop报以下错误,分别该如何解决?

-org.apache.hadoop.hdfs.server.namcnodc.NamcNodc

-Directory/tmp/hadoop-root/dfs/nanieisinaninconsistent

答:①找不到或无法加载主关,应该是配置文件中hadoop安装位置配置信心对haUoop-

env.sh文件进行检查修改。

②存储目录不存在或被删除。新设置core-sile.xml中hadoup.lmp.dir的值,对namenode

进行格式化。

2.请列出正常工作的hadoop集群中需要启动的进程,并简要介绍其作用。

答:NameNode>DataNodc、SecondaryNameNode、RcsourccManagcr^NodcManagcro

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

数据信息。

②SecondaryNameNode相当于一个Natnenode元数据的备份机制,提供周期检杳点和清

理任务,和Namenode进行通信,将Namenode上的image和edits进行合并,减少NN启动

时间。

③DataNode是具体文件系统的工作节点,负责管理连接到节点的存储(一个集群中可

以有多个节点)。每个存储数据的节点运行一个datanode守护进程。

(4)RcsourccManager(JobTracker):Yarn的守护进程,负责所有资源的分配与调度,监

控Nodemanager。

⑤NodeManager(TaskTnicker):单个节点的资源管理,执行来自ResourceManager的具

体任务。

3.请简述hadoop实现二级排序的原理。

答:MapReduce中本身就会对key进行排序,所以我们需要对value进行排序。主要思

想为将key和部分value拼接成一个组合key(实现WritablcCompiiriiblc接口或者调用

setSortComparatorClass函数),这样reduce获取的结果便是先按key排序,后按value排序

的结果,在这个方法中,用户需要自己实现Parilioner,维承Partitioned>,以便只按照key

进行数据划分。Hadoop显式支持二:次排序,Configuration类中的selGroupingComparatorClass。

方法,可用于设置排序group的key值。

三、设计题

I.给定100万个字符串,其中有些是相同的(重复),需要把重复的全部去掉,保留没

有重复的字符串。请结合MapReduce编程模型给出设计思路或核心代码。

思路:分而治之。根据MapReduce的工作原理可知,MapReduce的Shuffle阶段会将

Map任务的结果数据进行分区,并按照key进行分组,同一组的数据将输入到同一个Reduce

任务中进行处理。而根据key分组的过程,实际上就是去重的过程。因此,将每个字符串作为

key即可达到数据去重的目的。

publicsialicclassProjectionMapextends

Mapper<LongWntable,Text,Text,NullWiitable>{privateintclo;

projectvoidsetup(Cortextcontext)throwsIOException.InterruptedException{

col=context.getConfiguraiion().getIni('cor\0);

)

publicvoidmap(LongWritableoffset.Textline,Context

context)(relationArecord=newRelationA(line.toSiringO);

context.writc(newTcx((rccord.gctCol(col)),NullWritablc.gc(());

)

)

publicstaticclassProjectionReduceextends

Reducer<Texi,NullWritab)e.Text.NullWritable>{publicvoidreduce(Textkey,

lterable<NullWritable>value,Contextcontext)throws

IOExcep(ion,InterruptedExcep(ion{

)

)

2.请在下面程序的下划线中补充完整程序(共8处)。

publicclassWordCount{

publicstalicclassTokenizerMapperextends

Mapper<Object.Text.Text、IntWritable>{

privatefinalstaticIntWritableone=newIntWritable(l);

privateTextword=newText();

publicvoidmap(LongWritablekey.Textvalue,Context

context){StringTokenizeritr=new

StringTokenizer(valoe.toStringO);while(iir.hasMorcTokcnsO){

word.set(itr.nextToken());

context.write(worc,one);

)

}

)

publicstaticclassIntSuniReducerextends

Reducer<Text,IntWritable,Text,IntWritable>{

privateIntWritableresult=newln(WrHable():

publicvoidreducc(Tcx【,key,Ilcrable<IntWritable>values,Contextcontext){

intsum=0;

for(IntWritableval:values)

{sum+=val.getO;

}

result.set(sum);

context.write(key,result);

)

)

publicstaticvoidmain(S(ring[]args)throwsException{

第5章练习

一、选择题

I.最早是Cloudera提供的日志收集系统,目前是Apache二的一个孵化项目,支持在日

志系统中定制各类数据发送方,用于收集数据的工具是?(A)

A.FlumeB.ZooKeeper

C.StonnD.SparkStreaming

2.作为分布式消息队列,既有很高的吞吐量,乂有较高的可靠性和扩展性,同时接受

SparkSlreaming的请求,将流量日志按序发送给SparkSlreaming集群是?(C)

A.FlumeB.ZooKeeper

C.KafkaD.SparkStreaming

3.Spark组成部件包括?(多选)(BC)

A.ResourceManagerB.Executor

C.DriverD.RDD

4.下面不属于Spark四大组件的有?(多选)(AC)

A.SparkRB.MLlib

C.pysparkD.SparkStreaming

二、判断题

I.Yam可以作为Spark的资源调度框架”(J)

2.scaia的基本数据类型和java完全一致。(X)

3.如果将以下程序中第10行的(x,l)换成(x「l),输出结果不变。3

6・defmain(args:Array[String]){

valsource■Source.fronFlle("irput/eKam.data',,UTF-8-*).getLines().to/Jrray

source,

9.flatMap(x->x.trim().split(M"))

10•map(x->(x,))

11.groupBy(x■>x.wl)

U.map(x■>x._2.length))

.toList.sor'tByCx->x._2)

.•Foreach(x«>print(x))

151,

三、思考题

I.已知exani.data文件中数据为:abcaabca,请写出下列程序的运行结果。

valsource=Source.fromFile(inpirt/exam.data",'UTF-8").getLines().toArray

source.flatMaD(x■>x.trinO.SDlitC->(x,i))

.groupBy(x■>x._l)

.map(x«>(x._l,x._2.length))

.toList.sortBy(x=>-x._2)

.foreach(x=>print(x))

答:(b,2)(c,3)(a,4)

2.已知已有学生数据如下:

l班汲学号廷名出生M月±2蠹居住址身惠手机号

2RB171RB17101张祥德199782-13AB同醪$H卅勺1号17211122223333

'•RBI71RB17102冯或刚199610-01A闻情曲当阳力2号17518837110115

卢伟兴3nli省开豺方3916S199$9228822

4RB171RB17163男19986802B

VR0171R017104杨二龙可*色亶田市4号*613322554455

女1996-08-WA8

R0)A同***壁电1号17013648552244

6RBI72里*匕纬

惠飞同・笔斯*方?W

7RBI7?R817707女1996-08-77B17113522114455

>1.RBI72RB17203何惮1997-12-20B河育省•作方3号16813566998855

请写出下列程序的作用。

defmain(args:Array[String]){

valsource=scala.io.Source.-FromFile("input/stjdents.data","UTF-8")

.getLines().toArray

Vdlphone=source.nap(.trimQ.split(****))

.filter<_.length■■)

.map(x->(x(),x().substring(,).replaceAll(M-","")))

.toList

.groupBy(_._2)

.mapValues(_.map(_._l))

.toList

.foreach(println())

}

答:求平均年龄

第6章练习

一、简答题

L为什么Redis需要把所有数据放到内存中?

答:Redis为了达到最快的读写速度,将数据都读到内存口,并通过异步的方式将数据

写入磁盘,所以Redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O

速度为严重影响Redis的性能。

2.如何保证Kafka顺序消近?

答:相同的业务ID设置为同一个key,存放到同一个分区中;每个分区中有单独对应

的一个消费者实现消费。

3.SparkStreaming是如何与Kafka整合的?

答:(^Receiver接收方式Kaf'kaUtils.createDstream:通过ZooKeeper来连接Kafka队列,

调用Kafka高阶API,offset存储在ZooKccpcr,tl:|Receiver维护。该模式可能会出现数据

不一致等问题,当前已不适合在开发中使用。

②Direct直连方式Kaf-kaUtils.createDirectSlream:直接连接Kafka分区来获取数据,从

每个分区直接读取数据大大提高了并行能力,调用Kafka低阶API(底层API),offset自己

存储和维护,默认由Spark维护在checkpoint中。

二、设计题

已知表a中字段内容如下:

字段字段含义

index数据id

child_comment回复数量

comment_time评论时间

content评论内容

da_v微博个人认证

like_status赞

pic图片评论url

user_id微博用户id

uscr_namc微博用户名

vip_rank微博会员等级

stamp时闰戳

要求:

1.在kafka中创建commcni主题,设置2个分区2个副本:

答:kafka-topics.sh-create-zookeepermaster:218i.slave1:2181.slave2:2181-replication-

factor2-partitions2-topiccomment

2.使用SparkStreaming对接kafka后进行计算,查询并输出微博会员等级为5的用户。

3.查询并愉出评论赞的个数在10个以上的数据.

答:2、3题程序如下

importjava.sql.{Connection,DriverManager.PreparedStatement}

importjava.text.SimpleDateFormat

importorg.apache.kafka.clients.consunier.ConsumerRecord

importmon.serialization.StringDeserializer

importorg.apache.spark.{SparkConf,SparkContext}

importorg.apache.spark.rdd.RDD

importorg.apache.spark.streaming.!Seconds,StreamingContext)

importorg.apache.spark.streaming.dstream.{DStieani,InputDStream}

importorg.apachc.spark.streaming.kafkaO10.{ConsinncrStratcgics,KafkaUtils.LocaiionStrategies}

objectSparkStreaming{

defmain(args:Array[String]):Unit={

valsparkConf:SparkConf=new

SparkConf().setMaster("locaU*]').setAppName("SparkStreaming")

valssc=newSlrcamingContext(sparkConf.Scconds(3))

valkafkaParams=Map[String.Object](

"bootstrap.servers"->"hadoopO1:9092,hadoop02:9092,hadoop03:9092",

"key.dcscrializer"->classOf[StringDcscrializer].

"value.deserializer"->chssOf|StringDeserializer],

"group.id"->"SparkKafkaDemo",

"auto.offset.reset"->"latest",

"mit"->(false:java.lang.Boolean)

)

vartopics=Array("mg_comment")

valrecordDStream:InputDStreain[ConsumerRecord[S(ring,String]]

KafkaUlils.createDireclStreamfString.String](ssc.

Locationstrategies.PrefefConsistent,

ConsumerS(rategies.Subscribe|String,StringRtopics,kafkaPcrams))

valresultDStream:DStream[Array[Stringl]

recordDStream.map(_.value()).niap(_.split(,'\t")).cache()

〃2、查询出微博会员等级为5的用户。

resultDStream.filter(_⑼=="5")foreachRDD

{rdd:RDD[Array[String]]=>{

rdd.foicachPartition(

iter:Iterator|Array[Stringl]=>

{Class.forNamei"coni.mysql.jdbc.Driver

")

valconnection:Connection

DriverMaiiager.getConnection("idbc:mysql://localhost:3306/rng_coinment?characterEncoding=U

TF-8","root","root")

valsql="insertintovip_rankvalues

iter.(breach{

line:Array[Stnng]=>{

valstatement:PreparedStatement=connection.prepareSlaiemenl(sql)

statement.setlnt(1.line(O).toInt);

statement.sellnt(2,line(l).tolnt);

statcrncnt.sctString(3.Iinc(2));

statement.selString(4.line(3));

statement.setString(5,1ine(4));

statement.setString(6,line(5));

statement.selString(7.Iinc(6));

statement.setString(8,line(7));

statement.setString(9.line(8)):

statement.setlnt(l0,line(9).tolnt);

slalcment.sclS(ring(11,linc(10));

statement.executeUpdate()

statement.close()

}

}

connection.close()

)

)

)

)

〃3、查询并输出评论赞的个数在10个以上的数据。

rcsultDStrcam.filtcrQ(5uoln(>10).foreachRDD{

rdd:RDD[Array[String]]=>{

rdd.foreachPartition{

iter:Iterator!Array[String]]=>

{Ciass.fbrNameC'com.mysql.jdbc.Driver

")

valconnection:Connection=

DriverManager.getConnection("jdbc:mysql://localhost:3306/rng_commenr?characterEncoding=U

TF-8","root","root")

varsql="insertintolike_s(atusvalues(???,?,?,?,?,?,???)”

iter.foreach{

line:Array(StringJ=>{

valstatement;PrcparcdStatcmcnt-connection.prcparcStatcincnt(sql)

statementsetlni(l,line(O).loInt);

statementsetlnt(2,line(1).tolnt);

statementsetString(3,line(2));

statementsctS(ring(4,linc(3));

statementsetString(5.line(4));

statementsetString(6,line(5));

statementsetString(7,line(6));

statementsetString(8.linc(7));

statementsetString(9.line(8));

statementsetlnt(10,line(9).tolnt);

温馨提示

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

评论

0/150

提交评论