云计算与大数据--配套习题(徐小龙) 第15章 分布式大数据处理平台Hadoop-习题答案.docx

上传人:太** 文档编号:63183604 上传时间:2022-11-23 格式:DOCX 页数:10 大小:36.30KB
返回 下载 相关 举报
云计算与大数据--配套习题(徐小龙) 第15章 分布式大数据处理平台Hadoop-习题答案.docx_第1页
第1页 / 共10页
云计算与大数据--配套习题(徐小龙) 第15章 分布式大数据处理平台Hadoop-习题答案.docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《云计算与大数据--配套习题(徐小龙) 第15章 分布式大数据处理平台Hadoop-习题答案.docx》由会员分享,可在线阅读,更多相关《云计算与大数据--配套习题(徐小龙) 第15章 分布式大数据处理平台Hadoop-习题答案.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第15章 分布式大数据处理平台Hadoop习题15.1选择题1、分布式系统的特点不包括以下的(D )。D.串行性D. SecondaryNamenodeD. 4D. EXT3A.分布性 B.高可用性C,可扩展性 2、Hadoop平台中的(B )负责数据的存储。A. Namenode B. DatanodeC. JobTracker 3、HDFS中block的默认副本数量是(A )。A. 3B. 2C. 1 4、下面与HDFS类似的框架是(C )oA. NTFS B. FAT32C. GFS 5、以下关于SecondaryNamenode的说法正确的选项是(B )。A.是元数据节点出现故障时的备

2、用节点B.周期性地将元数据节点的命名空间镜像文件与修改日志进行合并C.与元数据节点之间无需交互D.对内存没有要求 6、以下关于M叩Reduce的说法不正确的选项是(C )。A. MapRecuce可用于处理分布在几千台机器上的数据B. M叩Reduce是一种处理大数据的分布式计算模式C. MapReduce程序只能用C语言编写D. M叩Reduce隐藏了并行计算的细节,方便使用7、下面哪一个是一种编程模型,将大规模的数据处理工作拆分成互相独立的任务然后进行 并行处理(A )。A. MapReduce B. HDFS C. HBase D. Pig8、HBase基于(A )存储底层数据。A. H

3、DFSB. Hadoop C.内存 D. MapReduce9下面关于HBase错误的选项是(A )。A.不是开源的B.面向列的 C.分布式的D. NoSQL数据库 10、配置Hadoop时,JAVAJ4OME包含在(B )配置文件中。A. Hadoop-default.xmlB. hadoop-env.shC. Hadoop-site.xmlD. Configuration.xsl15.2填空题I、HDFS的基本数据存储单位是(数据块)。2、MapReduce按照时间顺序可以分为输入分片、(Map阶段 /Combiner阶段、(Shuffle 阶段)和(Reduce阶段)。15.3简答题I、

4、Hadoop主要有哪些优点?答: 扩容能力强。Hadoop能可靠存储和处理PB级的数据。 本钱低。Hadoop能通过普通机渊组成的服务器集群来分发和处理数据,服务器集 群规模可达数千个节点。 效率高。Hadoop能通过分发数据,在数据所在的节点上并行地进行处理,使得处 理非常快速。 可靠性。Hadoop能自动维护数据的多份副本,并在任务失败后自动地重新部署计 算任务。 高容错性。Hadoop能在不同的节点上维护多份副本,对于访问失败的节点,Hadoop 会自动寻找副本所在的节点进行访问2、请用描述HDFS读取文件的具体步骤。答: 客户端用分布式文件系统的open。函数翻开文件. 分布式文件系统

5、远程调用RPC,获取元数据节点的文件数据块信息;对于返回的 每一个数据块信息,元数据节点只返回保存数据块的数据节点的地址;接着分布式 文件系统返回FSDalalnpulSlream对象给客户端,其中封装了读取数据的方法。 客户端调用FSDatalnputStream中的read。函数开始读取数据;FSDatalnputStrcam 封装了 DFSInputSlream对象中用于管理元数据节点和数据节点的I/O操作的方法, 客户端调用read。函数后,使用DFSInputStrcam对象中的I/O操作;DFSInputStream 连接一直保持,直到当前读取的文件中第一个数据块的最近数据节点中的

6、数据读到 客户端后,DFSInputStream会关闭和此数据节点的连接:然后连接此文件的下一个 数据块的最近数据节点。假设在读取数据的过程中,客户端与数据节点的通信出现错 误,那么尝试连接包含此数据块的下一个数据节点;失败的数据节点将被记录,以后 不再连接。 当客户端读取完数据时,调用DFSInpu(S【ream的close。函数,结束读取过程。3、请描述HDFS写文件的具体过程。答: 客户端调用create。函数来创立文件。 分布式文件系统远程调用RPC,在元数据节点的命名空间中创立一个新的文件。 元数据节点在确定文件不存在,并且客户端有创立文件的权限后,创立新文件。创 建完成后,分布式文

7、件系统返回DFSOutputSlream对象给客户端,用于写数据。文 件系统返回DFSOutputStream对象给客户端,用于写数据。 当客户端开始写数据时,调用DFSOutpu(S(ream中的方法将数据分成块并写入数据 队列;数据队列由Data Streamer读取,并通知元数据节点分配数据节点,用来存 储数据块(每个数据块均默认复制3份),分配的数据节点放在一个管道(Pipeline) 里。其中,Data Streamer是在调用DFSOutputStream对象过程中开启的线程。 Data Streamer将数据块写入管道涉及的第一个数据节点,第一个数据节点将数据块 发送给第二个数据

8、节点,第二个数据节点将数据发送给笫三个数据节点。 DFSOutputStream将发送出去的数据块信息保存在ack queue队列里。如果数据块 传输成功的话,就会删除ack queue队列里对应的数据块;如果不成功的话就将ack queue里的数据块取出来放到数据队列的末尾,等待重新传输。 当客户端结束写入数据过程,那么调用DFSOutpuiStream中的close。函数,此时客户 端不再向管道中写入数据,并关闭管道。在等到所有的写入数据的成功应答后,通 知元数据节点写入完毕。15.4解答题1、根据用户手机上网的行为记录,基于M叩Reduce编程模型设计程序统计不同手机号的 用户使用的总流

9、量。其中,数据记录的字段描述如下。序号字段字段类型描述0report! imelong记录报告时间戳1msisdnString手机号码2apmacStringAP mac3acmacStringAC mac4hostString访问的网址5siteTypeString网址种类6upPackNumlong上行数据包数,单位:个7downPackNumlong下行数据包数,单位:个8upPayLoadlong上行总流量,要注意单位的转换:byte9downPayLoadlong下行总流量。要注意单位的转换:byte10 StatusString Response数据文件具体内容如下。00-FD-0

10、7-A4-72-B8:CMCC120.196.100.82i02caliimg 2427 2481246812001363157995052138265441015C-0E-8B-C7-F1 -E0:CMCC120.197.40.4136315798506613726230503264 020013631579910761392643565613631579910761392643565620-10-7A-28-CC-0A:CMCC120.196.100.994132 15122001363154400022139262511061363154400022139262511065C-0E-8B

11、-8B-B1 -50:CMCC120.197.40.4240 0200136315799304418211575961iface.qiyi 视频网站136315799305513560439658136315799304418211575961iface.qiyi 视频网站13631579930551356043965894-71-AC-CD-E6-18:CMCC-EASY 120.196.100.9915 12 15272106200C4-17-FE-BA-DE-D9:CMCC120.196.100.9918 15 1116954 200136315799503315920133257136

12、3157995033159201332575C-0E-8B-C7-BA-20:CMCC 120.197.40.4 息平安 20 20 31562936200136315798301913631579830191371919941968-A1-B7-03-07-B1 :CMCC-EAS Y120.196.100.824 0 240 02004 0 240 0200136315798404113660577991 5C-0E-8B-92-5C-20:CMCC-EASY120.197.40.4zz 站点统计zz 站点统计24 96960690 2(X)136315797309813631579730

13、9815013685858 5C-0E-8B-C7-F7-90:CMCC 120.197.40.4 rank.ie.sogou 搜索引擎28 27 36593538200136315798602915989002II9 E8-99-C4-4E-93-E0:CMCC-EASY120.196.100.99 umeng 站点统计 331938180 200136315799209313560439658 C4-17-FE-BA-DE-D9:CMCC120.196.100.9915 9918 4938200136315798604113480253104 5C-0E-8B-C7-FC-80:CMCC-

14、EASY120.197.40.433180 180 2001363157984040136028465655C-0E-8B-8B-B6-00:CMCC 120.197.40.42052.flash2-htlp.qq 综合门户15 12 19382910200136315799509313922314466 00-FD-07-A2-EC-BA:CMCC 120.196.100.82 12 12 30083720200136315798204013502468823 5C-0A-5B-6A-0B-D4:CMCC-EASY 120.196.100.99yO.ifengimg 综合门户 57 102

15、7335110349 200136315798607218320173382 84-25-DB-4F-10-1 A:CMCC-EASY120.196.100.99input.shouji.sogou 搜索引擎 21 18 953124122001363157990043 搜索引擎136315798807213925057413 00-1F-64-EI -E6-9A:CMCC69 63 110584824320013760778710 (K)-FD-07-A4-7B-08:CMCC2120 120200136315798507913823070001 20-7C-8F-70-68-1 F:CMC

16、C3360 180200136315798506913600217502 00-1F-64-E2-E8-B 1:CMCC120.196.1(X).55 t3.baidu 120.196.100.82120.196.100.99120.196.100.5518138 1080186852 200答:我们需要从数据中统计出每个用户的所有请求的使用的总流量,即统计用户所有请求的上行 流量(索引为8)、下行流晨(索引为9)之和。得到结果后输出到单独的文件中。编程环境搭建:创立一个maven工程,并导入Hadoop的相关依赖。集群环境准备:将题目中给定的数据文件上传到hdfs中。Step1:将用户手机号

17、、上行流量、下行流量、总流量封装到一个自定义的bean中,由于这 个bean需要在Hadoop中进行传输,我们还需要让bean实现hadoop中的序列化接口。import java.io.Datalnput;import java.io.DataOutput;import java.io.IOException;import org.apache.hadoop.io.Writable;public class Flow implements Writable!private String phone;手机号private long up;上行流量private long down; 下线流量p

18、rivate long sum;总流量/无参构造函数 public Flov() )/有参构造函数public Flow(String phone, long up, long down) super。;this.phone = phone;this.up = up;this.down = down;this.sum=this.up+this.down;)0 verri depublic void write(DataOutput out) throws lOException out. writeUTF(this.phone);out.writcLong(this.up);out. writ

19、eLong( this.down);out.writeLong(this.sum);)Ovcrridepublic void readFields(Da(aInput in) throws lOException this.phone=in.readUTF();this.up=in.readLong();this.down=in.readLong();this.sum=in.readLong();Ovcrridepublic String (oStringO (return this.up+t+lhis.down+t+this.sum;public String ge(Phone() retu

20、rn phone;)public void setPhone(Scring phone) this.phone = phone;)public long gctUp() return up;)public void setUp(long up) this.up = up;)public long getDown() return down;)public void setDown(long down) this.down = down;)public long gelSumO return sum;)Step2:编写Map方法import java.io.IOExccption;import

21、org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import org.apache nions.lang.StringUtils;public class FlowSumMappcr extends MappcrOverrideprotected void map(LongWritable key, Text value, Context context)throws lOException, InterruptedExcep

22、tion 拿一行数据String line = value.toStringO;切分成各个字段String fields = StringUtils.split(linc, nt);拿到我们需要的字段String phone = fields 1 ;long up= Long.parseLong(fields8);long down = Long.parseLong(fields|9J);封装数据为kv并输出contcxt.writc(ncw Tcxt(phonc), new Flow(phonc,up,down);Step3:编写Reduce方法import java.io.IOExcept

23、ion;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class FlowSumRcduccr extends RcduccrOvcrrideprotected void reduce(Text key, Ilerable values, Context context)throws lOException, InterruptedException / /reduce中的业务逻辑就是遍历values,然后进行累加求和再输出long up = 0;/long down = 0

24、;for (Flow How : values) up += flow.getUpO;down += flow.getDown();)context.write(key, new Flow(key.toString(), up, down);Stcp4:编写方法入口函数 import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf.Configured:import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import

25、org.apachc.hadoop.io.lcxt;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FilelnputFormat;import org.apache.hadoop.mapreduce.lib.ouiput.FileOutpulFormat;import org.apache.hadoop.util.Tool;import org.apache.hadoop.utiLToolRunner;public class FlowSumRunncr extends C

26、onfigured implements ToolOverridepublic int run(String args) throws Exception Configuration conf = new Configuration();Job job = Job.getlnslance(conf);job.setJarByClass(FlowSumRunner.class);job.sctMappcrClass(FlowSumMappcr.class);job.setReducerClass(FlowSumReducer.class);设置m叩程序的输出key、valuejob.setMap

27、OutputKeyClass(Text.class);job.setMapOutputValueClass(Flow.class);设置 输出key、valuejob.setOutputKeyClass(Text.class);job.sctOutputValucClass(Flow.class);FilcInputFormat.sctInputPaths(job, new Path(argsO);/ 输入数据路径 /flow/input检查一下参数所指定的输出路径是否存在,如果己存在,先删除Path output = new Path(args 1 );FileSystcm fs = Fil

28、eSystcm.gct(conf);if(fs.exists(output)fs.delete(output, true);FileOutputForma(.setOutputPa(h(job, new Palh(args 11)/ 输出数据路径 /flow/outputreturn job.wailForCompletion(true)?0:1;public static void main(String args) throws Exception int status = ToolRunner.run(new Configuration(), new FlowSumRunnerO, ar

29、gs);System.exit(status);Stcp4:至此,程序编写完毕,使用maven工具将程序打包成一个jar包,并提交到hadoop 集群中进行运行。具体的命令如下。其中,中写FlowSumRunner的全限定类名。hadoop jar flow.jar FlowSumRunner /flow/input/flow/output/Step5:查看运行结果Step5:查看运行结果hadoop fs -cat /flow/output/part-r-000001348025310472080015201350246882340829340297481356043965823568160

30、0251681360021750274740880074820813602846565487752780013660577991362784027876137191994190800800137262305039924987241086481376077871048080012801382307000172080015201382654410108008001392231446612032148802691213925057413252442324448413926251106566908696413926435656604880068481501368585810814636147441592013325780126241270415989002119127752776418320173382723812438196

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁