第一章:大数据与云计算1.何为大数据?海量数据或巨量数据,其规模巨大到无法通过目前主流的计算机系统在合理时间内获取、存储、管理、处理并提炼以帮助使用者决策。2.大数据具有4V+1C的特征(1)数据量大:存储的数据量巨大,PB级是常态(2)多样:数据的来源及格式多样(3)快速:数据增长速度快(4)价值密度低:需要对大量的数据进行处理,挖掘其潜在的价值。(5)复杂度:对数据的处理和分析的难度大3.什么是云计算?长定义:云计算是一种商业模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能根据需要获取计算力、存储空间和信息服务。短定义:云计算是通过网络按需提供可动态伸缩的廉价计算服务。4.云计算是并行计算、分布式计算和网络计算的发展。5.云计算特点:(1)超大规模(2)虚拟化(3)高可靠性(4)通用性(5)高可伸缩性(6)按需服务(7)极其廉价6.云计算按照服务类型大致可分为三类(1)将基础设施作为服务。(IaaS)(2)将平台作为服务。(PaaS)(3)将软件作为服务(SaaS)7.云计算实现机制云计算技术体系结构分为四层:物理资源层、资源池层、管理中间件层和SOA构建层8.云计算优势(1)更低的硬件和网络成本(2)更低的管理成本和电力成本(3)更高的资源利用率第二章:Google云计算原理与应用1.Google文件系统是一个大型的分布式文件系统。它为Google云计算提供海量存储,处于所有核心技术的底层。2.GFS将整个系统的节点分为三类角色:客户端、主服务器、数据块服务器3.GFS特点(1)采用中心服务器模式(2)不缓存数据(3)在用户状态下实现(4)只提供专用接口4.在服务器失效经常发生的情况下,云计算数据存储技术需要采用容错机制和冗余机制来保证数据的可用性。5.Master容错:Master上保存了GFS文件系统的三种元数据。(1)命名空间,也就是整个文件系统的目录结构(2)Chunk与文件名的映射表(3)Chunk副本的位置信息,每一个Chunk默认有三个副本6.ChunkServer容错:Chunk的默认大小是64MB。7.系统管理技术(1)大规模集群安装技术(2)故障检测技术(3)节点动态加入技术(4)节能技术8.MapReduce:在编程时,开发者必须实现两个主要的函数Map和Reduce(1)一个Map函数就是对一部分原始数据进行指定的操作(2)一个Reduce操作就是对每个Map所产生的中间结果进行合并操作9.实现机制(1)MapReduce函数首先把输入文件分成M块(2)分派的执行程序中有一个主控程序Master(3)一个被分配了Map任务的Worker读取并处理相关的输入块(4)缓冲到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分成R个区。(5)当Master通知执行Reduce的Worker关于中间key,value对的位置时,它调用远程过程,从MapWorker的本地硬盘上读取缓冲的中间数据。(6)ReduceWorker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数(7)当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序。10.容错机制MapReduce通过重新执行失效的地方来实现容错。(1)Master失效:Master会周期性地设置检查点,并导出Master的数据。一旦某个任务失效,系统就从最近的一个检查点恢复并重新执行。由于只有一个Master在运行,如果Master失效了,则只能终止整个MapReduce程序的运行并重新开始。(2)Worker失效:Master会周期性地给Worker发送ping命令,如果没有Worker的应答,则Master认为Worker失效,终止对这个Worker的任务调度,把失效Worker的任务调度到其他Worker上重新执行。11.P20案例分析和实习wordcount12.BigTable设计动机(1)需要存储的数据种类繁多(2)海量的服务请求(3)商用数据库无法满足Google的需求13.BigTable设计目标(1)广泛的适用性(2)很强的可扩展性(3)高可用性(4)简单性14.Bigtable是一个分布式多维映射表,表中的数据通过一个行关键字、一个列关键字、一个时间戳进行索引。数据类型:string(row:string,column:string,time:int64)-string15.行:可以是任意的字符串,大小不能超过64KB。表中的数据都是根据行关键字进行排序的,排序使用的是词典序。倒排好处:(1)同一地址域的网页会被存储在表中的连续为止,有利于用户查找和分析。(2)倒排便于数据压缩,可以大幅提高压缩率。16.列:将其组织成所谓的列族。语法规则:族名:限定词。族名必须有意义,限定词则可以任意选定。族同时也是Bigtable中访问控制的基本单元17.时间戳:Google的很多服务比如网页检索和用户的个性化设置等都需要保存不同时间的数据,这些不同的数据版本必须通过时间戳来区分。64位整型数,具体的赋值方式可以用户自行定义。18.系统架构三个云计算组件:WorkQueue:分布式的任务调度器,负责故障处理及监控。GFS:保存资表数据及日志。Chubby:负责元数据库存储及主服务器的选择。19.Chubby的作用(1)选取并保证同一时间内只有一个主服务器。(2)获取字表的位置信息。(3)保存BigTable的模式信息及访问控制列表。20.BigTable主要有三部分组成:客户端程序库、一个主服务器、多个子表服务器。21.主服务器的作用(1)新子表分配(2)子表服务器状态监控(3)子服务器之间的负载均衡22.子表服务器:每个子表服务器上仅保存一个日志文件。ssTable是最小存储单位。23.bigtable数据读和写操作有很大的差异24.性能优化:(1)局部性群组(2)压缩(3)布隆过滤器第三章:Amazon云计算AWS1.EC2基本架构主要包括Amazon机器映像、实例、存储模块等组成部分,并能与S3等其他Amazon云计算服务结合使用。(1)Amazon机器映像:包含了操作系统、服务器程序、应用程序等软件配置的模板。(2)EC2中实例由AMI启动,像传统的主机一样提供服务,同一个AMI可以用于创建具有不同计算和存储能力的实例。(3)EBS存储卷的设计与物理硬盘相似,其大小由用户设定,目前提供的容量从1GB到1TB不等。快照功能是EBS的特色功能之一,用于在S3中存储AmazonEBS卷的时间点副本。2.EC2关键技术(1)地理区域和可用区域(2)EC2的通信机制:公共IP地址、私有IP地址、弹性IP地址(3)弹性负载平衡(4)监控服务(5)自动缩放(6)服务管理控制台3.EC2的安全及容错机制(1)安全组技术:安全组是一组规则,用户利用这些规则来决定哪些网络流量会被实例接受,其他则全部拒绝。当用户的实例被创建时,如果没有指定安全组,则系统自动将该实例分配给一个默认组。默认组只接受组内成员的消息,拒绝其他消息。当一个组的规则改变后,改变的规则自动适用于组中所有的成员。SSH是目前对网络上传输的数据进行加密的一种很可靠的协议,当用户创建一个密钥对时,密钥对的名称(KeyPairName)和公钥(PublicKey)会被存储在EC2中(2)容错机制:使用弹性IP地址。弹性IP地址和用户账号绑定而不是和某个特定的实例绑定。当系统正在使用的实例出现故障时,用户只需要将弹性IP地址通过网络地址转换NAT转换为新实例所对应的私有IP地址。通过弹性IP地址改变映射关系总可以保证有实例可用4.简单存储服务(S3)构架在Dynamo之上,用于提供任意类型文件的临时或永久性存储。S3的总体设计目标是可靠、易用及低成本。5.桶和对象(1)桶:桶适用于存储对象的容器,作用类似文件夹,但桶不可以被嵌套。(2)对象:S3的基本存储单元,主要由数据和元数据组成。6.S3对桶和对象的基本操作包括:Get,Put,List,Delete,Head7.S3的安全措施(1)S3向用户提供包括身份认证和访问控制列表的双重安全机制。(2)身份认证:S3使用基于HMAC-SHA1数字签名方式。HMAC-SHA1基于加密hash函数和共享秘钥的消息认证协议,维护数据的完整性、可靠性、安全性。(3)控制访问列表:是S3提供的可供用户自行定义的访问控制策略列表。访问控制策略(ACP)提供的五种访问权限:ACL不具有继承性。S3三大类型的授权用户:所有者、个人授权用户、组授权用户8.非关系型数据库与传统关系数据库的比较(1)关系型数据库:优点:具有高一致性,在ACID方面很强,移植性很高。缺点:可扩展性方面能力较弱。(2)非关系型数据库:优点:具有很高的可扩展性,很好的并发处理能力。缺点:缺乏数据一致性保证,处理事务性问题能力较弱,难以处理跨表,跨服务器的查询。9.SimpleDB:域、条目、属性、值(1)每个属性大小不能超过1KB(2)存储的数据范围极其有限(3)只保存指向某个文件位置的指针。10.DynamoDB(1)以表为基本单位(2)取消了对表中数据大小的限制(3)允许用户选择弱一致性或强一致性(4)采用固态硬盘,根据用户设定的读/写流量限制预设来确定数据分布的硬盘数量。11.SimpleDB和DynamoDB的比较(1)SimpleDB:限制了每张表的大小,更适合于小规模复杂的工作。自动对所有属性进行索引,提供了更加强大的查询功能。(2)DynamoDB:支持自动将数据和负载分布到多个服务器上,并未限制存储在单个表中数据量的大小,适用于较大规模负载的工作。第四章:微软云计算WindowsAzure1.微软的WindowsAzure属于PaaS模式,一般面向软件开发商。2.当前版本WindowsAzure平台包括四个部分:(1)WindowsAzure(2)SQLAzure(3)WindowsAzureAppFabric(4)WindowsAzureMarketplace3.WindowsAzure是一个服务平台,用户利用该平台,通过互联网访问微软数据中心运行Windows应用程序和存储应用程序数据,这些应用程序可以向用户提供服务。WindowsAzure提供了托管的、可扩展的、按需应用的计算和存储资源,同时还提供了云平台管理和动态分配资源的控制手段。4.WindowsAzure的最新版本包括五个部分:(1)计算服务(2)存储服务(3)Fabric控制器(4)内容分发网络CDN(5)WindowsAzureConnect5.计算服务:为在Azure平台中运行的应用提供支持。三种实例:(1)WebRole(2)WorkerRole(3)VMRole6.存储服务:主要用来存储二进制和结构化的数据。依靠微软数据中心,允许用户在云端存储应用程序数据。应用程序可以存储任何数量的数据,并且可以存储任意长的时间,用户可以在任何时间、任何地方访问自己的数据。四种主要的数据存储结构:(1)Blob(2)Table(3)Queue(4)File7.全局命名空间:分成三部分:账户名、分区名、对象名8.体系架构:WAS产品系统由存储域和位置服务构成。(1)存储域层次结构:文件流、分区层、前端9.双复制引擎:实现数据高可用=(1)域内复制(2)域间复制域内复制专门为硬件失效而设计,在大规模系统内这类失效比较普遍。域间复制提供跨地域冗余来防止地域灾难,这种情况一般不多出现10.文件流层:包括流管理器和区块节点。11.分区层提供:(1)不同存储对象类型的数据模型。(2)不同类型对象处理的逻辑和语义(3)大规模扩展的对象命名空间。(4)跨多个可用分区服务器访问对象的负载平衡。(5)访问对象的事务排序和强一致性。12.分区层主要体系结构模块:(1)分区管理区(2)分区服务器(3)锁服务13.分区管理器可执行三种操作:(1)负载平衡(2)划分(3)合并14.WindowsAzureCon