大数据技术原理与应用林子雨版课后习题答案_第1页
大数据技术原理与应用林子雨版课后习题答案_第2页
大数据技术原理与应用林子雨版课后习题答案_第3页
大数据技术原理与应用林子雨版课后习题答案_第4页
大数据技术原理与应用林子雨版课后习题答案_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

第一章1•试述信息技术发展史上的3次信息化浪潮及具体内容信息化浪潮发生时间标志解决问题代表公司第一次浪潮1980年前后个人计算机信息处理Intel、AMD、IBM、苹果、微软、联想、戴尔、惠普等第二次浪潮1995年前后互联网信息传输雅虎、谷歌、阿里巴巴、百度、腾讯等第三次浪潮2010年前后物理网、云计算和大数据信息爆炸将涌现出一批新的市场标杆企业2•试述数据产生方式经历的几个阶段答:运营式系统阶段,用户原创内容阶段,感知式系统阶段。试述大数据的4个基本特征答:数据量大、数据类型繁多、处理速度快和价值密度低。试述大数据时代的“数据爆炸”的特性答:大数据时代的“数据爆炸”的特性是,人类社会产生的数据一致都以每年50%的速度增长,也就是说,每两年增加一倍。数据研究经历了哪4个阶段?答:人类自古以来在科学研究上先后历经了实验、理论、计算、和数据四种范式试述大数据对思维方式的重要影响答:大数据时代对思维方式的重要影响是三种思维的转变: 全样而非抽样,效率而非精确,相关而非因果。大数据决策与传统的基于数据仓库的决策有什么区别答:数据仓库具备批量和周期性的数据加载以及数据变化的实时探测、传播和加载能力,能结合历史数据和实时数据实现查询分析和自动规则触发,从而提供对战略决策和战术决策。大数据决策可以面向类型繁多的、非结构化的海量数据进行决策分析举例说明大数据的基本应用答:领域大数据的应用金融行业大数据在高频交易、社区情绪分析和信贷风险分析三大金融创新领域发挥重要作用。汽车行业利用大数据和物联网技术的五人驾驶汽车,在不远的未来将走进我们的日常生活互联网行业借助于大数据技术,可以分析客户行为,进行商品推荐和有针对性广告投放个人生活大数据还可以应用于个人生活,利用与每个人相关联的“个人大数据”,分析个人生活行为习惯,为其提供更加周全的个性化服务。举例说明大数据的关键技术答:批处理计算,流计算,图计算,查询分析计算大数据产业包含哪些关键技术。答:IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层。定义并解释以下术语:云计算、物联网答:云计算:云计算就是实现了通过网络提供可伸缩的、廉价的分布式计算机能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源。物联网是物物相连的互联网,是互联网的延伸,它利用局部网络或互联网等通信技术把传感器、控制器、机器、人类和物等通过新的方式连在一起,形成人与物、物与物相连,实现信息化和远程管理控制。12.详细阐述大数据、云计算和物联网三者之间的区别与联系大数据、云计算和物联网的区别大数据、云计算和物联网的联系大数据侧重于海量数据的存储、处理与分析,海量数据中发现价值,服务于生产和生活;云计算本质上皆在整合和优化各种IT资源并通过网络已服务的方法,廉价地提供给用户;物联网的发展目标是实现呜呜向量,应用创新是物联网的核心从整体来看,大数据、云计算和物联网这三者是相辅相成的。大数据根植于云计算,大数据分析的很多技术都来自于云计算,云计算的分布式存储和管理系统提供了海量数据的存储和管理能力,没有这些云计算技术作为支撑,大数据分析就无从谈起。物联网的传感器源源不断的产生大量数据,构成了大数据的重要数据来源,物联网需要借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。第二章试述hadoop和谷歌的mapreduce、gfs等技术之间的关系答:Hadoop的核心是分布式文件系统HDFS和MapReduce,HDFS是谷歌文件系统GFS的开源实现,MapReduces是针对谷歌MapReduce的开源实现。试述Hadoop具有哪些特性。答:高可靠性,高效性,高可扩展性,高容错性,成本低,运行在 Linux平台,支持多种编程语言试述Hadoop在各个领域的应用情况。答:2007年,雅虎在Sunnyvale总部建立了M4 —个包含了4000个处理器和1.5PB容量的Hadooop集群系统;Facebook主要将Hadoop平台用于日志处理,推荐系统和数据仓库等方面;百度主要使用Hadoop于日志的存储和统计、网页数据的分析和挖掘、商业分析、在线数据反馈、网页聚类等。试述Hadoop的项目结构以及每个部分的具体功能。答:PigChukw;aHiveHBaselMapReduceHDFSZookeeperCommonAvroCommeo是为Hadoop其他子项目提供支持的常用工具,主要包括文件系统、 RPC和串行化库Avro是为Hadoop的子项目,用于数据序列化的系统,提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持续性数据的文件集、远程调用的功能和简单的动态语言集成功能。HDFS是Hadoop项目的两个核心之一,它是针对谷歌文件系统的开源实现HBase是一个提高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用HDFS乍为其底层数据存储。MapReduce是针对谷歌MapReduce的开源实现,用于大规模数据集的并行运算。Zoookepper是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。Hive是一个基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理、特殊查询和分布存储。Pig是一种数据流语言和运行环境,适合于使用Hadoop和MapReducce平台上查询大型半结构化数据集。Sqoop可以改进数据的互操作性,主要用来在H大哦哦哦配合关系数据库之间交换数据。Chukwa是一个开源的、用于监控大型分布式系统的数据收集系统,可以将各种类型的数据收集成适合Hadoop处理的文件,并保存在HDFS^供Hadoop进行各种MapReduce操作。第三章1•试述分布式文件系统设计的需求设计需求含义HDFS勺实现情况透明性]具备访问透明性、位置透]只能提供一定程度的访明性、性能、和伸缩透明问透明性,完全支持位置性透明性、性能和伸缩透明性并发控制客户端对于文件的读写机制非常简单,任何时候不应该影响其他客户端都只允许有一个程序写对同一个文件的读写入某个文件文件复制一个文件可以拥有不同nHDF秣用了多副本机制]位置的多个副本硬件和操作系统的异构可以在不同的操作系统]米用Java语言开发,具性和计算机上实现同样的客户端和服务端程序]有很好的跨平台能力可伸缩性支持节点的动态加入或1建立在大规模廉价机器退出上的分布式文件系统集群,具有很好的伸缩性hadoopfs-Is<path> hadoopfs-Is<path> 显示<path>指定的文件的详细信息hadoopfs-Is<path> hadoopfs-Is<path> 显示<path>指定的文件的详细信息容错保证文件服务在客户端具有多副本机制和故障或者服务端出现问题的自动检测、恢复机制时候能正常使用安全保证系统的安全性安全性较弱分布式文件系统是如何实现较高水平扩展的?分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”(MasterNode)或者也被称为“名称结点”(NameNode)另一类叫“从节点”(SlaveNode)或者也被称为“数据节点”(DataNode)试述HDFS^的块和普通文件系统中的块的区别。答:在传统的文件系统中,为了提高磁盘读写效率,一般以数据块为单位,恶如不是以字节为单位。HDFS^的块,默认一个块大小为64MB而HDFS^的文件会被拆分成多个块,每个块作为独立的单元进行存储。HDFS在块的大小的设计上明显要大于普通文件系统。试述HDFS^的名称节点和数据节点的具体功能记录分布式文件系统中答:名称节点负责管理分布式文件系统系统的命名空间,的每个文件中各个块所在的数据节点的位置信息;记录分布式文件系统中数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表。hadoopfs-cat<path> hadoopfs-cat<path> 将vpath>指定的文件的内容输出到标准输出hadoopfs-cat<path> hadoopfs-cat<path> 将vpath>指定的文件的内容输出到标准输出hadoopfs-mkdir<path> 创建<path>指定的文件夹hadoopfs-get[-ignorecrc][-crc]<src><localdst> 复希9<src>指定的文件到本地文件系统<localdst>指定的文件或文件夹。-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC言息。hadoopfs-put<localsrc><dst>从本地文件系统中复制<localsrc>指定的单个或多个源文件到<dst>指定的目标文件系统中。也支持从标准输入(stdin)中读取输入写入目标文件系统。hadoopfs-rmr<path> 删除<path>指定的文件夹及其的所有文件第四章试述在Hadoop体系架构中HBase与其他组成部分的相互关系。答:HBase利用HadoopMapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力;Sqoop为HBase的底层数据导入功能,Pig和Hive为HBase提供了高层语言支持,HBase是BigTable的开源实现请阐述HBase和BigTable的底层技术的对应关系答:项目BigTableHBase文件存储系统GFSHDFS海量数据处理MapReduceHadoopMapReduce协同服务管理ChubbyZookeeper请阐述HBase和传统关系数据库的区别答:区别传统关系数据库HBase数据类型关系模型数据模型数据操作插入、删除、更新、查询、插入、查询、删除、清空,多表连接无法实现表与表之间关联存储模式基于行模式存储,兀组或基于列存储,每个列族都行会被连续地存储在磁由几个文件保存,不同列

盘也中族的文件是分离的数据索引针对不同列构建复杂的多个索引只有一个行键索引数据维护用最新的当前值去替换记录中原来的旧值更新操作不会删除数据旧的版本,而是生成一个新的版本可伸缩性很难实现横向扩展,纵向扩展的空间也比较有限轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩HBase有哪些类型的访问接口?答:HBase提供了NativeJavaAPI,HBaseShell,ThriftGateway,RESTGateWay,Pig,Hive等访问接口。请以实例说明HBase数据模型。TOC\o"1-5"\h\z列族列限定符 /答: ― // I/ Info

NameMajorEmail201505001LuoMinMathLuo@201505002LiuJunMathliu@201505003XieYouMathxie@t///一you@163.com单元格有两个时间戳 ts1和ts2单元格行键每个时间戳对应一个数据版本行键分别解释HBase中行键、列键和时间戳的概念行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组。列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。请举个实例来阐述HBase的概念视图和物理视图的不同HBase数据概念视图

行键时间戳列族contents歹U族anchor“n.wwwT5Anchor:cnn=”CNN”T3Anchor:my.look.ca=”CNN”“n.wwwT3Content:html=”<html>...”T2Content:html=”<html>...”T1Content:html=”<html>...”HBase数据物理视图行键时间戳歹U族anchor“n.wwwT5Anchor:cnn=”CNN”T4Anchor:my」ook.ca=”CNN”

行键时间戳列族contents“n.wwwT3Content:html=”<html>...”T2Content:html=”<html>...”T1Content:html=”<html>...”在HBase的概念视图中,一个表可以视为一个稀疏、多维的映射关系在物理视图中,一个表会按照属于同一列族的数据保存在一起试述HBase各功能组建及其作用库函数:链接到每个客户端;—个Master主服务器:主服务器Master主要负责表和Region的管理工作;许多个Region服务器:Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求请阐述HBase的数据分区机制答:HBase采用分区存储,一个大的表会被分拆许多个Region,这些Region会被分发到不同的服务器上实现分布式存储。HBase中的分区是如何定位的。通过构建的映射表的每个条目包含两项内容,一个是 Regionde标识符,另一个是Region服务器标识,这个条目就标识Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。11.试述HBase的三层结构中各层次的名称和作用层次名称作用第一层Zookeeper文件记录了-ROOT表的位置信息第二层-ROOT表记录了.META表的Region位置信息-ROOT表只能有一个Region。通过-ROOT表,就可以访问.META表中的数据第三层.META.表记录了用户数据表的Region位置信息,.META表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息12•请阐述HBase的三层结构下,客户端是如何访问到数据的答:首先访问Zookeeper,获取-ROOT表的位置信息,然后访问-Root-表,获得.MATA.表的信息,接着访问.MATA.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器读取数据。试述HBase系统基本架构以及每个组成部分的作用。(1)客户端客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程(2)Zookeeper服务器Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题(3) Master主服务器Master主要负责表和Region的管理工作:管理用户对表的增加、删除、修改、查询等操作;实现不同Region服务器之间的负载均衡;在Region分裂或合并后,负责重新调整Region的分布;对发生故障失效的Region服务器上的Region进行迁移(4) Region服务器Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求请阐述Region服务器向HDFS文件系统中读写数据的基本原理Region服务器内部管理一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store对象了表中的一个列族的存储。每个Store又包含了MemStore和若干个StoreFile,其中,MemStore是在内存中的缓存。试述HStore的工作原理每个Store对应了表中的一个列族的存储。每个Store包括一个MenStore缓存和若干个StoreFile文件。MenStore是排序的内存缓冲区,当用户写入数据时,系统首先把数据放入MenStore缓存,当MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中,当单个StoreFile文件大小超过一定阈值时,就会触发文件分裂操作。试述HLog的工作原理答:HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(WriteAheadLog),用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘在HBase中,每个Region服务器维护一个HLog,而不是为每个Region都单独维护一个HLog。请说明这种做法的优缺点。优点:多个Region对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中。缺点:如果一个Region服务器发生故障,为了恢复其上次的Region对象,需要将Region服务器上的对象,需要将Region服务器上的HLog按照其所属的Region对象进行拆分,然后分发到其他Region服务器上执行恢复操作。当一台Region服务器意外终止时,Master如何发现这种意外终止情况?为了恢复这台发生意外的Region服务器上的Region,Master应该做出哪些处理(包括如何使用HLog进行恢复)?Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master。Master首先会处理该故障Region服务器上面遗留的HLog文件,这个遗留的HLog文件中包含了来自多个Region对象的日志记录。系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别放到相应Region对象的目录下,然后,再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog日志记录也发送给相应的Region服务器Region服务器领取到分配给自己的Region对象以及与之相关的HLog日志记录以后,会重新做一遍日志记录中的各种操作, 把日志记录中的数据写入到MemStore缓存中,然后,刷新到磁盘的StoreFile文件中,完成数据恢复。第五章如何准确理解NoSQL的含义?NoSQL是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的一类统称,它采用的数据模型并非传统关系数据库的关系模型,而是类似键/值、列族、文档等非关系模型。试述关系数据库在哪些方面无法满族 Web2.0应用的需求。关系数据库已经无法满足 Web2.0的需求。主要表现在以下几个方面:(1)无法满足海量数据的管理需求(2) 无法满足数据高并发的需求(3) 无法满足高可扩展性和高可用性的需求3.请比较NoSQL数据库和关系数据库的优缺点。比较标准RDBMSNoSQL备注数据库原理完全支持部分支持RDBMS有关系代数理论作为基础NoSQL没有统一的理论基础

数据规模大超大RDBMS很难实现横向扩展,纵向扩展的空间也比较有限,性能会随着数据规模的增大而降低NoSQL可以很容易通过添加更多设备来支持更大规模的数据数据库模式固定灵活RDBMS需要定义数据库模式,严格遵守数据定义和相关约束条件NoSQL不存在数据库模式,可以自由灵活定乂并存储各种不冋类型的数据查询效率快可以实现高效的简单查询,但是不具备高度结构化查询等特性,复杂查询的性能不尽人意RDBMS借助于索引机制可以实现快速查询(包括记录查询和范围查询)很多NoSQL数据库没有面向复杂查询的索弓1,虽然NoSQL可以使用MapReduce来加速查询,但是,在复杂查询方面的性能仍然不如RDBMS一致性强一致性弱一致性RDBMS严格遵守事

务ACID模型,可以保证事务强一致性很多NoSQL数据库放松了对事务ACID四性的要求,而是遵守BASE模型,只能保证最终一致性数据完整性容易实现很难实现任何一个RDBMS都可以很容易实现数据完整性,比如通过主键或者非空约束来实现实体完整性,通过主键、外键来实现参照完整性,通过约束或者触发器来实现用户自定义完整性但是,在NoSQL数据库却无法实现扩展性一般好RDBMS很难实现横向扩展,纵向扩展的空间也比较有限NoSQL在设计之初就充分考虑了横向扩展的需求,可以很容易通过添加廉价设备实现扩展可用性好很好RDBMS在任何时候都以保证数据一致性

为优先目标,其次才是优化系统性能,随着数据规模的增大,RDBMS为了保证严格的一致性,只能提供相对较弱的可用性大多数NoSQL都能提供较高的可用性标准化是否RDBMS已经标准化(SQLNoSQL还没有行业标准,不同的NoSQL数据库都有自己的查询语言,很难规范应用程序接口StoneBraker认为:NoSQL缺乏统一查询语言,将会拖慢NoSQL发展技术支持高低RDBMS经过几十年的发展,已经非常成熟,Oracle等大型厂商都可以提供很好的技术支持NoSQL在技术支持方面仍然处于起步阶段,还不成熟,缺乏有力的技术支持可维护性复杂复杂RDBMS需要专门的

数据库管理员(DBA)维护NoSQL数据库虽然没有DBMS复杂,也难以维护5•试述NoSQL数据库的四大类型答:键值数据库、列族数据库、文档数据库和图数据库6•试述键值数据库、列族数据库、文档数据库和图数据库的适用场合和优缺点。数据库适用场合优点缺点键值数据库通过键而是通过值来查的业务扩展性好,灵活性好,大量与操作时性能咼无法存储结构化信息,条件查询效率较低列族数据库不需要ACID事务支持的情形查找速度快,可扩展性强,容易进行分布式扩展,复杂性低功能较少,大都不支持强事务一致性文档数据库只在相同的文档上添加事务性能好(高并发),灵活性高,复杂性低,数据结构灵活提供嵌入式文档功能,将经常查询的数据存储在同一个文档中既可以根据键来构建索引,也可以根据内容构建索引缺乏统一的查询语法图形数据库具有咼度相互关联关灵活性高,支持复杂复杂性高,只能支持8•8•请举例说明不同产品在设计时是如何运用 CAP理论的。8•8•请举例说明不同产品在设计时是如何运用 CAP理论的。系的数据的图形算法,可用于构建复杂的关系图谱系的数据的图形算法,可用于构建复杂的关系图谱定的数据规模7•试述CAP理论的具体含义。答:所谓的CAP指的是:C(Consistency):—致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据A:(Availability):可用性,是指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应;P(ToleraneeofNetworkPartition):分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信), 分离的系统也能够正常运行, 也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作。选择AP,放弃CDynamoC P选择CP,放弃ANeo4J,Bigtable,MongoDB,Hbase,Hypertable,Redis9•试述数据库的ACID四性的含义原子性(Atomicity)指事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。—致性(consistency)指事务在完成时,必须使所有的数据都保持一致状态。隔离性(Isolation)指并发事务所做的修改必须与其他并发事务所做的修改隔离。持久性(Durability)指事务完成之后,它对于系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持。10•试述BASE的具体含义BASE的基本含义是基本可用( BasicallyAvailble)、软状态(Soft-state)和最终一致性(Eventualconsistency)请解释软状态、无状态、硬状态的具体含义。“软状态(soft-state)”是与“硬状态(hard-state)”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。 “软状态”是指状态可以有一段时间不同步,具有一定的滞后性。什么是最终一致性?最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为:(1)会话一致性:它把访问存储系统的进程放到会话( session)的上下文中,只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统保证不会延续到新的会话;(2)单调写一致性:系统保证来自同一个进程的写操作顺序执行。系统必须保证这种程度的一致性,否则就非常难以编程了(3)单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值因果一致性:如果进程A通知进程B它已更新了一个数据项,那么进程 B的后续访问将获得A写入的最新值。而与进程A无因果关系的进程C的访问,仍然遵守一般的最终一致性规则“读己之所写”一致性:可以视为因果一致性的一个特例。当进程 A自己执行一个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值试述不一致性窗口的含义。所有后续的访问都可以读取到操作 0P写入的最新值。从0P操作完成到后续访问可以最终读取到OP写入的最新值,这之间的时间间隔称为“不一致性窗口”。14最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以分为哪些不同类型的一致性?会话一致性、单调写一致性、单调写一致性、因果一致性和“读己之所写”一致性。14•什么是NewSQL数据库?NewSQL是对各种新的可扩展、高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持 ACID和SQL特性。第六章1•试述云数据库的概念答:云数据库是部署和虚拟化在云计算环境中的数据库。 云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法, 它极大地增强了数据库的存储能力, 消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易,同时,也虚拟化了许多后端功能。云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。2•与传统的软件使用方式相比,云计算这种模式具有哪些明显的优势襄€-1 僅蘇软件矩用万式和云计鼻方式施比较f顷方式方式拡符抉件的bitAci检監阵憶机臥爲豐if件平件.购震软杵在車蚕装门淀细蒐丄;计曲厂商酋掃件整齐L_ I

斟H才式木惟瓷縈,■+;堆腿用软件迄特往五歼博厂商聊势浮上+甲户起任阿有陶皓搖入的尴方插耐以适过曲粥Mf需嬰一武性文时较人的勿駅权人成朕,也也建it脱.配WW.妁买务邱钦件(輕憎乘蜒,載壽,业歼软幷等)零虎本披人丸吋以上即負得所隋的【丁費■L只需鶴为所便用购畫ifif寸坍,參出茎忖,少用啊寸.推护就木聲惑.購有准护工柞由启卅3(厂裔負覚熹闿1T林珈抽遽皿鮒旧町出.■龈it着占立诩闻JW囱己建设,A皓歯足云HIT曲盘设好云ttJMt务翠伶后■时力衣宇用户亞供1»务对堆体建应出覆觸或.爲册釧攒第附聽时.mtjttdl?请IT人皿摊护,很爹骨通惟业的|翠醴力苗RL碰到一理同殖甚蚩雋耍曲外出网忙忙昂统H舸吋■出汁算厂商祁佥死將亢专业址H1臥愉出肚时利应*鞘煤云H务的1灌憧用科时换fit人兀■齋喘建没的打鬲嫌*往往乱側血业卫己愼用,吓盘业不葡號邯盅多1T壻淖耐*M会产生利用卓敘範.HX柳可U为k址用心程慎聲舟;当存栢闭且赛算时.云计算普连廉加斎諌时,P会『1阳口动hi林U代旣沸出企业撮审时,原强的帆房设逝就菱杵:廉、需■屮即新也和耳审抖Atf尢庇本俚订和房企壮尢论感口蓟雾屮,那专取迪过冏略痢狎1導廉?N总即iH冷厶卄可卅闵期,A瞻存F:绥・不在潮卢端”出户■迁不余誉响河IT吐谅的册布旌龍叫外軽怦臺业口门建设旳仃甲础段靈忆融務您打通求卅冇1同的,当伦业业需*宪觀PJT时.理有的IT 细斑立卯補星需求.就需嘤花需时闽和•铐閤生和%礙斷说备;晋吨毎岛峰辻丄时*龙仝的盘签讹会削童.AzitHKJ冊町以为f■业塁映近乎尢S!的FT毓i»t存斛计算零用卢电咁第帝部町眼血网联H*乌用||-1'世il事余贵熬・4^#a^«MUNVHM3.云数据库有哪些特性?答:1)动态可扩展 2)高可用性 3)较低的使用代价4)易用性5)高性能 6)免维护 7)安全4.试述云数据库的影响。答:在大数据时代,每个企业几乎每天都在不断产生大量的数据。企业类型不同,对于存储的需求也千差万别,而云数据库可以很好地满足不同企业的个性化存储需求。首先,云数据库可以满足大企业的海量数据存储需求。云数据库在当前数据爆炸的大数据时代具有广阔的应用前景。传统的关系数据库难以水平扩展,相本无法存储如此海量的数据。因此,具有高可扩展性的云数据库就成为企业海量数据存储管理的很好选择。其次,云数据库可以满足中小企业的低成本数据存储需求。中小企业在 IT基础设施方面的投人比较有限,非常渴望从第三方方便、快捷、廉价地获得数据库服务。云数据库采用多租户方式同时为多个用户提供服务, 降低了单个用户的使用成本,而且用户使用云数据库服务通常按需付费,不会浪费资源造成额外支出,因此,云数据库使用成本很低,对于中小企业而言可以大大降低企业的信息化门槛, 让企业在付出较低成本的同时,获得优质的专业级数据库服务,从而有效提升企业信息化水平。另外,云数据库可以满足企业动态变化的数据存储需求。 企业在不同时期需要存储的数据量是不断变化的,有时增加,有时减少。在小规模应用的情况下,系统负载的变化可以由系统空闲的多余资源来处理,但是,在大规模应用的情况下,传统的关系数据库由于其伸缩性较差,不仅无法满足应用需求,而且会给企业带来高昂的存储成本和管理开销。 而云数据库的良好伸缩性,可以让企业在需求增加时立即获得数据库能力的提升 ,在需求减少时立即释放多余的数据库能力,较好地满足企业的动态数据存储需求。举例说明云数据库厂商及其代表性产品答:云数据库供应商主要分为三类。传统的数据库厂商,如 Teradata、Oracle、IBMDB2和MicrosoftSQLServer等。涉足数据库市场的云供应商,如 Amazon、Google.Yahoo!、阿里、百度、腾讯等。3)新兴厂商,如IVertica.LongJump和EnterpriseDB等。256-3云IRIS库严品低业AmazonDynamohSimplcDB,RDSGoogleGoogleCloudSQLMicrostiRMicrosoftSQLA/urcOracleOracleCloudYahoofPNIJTSVertit注Ana]ytic v3,0thrlheCJatxdPoslgresPlusmtheCioud阿里阿里云RDS百度百度云敕据库MA试述UMP系统的功能。答:UMP系统是构建在一个大的集群之上的,通过多个组件的协同作业,整个系统实现了对用户透明的容灾、读写分离、分库分表、资源管理、资源调度、资源隔离和数据安全功能。容灾云数据库必须向用户提供一直可用的数据库连接, 当MySQL实例发生故障时,系统必须自动执行故障恢复,所有故障处理过程对于用户而言是透明的,用户不会感知到后台发生的一切。为了实现容灾,UMP系统会为每个用户创建两个 MySQL实例,一个是主库,一个是从库,而且,这两个MySQL实例之间互相把对方设置为备份机,任意一个MySQL实例上面发生的更新都会复制到对方。同时,Proxy服务器可以保证只向主库写人数据。读写分离由于每个用户都有两个MySQL实例,即主库和从库,因此,可以充分利用主从库实现用户读写操作的分离,实现负载均衡。UMP系统实现了对于用户透明的读写分离功能,当整个功能被开启时,负责向用户提供访问 MySQL数据库服务的Proxy服务器,就会对用户发起的SQL语句进行解析,如果属于写操作 ,就直接发送到主库,如果是读操作,就会被均衡地发送到主库和从库上执行。分库分表UMP支持对用户透明的分库分表(Shard/HorizontalPartition)。但是,用户在创建账号的时候需要指定类型为多实例,并且设置实例的个数,系统会根据用户设置来创建多组 MySQL实例。除此以外,用户还需要自己设定分库分表规则,如需要确定分区字段, 也就是根据哪个字段进行分库分表,还要确定分区字段里的值如何映射到不同的 MySQL实例上。资源管理UMP系统采用资源池机制来管理数据库服务器上的 CPU内存、磁盘等计算资源,所有的计算资源都放在资源池内进行统一分配,资源池是为 MySQL实例分配资源的基本单位。整个集群中的所有服务器会根据其机型、所在机房等因素被划分为多个资源池,每台服务器会被加人到相应的资源池。在资源池划分的基础上,UMP还在每台服务器内部采用Cgroup将资源进一步地细化,从而可以限制每个进程组使用资源的上限,同时保证进程组之间相互隔离。资源调度UMP系统中有3种规格的用户,分别是数据量和流量比较小的用户、中等规模用户以及需要分库分表的用户。多个小规模用户可以共享同一个 MySQL实例。对于中等规模的用户,每个用户独占个MySQL实例。用户可以根据自己的需求来调整内存空间和磁盘空间,如果用户需要更多的资源,就可以迁移到资源有空闲或者具有更高配置的服务器上对于分库分表的用户,会占有多个独立的 MySQL实例,这些实例既可以共存在同一台物理机上,也可以每个实例独占一台物理机。UMP通过MySQL实例的迁移来实现资源调度。借助于阿里集团中间件团队开发的愚公系统,UMP可以实现在不停机的情况下动态扩容、缩容和迁移。资源隔离当多个用户共享同一个MySQL实例或者多个MySQL实例共存在同一个物理机上时,为了保护用户应用和数据的安全,必须实现资源隔离,否则,某个用户过多消耗系统资源会严重影响到其他用户的操作性能。数据安全数据安全是让用户放心使用云数据库产品的关键,尤其是企业用户,数据库中存放了很多业务数据,有些属于商业机密,一旦泄露,会给企业造成损失。UMP系统设计了多种机制来保证数据安全。SSL数据库连接。数据访问IP白名单。记录用户操作日志。SQL拦截。13.UMP系统是如何保障数据安全的?答:SSL数据库连接。 SSL(SecureSocketsLayer)是为网络通信提供安全及数据完整性的一种安全协议,它在传输层对网络连接进行加密。Proxy服务器实现了完整的MySQL客户端服务器协议,可以与客户端之间建立SSL数据库连接。数据访问IP白名单。可以把允许访问云数据库的IP地址放入“白名单”,只有白名单内的IP地址才能访问,其他IP地址的访问都会被拒绝,从而进一步保证账户安全。记录用户操作日志。用户的所有操作记录都会被记录到日志分析服务器,通过检查用户操作记录,可以发现隐藏的安全漏洞。SQL拦截。Proxy服务器可以根据要求拦截多种类型的 SQL语句,比如全表扫描语句"select*15.简述RDS中实例与数据库的概念答: RDS实例或简称实例”,是用户购买RDS服务的基本单位。在实例中可以创建多个数据库,可以使用常见的数据库客户端连接、管理及使用数据库。可以通过 RDS管理控制台或OPENAPI来创建、修改和删除数据库。各实例之间相互独立、资源隔离,相互之间不存在CPU内存、IOPS等抢占问题。但是,同一实例中的不同数据库之间是资源共享的。每个实例拥有其自己的特性,如数据库类型、版本等,系统有相应的参数来控制实例行为。用户所购买RDS实例的性能,取决于购买RDS实例时所选择的配置,可供用户选择的硬件配置项为内存和磁盘容量。RDS数据库或简称数据库”是用户在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源,如 CPU内存、磁盘容量等。RDS不支持使用标准的SQL语句或客户端工具创建数据库,必须使用OPENAPI或RDS管理控制台进行操作。16.列举连接RDSforMySQI数据库的4种方法。答:方法1:使用客户端MySQL-Front访问。使用客户端MySQL-Front,在连接Host框中输人数据实例链接地址、端口(默认3306)、数据库用户名和数据库密码后,单击“确定”按钮即可。方法2:使用数据库管理T具NavicatMySQL。Navicat_MySQL是一套专为MySQL设计的强大的数据库管理及开发工具,可以在连接输人框中输人数据实例地址、端口 (默认3306)、数据库用户名和数据库密码后,单击“确定”按钮即可。方法3:使用MySQL命令登录。用户安装MySQL客户端后,可进人命令行方式连接数据库。命令格式如下。mysql-uuser_name-h-P3306-pxxxx其中,-u指定的是用户名,-h指定的是主机名,-P指定的是端口,-p指定的是密码。方法4:使用阿里云控制台iDBCloud访问。阿里云控制台iDBCloud的页面如图6-7所示,RDS连接地址以及端口不需要再输人, 只需在用户名”中输人数据库的账号,在密码”栏中输人数据库账号的密码,便可以登录 RDS进行数据操作了。第七章试述MapReduce和Hadoop的关系。答:谷歌公司最先提出了分布式并行编程模型 MapReduce,HadoopMapReduce是它的开源实现。谷歌的MapReduce运行在分布式文件系统GFSLh,与谷歌类似,HadoopMapReduce运行在分布式文件系统 HDFS上。相对而言,HadoopMapReduce要比谷歌MapReduce的使用门槛低很多,程序员即使没有任何分布式程序开发经验,也可以很轻松地开发出分布式程序并部署到计算机集群中。MapReduce是处理大数据的有力工具,但不是每个任务都可以使用MapReduce来进行处理。试述适合用MapReduce来处理的任务或者数据集需满足怎样的要求。答:适合用MapReduce来处理的数据集,需要满足一个前提条件:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。MapReduce模型采用Master(JobTracker)-Slave(TaskTracke结构,试描述JobTracker和TasKTracke的功能。答:MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker,Slave上运行TaskTrackero用户提交的每个计算作业,会被划分成若千个任务。JobTracker负责作业和任务的调度,监控它们的执行,并重新调度已经失败的任务。TaskTracker负责执行由JobTracker指派的任务。6试述MapReduce的工作流程(需包括提交任务、Map、Shuffle、Reduce的过程)]大]大BHB技术JB■与Jg 、存僧、处理、分析与应用E r= =z芹入分命<ta!DFS)S・芹入分命<ta!DFS)S・viluc・(hipuil*unn«i.value-liM<U)AOluC>」 Ain険除CWUIDFS)卜面是一个MapReduce算法的执行过程“MapReduce 便用InputFormat模块做Map阿的涣处埋,比如,強吐输人的格式足舎符合输入定义;俵后.将输入文件切分为逻辑上的多个InputSplit.InputSplit&MapReduce对文件进行处却和运算的输人单位.只是f谡铝槪念.毎个InputSplit幷没右对文件进行实际切割.只址记录「耍处理的数据的位暨和氏度。因为InputSplit是逻输切分而芥物理切分.所以.还需要通过RecordReader(RR)根据InputSplit中的信息来处理InputSplit中的具体记录.加载数据并转换为适合Map任务渎取的键值对.输入给Map任务°Map任务会根据用户fl定义的映射规则.输出一系列的vkey.value、作为中间结果,⑷为『让Reduce可以并行处理Map的结果,需要对Map的输出进行一定的分区、排序(Sorth合并(Combine)、*」并(Merge>操作,谢至^key.value-lisO形式的中间结果,再交给对应的Reduce进行处理.这个过禅称为Shuffle。Reduce以一系列<key,value・list>屮间结果作为输人.执行用户定义的逻楙・输出结果给OutputFormat模块.:OutputFormat模块会验证输岀Fl录是否已经存在以及输出结呆类型足否符合配逊文件中的配置类熨.如果祁満足.^.11Reduce的结果到分布式文件系统。貝体如图7・2所示。iVjj.2InRMl-nnml输入723Shume过程详解Shuffle过程简介Shuffle过程是MapReduce整个工仆流程的核心环忆理解Shuffle过程的基本原理,对于理解MapReduce流程至关亜要。所谓Shuffle.是指对Map输出结果进行分区、排序、合并等处理并宜给Reduce的过程,冈此.Shuffleil程分为Map端的操作和Reduce端的操作.如图7-3所示.主哥执荷以卜操作"III7-3Shufllc过也III7-3Shufllc过也①在Map瑞的ShutHc过程rM叩的输出结果询先被与入缓仔.当缓仔満时.就启动泊对摆作.把缓存屮的数据丐人磁盘丈件.并清空缓存、芳启动溢坊操作时.首先需耍把缓存中的数据进彳T分区.然厉对毎个分区的敎堀逬厅排序(Sort)和合并(Combine).之后冉写人範常文件。毎次溢吗葆作会牛成-个新的磁盘文件.Map任务的执行.磁fit中就会生成名个溢耳文件,在Mnp任务全部结束之前.这此溢写丈件会被口并(Merge〉成—^大的磁盘文件,然后•通知相应的Reduce任铸来领取属于口己处理的数据,②在Reduce端的Shuffle过程Reduce任务从Map端的不同Map机器领回属于自己处理的那部分数据.经后.对数据进行归并(Merpe)^交给Reduce处理’Map«的Shuffle过程Map瑞的Shuttle过稈包括4个4/骤.如图7-4所示。输入®UK和执片Map任务MapfT务的输人数扳-般保祁在分布式文件系统((81GFS或HDFS)的文件块中,这些文件块的格式是任恿的,可以是文档,也可以是二进制格式的」Map任务接受<key・valued为输入后,按一定的映射规则转换成一批<key,value〉进行输出。写人緩存图7YMap靖的Shuffle过段每个Map任务邯会被分配一个缓乩Wp的输出结泉不是立即写人滋駅而是fV先吗人缓存在缓存中积累一定数M的Wp输岀结舉以后・再一次性批肚写人班盘.这样町以大大减少对磁盘I/O的彫响。因为.做盘包含机械部件.它是通过烫头移动和撇片的转动来”址定付敎据的.每次寻址的开销探大.如果毎个Map報出结果祁氏按筛入破盘.会引入很名次討扯丿I•销•血一次性批蚩写人,就只需耍•次寻対.连续写入.大大降低rMtn,霭咚注总的圧.在耳人缙存之前.key图7YMap靖的Shuffle过段(3) 潘写(分X、排烬和合并)淀供给MapReduce的缓存的容敏足有限的.默认大小足100MB,融着Map任务的执行.缰存中M叩结果的数除会不断增加.很快就会占满整个缓仏这时,就必须启动滋対(Spill)操作.出缓"中的内容一次性宵人磁盘.并清空缓存.溢写的过程通曲是由另外-个饥独的拆台线程来完成的.不会影响Map结果往缓存写人.但是.为了保证Map结果能够不停地持续写入级仏不受溢写过程的影响.就必须辻缓仔中一巾4町用的空间.不能等剑全部占渦才心动溢耳讨榨.所以,一般会设置-个溢对比例,如0.8,也就足说.半IOOMB大小的煖存疲頗潢80MB敢抵时,就心动沿吗过程,把已经弓入的X0MB数据写人磁盘,剩余20MB空间供Map结果堆续吗人丿但足,在炉7到磁盘之前・缓存中的数据甘先会被分区(PartitionL缓存中的数据是<key・value>形式的键值对,这空牲值对最终畫要交给不同的Reduce任务进行并行处理MapReduce通过Partitioner接「I对这业进值U进行分区.欢认采用的分区方式足采用Hash隨数对key进行哈帝rn阳用Reduce任务的数钛进行取模・可以表示成hash(key)modR.其中,R表示Reduceff齐的数址,这样.就:町以把Map输出结果均匀地分配给这R个Reduce任务公并行处理了。当然.MapRcciucc也允i午用户通过繭伐Partitioner接口来门定义分区方式cOThj个分区内的所有键值对.后台线稈会根撫key对它们进行内存排库(Sort).排序是MapReduce的款认權作拆洋结束后・违包含一个町选的介并(Combine)操作如朵用户叩尤没有宦义Combiner臥敦.就不用进行合并操作.如衆用户0先定义fCombiner臥数・则这个时慣并操作.从而减少需要渣写到《5秋的数抿氐所谓“介并”.是指将那些財(相同key的<kcy.va!uo的value加起来.比如.冇曲个键偵对CrnnT.iMldmu:1>,经过合并操作以后就町以得到•个逖備对kxrmT・2>・减少数障这耳懦耍注臥Map熠的这种台并操作.具实和Reduce的功能相似.但足.由于这个操作发生AMap41・所以.我们只陡称之为••合并”.从而有別于Reduce.不过.并菲所行场合都可以便用Combiner,因为,Combiner的输岀J&Reduce任务的输人,Combiner绝不能改变Reduce任务皿终的计妹结槊,一般而声,黑加、最大值等场啟町以使用合并操作“縊过分区、排序以及可能发生的合并操作之斤这些缓存中的键值对就可以被丐人磯林・并清空缓存毎次溢得操作郁会在磁盘中生成•个新的溢吗丈件,写入溢4丈件中的所右傩值对,祁是经过分区和排序的。(4) 文件归井毎次溢写操作和会在滋盘中生嵐一个新的溢弓文件.随看MapReduce任务的进行,磴盘中的溢歸文件教址刽《來速名,半然.如果Ma卩输出结果很少.醸盘I•只会存布一个溢写文件.但是.通常都会存在名个溢行文件。城终.在Map任务全部结束之向.系统会对所有溢写文件中的瞰U逬行归并(Merge)・牛底一个大的淆写文件.这个大的港写文件中的所有键伯对.也足紿过分IX和排用的。所if?-'Jin"(Merge).足指时于昆冇相同key的健備对.会被tl并成个新的徒備对ft体耐白,対于若干个具角相同key的键值对4詡>・<i,,v2>……*4会被归并成-个新的大ttCft大ttCft术康1■与应用一 、存储、竝理、分析与应用二==.”二 大ttCft大ttCft术康1■与应用一 、存储、竝理、分析与应用二==.”二 建(ft对 ,—,•••,耳》。另外.进厅文件归并时,如果磁盘屮已经生成的溢焉文件的数秋趙过参数min.num.Sbinc的値时(默认值是3.用户可以修改这个值),那么.就可以再次运行Combiner.对数据进行合并燥作.从而减少写入碓盘的数括材但足.如果琏肚中只有-两个淆写文件时.执行合并操作就会“得不偿失”,因为IA行合井檢作金刁也需婪代价•因此.不会运行Combiner经过上述4个步骤以后.Map端的Shuffle程全部充成.用终牛成的一个大文件会袂存放在本地破盘这个大文件中的数摇是被分区的.不同的分区会被发送到不同的ReducefF务进行并行处理。JobTracker会一苗监测Map仟务的执行.当监测到一个M如仟务完成匚・就会VHP通知栢关的Reduce任务来••领取"然后开始Reduce耀的ShuEe过程。Reduce端的Shuffle过程相对FMap端而言,Reduce端的Shuffle过程IE常閒单,只需婆从Map端汝取Map结果,然话执荷归并操作.杲后输送给Reduce任务逬行处冏貝休而耳.Reduce端的Shufllc过程包扌舌以F3个步骤(见图7-5X(1)“领取”数据Map的Shuffle过程结束后.所有Map输出结果都保存在Map机器的本地磁盘上.Reduce任务需要把这些数据“领取”(Fetch)回来存放到自己所住机器的本地磁盘上因此•在毎个Reduce任务真正开始之前•它大部分时间都在从Map端把属于自己处理的那吐分区的数据“领取”过来°毎个Reduce任务矣不断地通过RPC向JobTracker询问Mzp任务是否已经完成:JobTracker监测到一个Map任务完成后.就矣通知相关的Reduce任务来••领取”数据;一口-个Reduce仟务收到JobTracker通知•它就会到该Map任务所金机黠I把WFAC处理的分IK数据领取到本地磁盘中「一般系统中会存在多个Map机殊.因此.Reduce任务会使用多个线稈同时从多个Wp机器领冋数据。(々)归并数据从Map矚领冋的数据,会芹先被存放在Reduce任务所在机器的緩存中.如果缓存被占満,就会像Map端一样被溢写到磁盘中v由Shuffle阶段,Reduce任务还没右真1E幵始执彳J・W此,这时町以把内存的大部分空同分配给Shuffle 作为缓疗。需姿注惫的是.系统中一般TF在多个Map机器,所以.Reduce任务会从多个Map机器皱啊属十自已处理的那些分区的数据.MM” …一• • 二此.堤存中的数据是来口不同的M叩机器的,•股会存在很多町口令并(Combine)的键備对当港写过程启动时.具有相同的■值对令威归并(Mcr^ck如果用户定义了Combiner.则归并后的散据还可以执行合并操作、减少写人磁盘的数鮭乜每个槪写逹程结束后*都会在畫盘中牛咸一个體写丈件.因此.磴吐上会存在多个權写文井二韻堆.当所有的Map端数据廨已冋吋,和械ap端类ftL多带港写文件会谨归挣成一个大文件.归井的时帳还会时磁値对进行排序*从而僮得最喪丸文件中的魅債対都星有序的。当養.在数据很少的WT*金存就可以存诸所有数抵就不需卷把数摇邀马劉嘰盘’而是直按在內存申执行口并操作.然后宜接输出皓Reduceft*.需霍说明的是.ftjffifth.的多个溢写文件归并威一个大文件.可能需普执行多轮门井操作"毎轮!U幷鰹作可以IU挣的丈件数墮呈由姿数io.son.facur的俏來控制的(默认值轻O可以摆收)佣中牛咸了30个世写文件,毎轮可以归并10个溢写立件.則需要经过*轮01井・得列5个曲幷后的AiM.〔3}把数扳榆人Reduce忏务■ 磁盘申经过窘轮旧并肩碍到的若干个大尢件.不会养续归并虑一牛斎的I賈件•而是人納Reduce任务.这样可以威少雜盘俄对幵帽*由此*fitTShuffle 顺利结東「按下来.Reduce任务会执行Reduce两毂1嚨义的各种映时,输出毘绦绪曜并保祚到分布式文件系扯中(比如GFS或HDFSX9.MapReduce中有这样一个原则:移动计算比移动数据更经济。试述什么是本地计算,并分析为何要采用本地计算。答: MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为移动数据需要大量的网络传输开销, 尤其是在大规模数据环境下,这种开销尤为惊人,所以,移动计算要比移动数据更加经济。本地计算:在一个集群中,只要有可能, MapReducei架就会将Map程序就近地在HDFS数据所在的节点运行,即将计算节点和存储节点放在一起运行,从而减少了节点间的数据移动开销。10.试说明一个MapReduce程序在运行期间,所启动的Map任务数量和Reduce任务数量各是由什么因素决定的。是否所有的MapReduce程序都需要经过Map和Reduce这两个过程?如果不是,请举例说明。答:不是。对于关系的选择运算,只需要 Map过程就能实现,对于关系R中的每个元组t,检测是否是满足条件的所需元组,如果满足条件,则输出键值对 <,>,也就是说,键和值都是t。这时的Reduce函数就只是一个恒等式,对输入不做任何变换就直接输出。试分析为何采用Combiner可以减少数据传输量?是否所有的MapReduce程序都可以采用Combiner?为什么?答:对于每个分区内的所有键值对,后台线程会根据 key对它们进行内存排序(Sort),排序是MapReduce的默认操作。排序结束后,还包含一个可选的合并 (Combine)操作。如果用户事先没有定义Combiner函数,就不用进行合并操作。如果用户事先定义了 Combiner函数,则这个时候会执行合并操作,从而减少需要溢写到磁盘的数据量。所谓合并”是指将那些具有相同key的<key,value>的value加起来,比如,有两个键值对<*xmu",1>和<*xmu",1>,经过合并操作以后就可以得到一个键值对 <*xmu",2>,减少了键值对的数量。不过,并非所有场合都可以使用 Combiner,因为,Combiner的输出是Reduce任务的输人,Combiner绝不能改变Reduce任务最终的计算结果,一般而言,累加、最大值等场景可以使用合并操作。MapReduce程序的输入文件、输出文件都存储在HDFS中,而在Map任务完成时的中间结果则存储在本地磁盘中。试分析中间结果存储在本地磁盘而不是HDFS上有何优缺点。答:第八章1、试述在Hadoop推出之后其优化与发展主要体现在哪两个方面。答:Hadoop对MapReduce和GDFS的许多方面做了有针对性的改进提升。母a-1Hadg□危H冃湘;%讲;4匚°弓= !'2.0Hadwpl.0舱ra® '—―— * —HOF-S — '单-齐轉前点"170:单点快效冋聽诫计匚石玄宇间,[设计娜瀝ft理垃*恢rHDFS耽邯"种囲孝牛谢戕冒{新的诟甲悴即YvexTHDFSha.桂拱酩称节点轎M2、试述HDFS1.0中只包含一个名称节点会带来哪些问题答:HDFS1.C采用单点名称节点的设计,不仅会带来单点故障问题,还存在可扩展性、性能和隔离性等问题。在可扩展性方面,名称节点把整个HDFS文件系统中的元数据信息都保存在自己的内存中,HDFS1.0中只有一个名称节点,不可以水平扩展,而单个名称节点的内存空间是由上限的,这限制了系统中数据块、文件和目录的数目。在系统整体性能方面,整个HDFS文件系统的性能会受限于单个名称节点的吞吐量。在隔离性方面,单个名称节点难以提供不同程序之间的隔离性,一个程序可能会影响会影响其他运行的程序。3、请描述HDFSHA架构组成组建及其具体功能。答:在一个典型的HA集群中,一般设置两个名称节点,其中一个名称节点处于“活跃”状态,另一个处于“待命”状态。处于活跃状态的名称节点负责对外处理所有客户端的请求,而处于待命状态的名称节点则作为备用节点,保存了足够多的系统元数据,当名称节点出现故障时提供快速回复能力也就是说,在HDFSHA中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点,不会影响到系统的正常对外服务。4、请分析HDFSHA架构中数据节点如何和名称节点保持通信。答:在HDFS联邦中,所有名称节点会共享底层的数据节点存储资源。每个数据节点要向集群中所有的名称节点注册,并周期性地向名称节点发送“心跳”和块信息,报告自己的状态,同时也会处理来自名称节点的指令。6、 请描述HDFS联邦中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。答:HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个“块池”。每个数据节点会为多个块池提供块的存储。可以看出,数据节点是一个物理逻辑,而块池则属于逻辑概念,一个块池是一组块的逻辑集合,块池中的各个块实际上是存储在各个不同的数据节点中的。因此HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。7、 请阐述MapReducel.0体系结构中存在的问题。答:(1)存在单点故障;(2) JobTracker“大包大揽”导致任务过重;(3) 容易出现内存溢出;(4) 资源划分不合理。8、请描述YARN架构中各组件的功能答:组件功能ResourceManager处理客户端请求启动/监控ApplicationMaster监控NodeManager资源分配与调度ApplicationMaster为应用程序申请资源,并分配给内部任务任务调度、监控与容错NodeManager①单个节点上的资源管理处理来自ResourceManager的命令处理来自ApplicationMaster的命令9、请描述在YARN框架中执行一个MapReduce程序时,从提交到完成需要经历的具体步骤。答:①用户编写客户端应用程序,向YARN提交应用程序,提交的内容包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。YARN中的ResourceManager负责接收和处理来自客户端的请求。接到客户端应用程序请求后,ResourceManager里面的调度器会为应用程序分配一个容器。同时,ResourceManager的应用程序管理器会与该容器所在的 NodeManager通信,为该应用程序在该容器中启动一个ApplicationMasterApplicationMaster被创建后会首先向ResourceManager注册,从而使得用户可以通过ResourceManager来直接查看应用程序的运行状态ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请资源。ResourceManager以“容器”的形式向提出申请的ApplicationMaster分配资源,一旦ApplicationMaster申请到资源后,就会与该容器所在的NodeManager进行通信,要求它启动任务。当ApplicationMaster要求容器启动任务时,它会为任务设置好运行环境(包括环境变量、JAR包、二进制程序等),然后将任务启动命令写到一个脚本中,最后通过在容器中运行该脚本来启动任务。各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,让ApplicationMaster可以随时掌握各个任务的运行状态,从而可以在任务失败时重启任务。应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己。若ApplicationMaster因故失败,ResourceManager中的应用程序管理器会监测到失败的情形,然后将其重新启动,直到所有任务执行完毕。10、请对YARN和MapReducel.0框架进行优劣势对比分析答:(1)大大减少了承担中心服务功能的ResourceManager的资源消耗。MapReducel.O中的JobTracker需要同时承担资源管理、任务调度和任务监控等三大功能,而YARN中的ResourceManager只需要负责资源管理,需要消耗大量资源的任务调度和监控重启工作则交由ApplicationMaster来完成。由于每个作业都有与之关联的独立的ApplicationMaster,所以,系统中存在多个作业时,就会同时存在多个ApplicationMaster,这就实现了监控任务的分布化,不再像MapReduce1.0那样监控任务只集中在一个JobTracker上。(2) MapReduce1.0既是一个计算框架,又是一个资源管理调度框架,但是只能支持MapReduce编程模型。而YARN则是一个纯粹的资源调度管理框架,在它上面可以运行包括MapReduce在内的不同类型的计算框架,默认类型是MapReduceo因为,YARN中的ApplicationMaster是可变更的,针对不同的计算框架,用户可以采用任何编程语言自己编写服务于该计算框架的ApplicationMaster。比如,可以编写一个面向MapReduce计算框架的ApplicationMaster,从而使得MapReduce计算框架可以运行在YARN框架之上。同理,还可以编写面向Spark、Storm等计算框架的ApplicationMaster,从而使得SparkStorm等计算框架也可以运行在YARN框架之上。(3) YARN中的资源管理比MapReduce1.0更加高效。YARN采用容器为单位进行资源管理和分配,而不是以槽为单位,避免了MapReduce1.0中槽的闲置浪费情况,大大提高了资源的利用率。11、请分别描述PigTez和Kafka的功能。答:①Pig是Hadoop生态系统的一个组件,提供了类似SQL的PigLatin语言(包含Filter、GroupBy、Join、OrderBy等操作,同时也支持用户自定义函数),允许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的MapReduce应用程序,Pig会自动把用户编写的脚本转换成MapReduce作业在Hadoop集群上运行,而且具备对生成的MapReduce程序进行自动优化的功能,所以用户在编写Pig程序的时候,不需要关心程序的运行效率,这就大大减少了用户编程时间。Tez是Apache开源的支持DAG作业的计算框架,直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步进行拆分,即Map被拆分成Input、Process。、Sort、Merge和Output,Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,经过分解后的这些元操作可以进行自由任意组合产生新的操作,经过一些控制程序组装后就可形成一个大的 DAG作业。通过DAG作业的方式运行MapReduce作业,提供了程序运行的整体处理逻辑,就可以去除工作流当中多余的Map阶段,减少不必要的操作,提升数据处理的性能。Hortonworks把Tez应用到数据仓库Hive的优化中,使得性能提升了约100倍。Kafka是由LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。 Kafka设计的初衷是构建一个可以处理海量日志、用户行为和网站运营统计等的数据处理框架。第九章1、 Spark是基于内存计算的大数据计算平台,试述Spark的主要特点。答:Spark具有如下4个主要特点:运

温馨提示

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

评论

0/150

提交评论