1、学生的课程总评成绩由平时成绩(占50%)和期末考试成绩(50%)两部分构成。1、 平时成绩依据课上小测验2次,每次占10%;2、 提交创新性报告2份,每份10%;3、 提交1次小论文,占10%。4、 最后的开卷考试,成绩占50%。网络计算基本概念分布式对象计算Web计算XMLWeb Services无线与移动计算云计算大数据及分析要求:1、请同学们提交2份创新报告,每份不少于800字,打印签名及学号。内容以上面8个主题为目标,自选题目。2、请同学们提交1份小论文,字数不少于1500字,打印签名及学号。内容以上面8个主题为目标,自选题目,不要与创新报告内容重复。3、按时参加考试,注意考试时间与地
2、点,考试当天每人交来3份报告(打印、签名及学号)。开卷考试,自带资料,要求字迹工整,内容详实,认真书写。一:将会从以下简述题中选择部分。1、 阐述分布式核心技术中的分布式计算、并行计算、云计算的基本概念,以及各自的技术核心特点?概念:(1) 分布式计算:将需要巨大计算能力的问题分成许多小部分分布到多台计算机进行处理,最后综合结果。(2) 并行计算:同时使用多种计算资源解决计算问题的过程。(3) 云计算:云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。核心特点:(1) 分布式计算:需要多台联网的分布在各处的计算机协同
3、处理。并行的主体是计算机(2) 并行计算:一般而言,指时间或者空间上并行。如流水线技术或强调单计算机多核处理。并行的主体是处理器。(3) 云计算:云计算是上述两种计算的商业发展。关键在能够对云内的基础设施等资源(资源池)进行动态按需分配与管理。2、 阐述移动计算的基本概念与技术特点?移动计算与分布式计算有何区别?概念:移动计算是使得人们可以在任何时间地点以任何方式接入网络服务的技术集。它使计算机或其它信息智能终端设备在无线环境下实现数据传输及资源共享,它的作用是将有用、准确、及时的信息提供给任何时间地点的任何客户。区别:与分布计算相比,移动计算具有以下一些主要特点:(1)移动性:移动计算机在移
4、动过程中可以通过所在无线单元与固定网络的节点或其他移动计算机连接。(2)网络条件多样性:移动计算机在移动过程中所使用的网络一般是变化的。 (3)频繁断接性:由于受电源、无线通信费用、网络条件等因素的限制,移动计算机是主动或被动地间连、断接。(4)网络通信的非对称性:移动节点的发送能力较弱。因此,下行链路和上行链路的通信带宽和代价相差较大。(5)移动计算机的电源能力有限(6)可靠性低:这与无线网络本身的可靠性及移动计算环境的易受干扰和不安全等因素有关。3、 阐述Google云计算原理中的Chubby的设计目标是什么?Chubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布
5、式系统,解决了分布的一致性问题。设计目标如下:(1) 高可用性和高可靠性;首要目标,在保证这一目标的基础上再考虑系统的吞吐量和存储能力;(2) 高扩展性;将数据存储在价格较为低廉的RAM,支持大规模用户访问文件 (3) 支持粗粒度的建议性锁服务;提供这种服务的根本目的是提高系统的性能 (4) 服务信息的直接存储;可直接存储包括元数据、系统参数在内的有关服务信息(5) 支持通报机制;客户可以及时地了解到事件发生 (6) 支持缓存机制;通过一致性缓存将常用信息保存在客户端,避免了频繁地访问主服务器 4、 阐述Paxos算法在Chubby中起什么作用?简述Paxos算法的原理?作用:Chubby设计
6、者借鉴了Paxos的两种解决机制:给协调者指派序号或限制协调者可以选择的值。原理:1、选择一副本为协调者。 2、协调者从客户提交的值中选择一个,accept消息广播给所有的副本,其他的副本收到广播后,选择接受或者拒绝这个值,并将决定结果反馈。 3、协调者收到大多数副本接受信息后,认为达到了一致性,接着向相关副本发送一个mit消息 。5、 阐述Google云计算原理中的Bigtable数据模型和系统架构? 数据模型FBigtable是一个分布式多维映射表,表中的数据通过一个行关键字(Row Key)、一个列关键字(Column Key)以及一个时间戳(Time Stamp)进行索引 FBigta
7、ble对存储在其中的数据不做任何解析,一律看做字符串FBigtable的存储逻辑可以表示为: (row:string, column:string, time:int64)string系统架构Bigtable主要由三个部分组成:客户端程序库、一个主服务器和多个子表服务器F客户访问Bigtable服务时,首先要利用其库函数执行Open()操作来打开一个锁(实际上就是获取了文件目录),锁打开以后客户端就可以和子表服务器进行通信F和许多具有单个主节点分布式系统一样,客户端主要与子表服务器通信,几乎不和主服务器进行通信,这使得主服务器的负载大大降低F主服务主要进行一些元数据操作以及子表服务器之间负载调
8、度问题,实际数据是存储在子表服务器上 6、阐述Google云计算原理中的分布式存储系统Megastore的核心技术是什么? 核心技术是复制。简述如下:Megastore的数据复制是通过paxos进行同步复制的,也就是如果更新一个数据,所有机房都会进行同步更新,因为使用paxos进行复制, 所以不同机房针对同一条数据的更新 复制到所有机房的更新顺序都是一致的,同步复制保证数据的实时可见性,采用paxos算法则保证了所有机房更新的一致 性,所以个人认为megastore的更新可能会比较慢,而所有读都是实时读(对于不同机房是一致的),因为部署有多个机房,并且数据总是最新。7、阐述Google云计算原
9、理中大规模分布式系统的监控基础架构Dapper关键技术是什么?关键技术是实现应用级的透明。对于应用的程序员来说,是不需要知道有跟踪系统这回事的。如果一个跟踪系统想生效,就必须需要依赖应用的开发者主动配合,那么这个跟踪系统也太脆弱了,往往由于跟踪系统在应用中植入代码的bug或疏忽导致应用出问题,这样才是无法满足对跟踪系统“无所不在的部署”这个需求。(这一段可以不要)做到这一点需要实现 轻量级的核心功能库和二次抽样技术。轻量级核心功能库:将Dapper的核心监控实现限制在一个由通用线程(Ubiquitous Threading)、控制流(Control Flow)和RPC代码库(RPC Libra
10、ry Code)组成的小规模库基础上。二次抽样技术:第一次抽样实践中,设计人员发现当抽样率低至1/1024时也能够产生足够多的有效监控数据,即在1024个请求中抽取1个进行监控也是可行的,从而可以捕获有效数据第二次抽样发生在数据写入Bigtable前,具体方法是将监控id散列成一个标量z(0z1),如果某个区间的z小于事先定义好的汇总抽样系数,则保留这个区间并将它写入Bigtable,否则丢弃 8、阐述Google App Engine提供了哪些服务?Google App Engine的沙盒对开发人员进行哪些限制? 服务:网址获取、邮件服务、Memcache 服务、图片操作、python程序框
11、架、数据库服务、用户管理服务等等。限制:(1)用户应用程序只能通过Google App Engine提供的网址抓取API和电子邮件服务API来访问互联网中其他计算机;只能在标准接口上通过HTTP或HTTPS来进行 (2)应用程序无法对Google App Engine的文件系统进行写入操作,只能读取应用程序代码上的文件,并且该应用程序必须使用Data Store数据库来存储应用程序运行期间持续存在的数据 (3)应用程序只有在响应网络请求时才运行,且响应时间必须极短(几秒之内完成)。同时,请求处理的程序不能在自己的响应发送后产生子进程或执行代码 9、阐述当前主流分布式文件系统有哪些?各有什么优缺
12、点?Google文件系统GFS特点体现在哪?第一问:目前几个主流的分布式文件系统除GPFS外,还有HadoopHDFS、Lustre、FastDFS等。第二问:1.HadoopHDFS优点:适合大数据处理(支持GB,TB,PB级别的数据存储,支持百万规模以上的文件数量) - 适合批处理(支持离线的批量数据处理,支持高吞吐率) - 高容错性(以数据块存储,可以保存多个副本,容易实现负载均衡)缺点: - 小文件存取(占用namenode大量内存,浪费磁盘空间) - 不支持并发写入(同一时刻只能有一个进程写入,不支持随机修改)2.Lustre优点:是一个基于对象存储的分布式文件系统,比较成熟,适合大
13、型集群,支持动态扩展。缺点:它只有两个元数据管理节点 ,当系统达到一定的规模之后,管理节点会成为Lustre系统中的瓶颈。3.FastDFS优点:以文件为基本存储单位,解决了大容量存储的问题。特别适合以文件为载体的在线服务,简化文件的存取功能。缺点:难以并行化处理(一个节点只能处理一个文件,无法同时处理一个文件); -难以实现负载均衡(文件大小不同,无法实现负载均衡,用户需要自己控制文件大小)第三问:GPFS的主要优点有以下三点:1)使用分布式锁管理和大数据块策略支持更大规模的集群系统,文件系统的令牌管理器为块、inode、属性和目录项建立细粒度的锁,第一个获得锁的客户将负责维护相应共享对象的
14、一致性管理,这减少了元数据服务器的负担;2)拥有多个元数据服务器,元数据也是分布式,使得元数据的管理不再是系统瓶颈;3)令牌管理以字节作为锁的最小单位,也就是说除非两个请求访问的是同一文件的同一字节数据,对于数据的访问请求永远不会冲突.10、阐述MapReduce与传统的分布式程序设计相比有何优点?例举传统分布式程序设计的优缺点?(真心找不到,当然我也没怎么理解,感觉传统的分布式应该改为传统的集中式,知道答案的补充一下)(1)通过MapReduce这个分布式处理框架,能用于处理大规模数据。(2)能将很多繁琐的细节隐藏起来,容错率高。比如自动并行化、负载均衡和灾备管理等,这样将极大地简化程序员的
15、开发工作;(3)MapReduce的伸缩性非常好;也就是说每增加一台服务器,其就能将差不多的计算能力接入到集群中,传统的在伸缩性方面都与MapReduce相差甚远。二:将会从以下叙述题中选择题目解答。1、参照以下MapReduce操作执行流程图,请叙述MapReduce操作过程?(1)输入文件分成M块,每块大概16M64MB(可以通过参数决定),接着在集群的机器上执行分派处理程序(2)M个Map任务和R个Reduce任务需要分派,Master选择空闲Worker来分配这些Map或Reduce任务(3)Worker读取并处理相关输入块,Map函数产生的中间结果对暂时缓冲到内存 (4)中间结果定时
16、写到本地硬盘,分区函数将其分成R个区。中间结果在本地硬盘的位置信息将被发送回Master,然后Master负责把这些位置信息传送给Reduce Worker(5)当Master通知执行Reduce的Worker关于中间对的位置时,它调用远程过程,从Map Worker的本地硬盘上读取缓冲的中间数据。当Reduce Worker读到所有的中间数据,它就使用中间key进行排序,这样可使相同key的值都在一起。(6)Reduce Worker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数。Reduce函数的结果写到一个最终的输
17、出文件(7)当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序。此时MapReduce返回用户程序的调用点2、请参照以下“云计算仿真器cloudsim”的体系结构,叙述其技术实现及使用方法?技术实现:1)BwProvisioner用于模拟虚拟机的带宽分配策略。可以通过扩展这个类反映其应用需求的变化,实现自己的策略(基于优先级或服务质量)2)CloudCoordinator整合了云数据中心,负责周期性地监控数据中心资源的内部状态和执行动态负载均衡的决策 3)Cloudlet模拟了云应用服务(如内容分发、社区网络和业务工作流等)。每一个应用服务都会拥有一个预分配的指令长度和
18、其生命周期内所需的数据传输开销4)CloudletScheduler扩展实现了多种策略,用于决定虚拟机内的应用服务如何共享处理器能力。支持两种调度策略:空间共享(CloudletSchedulerSpaceShared)和时间共享(CloudletSchedulerTimeShared)策略 7)DatacenterCharacteristics包含了数据中心资源的配置信息8)Host模拟如计算机、存储服务器等物理资源。它封装了一些重要信息,如内存/存储器的容量、处理器内核列表及类型(多核机器)、虚拟机之间共享处理能力的分配策略、为虚拟机分配内存和带宽的策略等9)NetworkTopology
19、包含模拟网络行为(延时)的信息。它里面保存了网络拓扑信息,该信息由BRITE拓扑生成器生成10)RamProvisioner代表为虚拟机分配主存的策略11)SanStorage模拟了云数据中心的存储区域网,主要用于存储大量数据,类似于Amazon S3、Azure blob storage等 12)Sensor该接口的实现必须通过实例化一个能够被云协调器使用的传感器组件,用于监控特定的性能参数(能量消耗、资源利用)。该接口定义了如下方法:(1)为性能参数设置最小值和最大值。(2)周期性地更新测量值。(3)该类能够用于模拟由主流云提供商提供的真实服务 13)Vm模拟由主机组件托管和管理的虚拟机
20、14)VmAllocationPolicy代表虚拟机监视器使用的调度策略,该策略用于将虚拟机分配给主机 15)VmSheduler由一个主机组件实现,模拟为虚拟机分配处理核所用的策略(空间共享和时间共享) 使用方法:(1)初始化CloudSim包(2)创建数据中心(3)创建数据中心代理数据中心代理负责在云计算中根据用户的QoS 要求协调用户及服务供应商和部署服务任务(4)创建虚拟机对虚拟机的参数进行设置,主要包括ID、用户ID、MIPS、CPU数量、内存、带宽、外存、虚拟机监控器、调度策略,并提交给任务代理(5)创建云任务创建指定参数的云任务,设定任务的用户ID,并提交给任务代理。在这一步可以
21、设置需要创建的云任务数量以及任务长度等信息(6)在这一步调用自定义的任务调度策略,分配任务到虚拟机(7)启动仿真(8)在仿真结束后统计结果 3、技术应用题:假设有一批海量的数据,每个数据都是由26个字母组成的字符串,原始的数据集合是完全无序的,怎样通过MapReduce完成排序工作,使其有序(字典序)呢? 解答:对原始的数据进行分割(Split),得到N个不同的数据分块,(做题画最终的图就好,三张图可以融合画)每一个数据分块都启动一个Map进行处理。采用桶排序的方法,每个Map中按照首字母将字符串分配到26个不同的桶中,按照首字母将Map中不同桶中的字符串集合放置到相应的Reduce中进行处理
22、。具体来说就是首字母为a的字符串全部放在Reduce1中处理,首字母为b的字符串全部放在Reduce2,以此类推, 4、基于分布式计算程序的Hadoop可以运行于大型计算机集群上,请参照自己的理解与应用经历描述Hadoop集群的体系结构与方法、安装配置主要支撑技术平台等(可以图形+解释进行描述)?Hadoop概述: 基于Apache基金会下的一个开源项目,致力于开发一个可靠的、大规模的分布式计算框架 用户可采用简单的计算模型在计算机集群下对大规模的数据进行分布式处理 体系结构方法: 在Hadoop部署中,有三种服务器角色,他们分别是客户端、Masters节点以及Slave 节点。Master
23、节点,Masters 节点又称主节点,主节点负责监控两个核心功能:大数据存储(HDFS)以及数据并行计算(Map Reduce)。其中,Name Node 负责监控以及协调数据存储(HDFS)的工作,Job Tracker 则负责监督以及协调 Map Reduce 的并行计算。 而Slave 节点则负责具体的工作以及数据存储。每个 Slave 运行一个 Data Node 和一个 Task Tracker 守护进程。这两个守护进程负责与 Master 节点通信。Task Tracker 守护进程与 Job Tracker 相互作用,而 Data Node 守护进程则与 Name Node 相互
24、作用。 上图是一个典型的 Hadoop 集群架构。这张图中,Hadoop 集群以机架为单位存在,而每个机架顶部都会有一个交换机通过千兆网(或万兆网)与外部关联。我们通过上行链路将所有的机架链接在一起形成一个集群。在一个机架中,有些服务器作为 Master 节点,例如 Name Node等等,而更多的则是 Slave Node。下一个问题表示不懂老师问的啥?我就随便找了一些答案了。支撑平台:GNU/Linux是产品开发和运行的平台。 Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。安装配置前所需的软件有:1、JavaTM1.5.x。2、ssh必须安装并且保证ss
25、hd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。之后边可以获取Hadoop最新稳定发行版本。具体安装:安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。通常,集群里的一台机器被指定为NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves。我们用HADOOP_HOME指代安装的根路径。通常,集群里的所有机器的HADOOP_HOME路径相同。根据Hadoop架构组成来作答技术实现:HDFS(Hadoop Distributed File Syste
26、m)Map/Reduce(Job Scheduling/Execution System)Hbase(Column Database)Pig(Data Flow)Hive(SQL)SqoopETL ToolsBI ReportingRDBMSAvroSerialization)Zookeeper(Coordination) 分布式文件系统(HDFS):HDFS向应用程序提供高的数据吞吐访问,适合于需要处理大规模海量数据集的应用 并行计算模型(Map/Reduce):将一个复杂的问题,分成若干个简单的子问题进行解决。然后,对子问题的结果进行合并,得到原有问题的解 列式数据库(HBase):可提供随机的、实时的大数据读写访问;目标是在商用硬件上存储非常大的表数十亿的行数百万的列 数据仓库(Hive) 数据分析语言(Pig) 数据格式转化工具(Sqoop) 协同工作系统(Zookeeper) 数据序列化系统(Avro)