云计算及应用课程知识整理
一、云计算
云计算概念
什么是云
云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取算力、储存空间和信息服务。
云的特点
- 超大规模
- 虚拟化
- 高可靠性
- 通用性
- 高可伸缩性
- 按需服务
- 极其廉价
云计算的服务类型
- IaaS / Infrastructure as a Service:将应用设备等基础资源封装成服务供用户使用(如EC2/S3)
- PaaS / Platform as a Service:对资源的抽象层次更进一步,提供用户应用程序运行环境。(如谷歌AppEngine、微软WindowsAzure)
- SaaS / Software as a Service:针对性更强,将某些特定应用软件功能封装成服务。(如CRM))
云计算技术体系结构的层次及其功能
- 物理资源层
计算机、存储器、网络设备、数据库和软件等。 - 资源池层
将大量相同类型的资源构成同构或接近同构的资源池。 - 管理中间件
云计算的资源管理,并对众多应用任务进行调度,使资源能够高效、安全地位应用提供服务。 - SOA构件层
运转云计算能力成标准Web Services服务,并纳入到SOA体系。
为什么云计算成本低?
- 规模大,降低单位费率
- 机房处于电力成本较低的地区
- 提供弹性服务,能提高资源利用率
- 集中管理费用较低
- 硬件成本低
二、GFS
分布式的文件系统设计需要考虑哪些问题?
- 系统架构如何设计?
- 文件如何拆分?
- 元数据如何管理?
- 如何容错?
- 故障自动检测
- 节点动态管理
GFS架构
控制流和数据流分离,数据流只在client和chunk Server(数据块服务器)之间流动,Client和master(主服务器)之间只有控制流,没有数据流。;
命名空间和chunk上的实际目录存在映射关系。
GFS容错机制
Master容错:当master发生故障时,命名空间和映射表通过日志可以迅速恢复。
Chunk Server容错 :采用副本的方式实现容错,每个Chunk默认有三个副本。对于每个Chunk,必须将所有副本全部写入成功,才视为成功写入。
三、分布式数据处理MapReduce
mapReduce概念
功能
把对数据集的大规模操作,分给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。
- Map操作:对一部分原始数据进行指定的操作。Map与Map之间都是独立的,因此可以并行。
- Reduce操作:对每个Map产生的中间结果进行合并操作。
实现机制
图中:
- MapReduce函数首先把输入文件分成M块
- 分派的执行程序中有一个Master
- 被分配了Map任务的Worker读取并处理相关输入块
- Map处理后的中间结果被写入到本地磁盘,这些数据通过分区函数分成R个区
- Master通知执行Reduce的Worker关于中间结果的位置,worker通过远程调用(RPC),从本地磁盘读取缓冲的中间数据
- Reduce Worker根据每一个key来遍历所有排序后的中间结果,并把key相同的相关结果传递给用户定义的Reduce函数
- 当所有Map任务和Reduce任务结束后,Master激活用户程序
MapReduce适合什么类型数据?
适合批处理数据,不适合实时数据。
四、分布式锁服务Chubby
Chubby是谷歌设计的提供粗粒度锁服务的一个文件系统,基于松耦合分布式系统,解决了分布的一致性问题。
chubby功能
- 通过使用Chubby 的锁服务,用户可以确保数据操作过程中的一致性
两阶段决议
- 准备阶段
- 批准阶段
chubby基本架构
- 客户端:每个客户端应用程序都有一个Chubby程序库,客户端的所有应用都是通过调用这个库中的相关函数来完成的。
- 服务器端:称为Chubby单元,一般是由5个称为副本的服务器组成,在配置上完全一致,且在系统开始时处于对等状态。
五、分布式结构化数据表BigTable
Bigtable分布式数据存储系统是Google为其内部海量的结构化数据开发的云存储技术。
架构
BigTable中chubby的用途
- 选取并保证同一时间类只有一个主服务器
- 获取子表的位置信息
- 保存BigTable的模式信息及访问控制信息
六、分布式存储系统Megastore
实现机制
融合SQL和noSQL
局部索引和全局索引
局部索引:定义在单个实体组中,作用域仅限于单个实体组。(如PhotosByTime)
全局索引:横跨多个实体组集进行数据读取操作(如PhotoByTag)
三种读
- current:等所有备份都达一致状态后再读最新的数据。
- snapshot:根据日志,读一致的最后一个完整提交成功的数据。如,当当前数据未在所有的备份中同步时,读当前数据写入之前的数据。
- inconsistent:不考虑日志状态,不在乎数据是否一致。
三种副本
- 完整副本:可读写可的副本
- 见证者副本:只有日志而无数据,用于Paxos投票。
- 只读副本
七、大规模分布式系统监控架构Dapper
监控系统的设计有那些基本要求
- 广泛可部署性
- 不间断的监控
三个设计目标
- 低开销
- 对应用层透明
- 可扩展性
监控树
一个同特定事件相关的所有消息
区间
实际上就是一条记录
注释
辅助推断区间,也可以包含一些自定义内容。
解决低开销、广泛可部署的手段——二次抽样技术
八、谷歌应用引擎appEngine
Google App Engine是一个由Python应用服务器群、Bigtable数据库及GFS数据存储服务组成的平台,它能为开发者提供一体化的可自动升级的在线应用服务。
九、亚马逊基础储存架构Dynamo
一致性hash算法
在hash换上,增加、删除节点数据会如何变化。
十、弹性计算云EC2
Amazon机器映像(AMI)
是包含了操作系统、服务器程序、应用程序等软件配置的模板。
当用户使用EC2服务区创建自己的应用程序时,首先要构建或获取相应的AMI。
实例(Instance)
EC2中实例由AMI启动,可以像传统的主机一样提供服务。同一个AMI可以用于创建具有不同计算和储存能力的实例。
弹性块存储(EBS)
与物理硬盘类似,大小由用户设定。适用于数据需要细粒度地频繁访问并持久保存的情况,适合作为文件系统或数据库的主存储。
区域
地理区域
按照实际的地理位置划分。
可用区域
是否由独立的供电系统和冷却系统等,通常将每一个数据中心看做一个可用区域。每个地理区域包含多个可用区域。
三种IP地址
- 公共IP地址
- 私有IP地址
- 弹性IP地址
和用户账号绑定而不是和某个特定的实例绑定,通过弹性IP地址改变映射关系保证总有实例可用。
桶和对象
S3储存系统的基本结构。
桶:用于存储对象的容器,不可被嵌套。
对象:存储数据(任意类型)和元数据(数据内容的附加描述信息,如时间、长度)。
十一、亚马逊关系型数据库RDS
RDS如何提供服务
1.RDS将MySQL数据库移植到集群中,在一定范围内解决了关系数据库的可拓展性
2.Mysql集群方式采用了Share-Nothing架构:
(1)每台数据库服务器是完全独立的计算机系统,通过网络相连,不共享任何资源
(2)这是个具有可扩展架构,当数据库处理能力不时,可以增加服务器数来提高处理力,同时多个服务器也增加了数据库并发能力
简单队列服务SQS
是亚马逊是解决云计算平台之间不同组件的通信专门开发的消息队列服务。
- 系统组件: 服务对象(消息接受或发送者)
- 队列: 存放消息的队列
- 消息:是发送者创建的具有一定格式的文本数据,接受对象可以是一个或多个组件。——消息ID、接收句柄、消息体、消息体MD5摘要
十二、亚马逊内容推送服务CloudFront
内容推送服务CDN
原本问题:
世界各地的访问者都必须直接和网站服务器连接才可以访问相关内容,存在明显的缺陷。
解决:
CDN技术通过将网站内容发布到靠近用户的边缘节点,使不同地域的用户在访问相同网页时可以就近获取。
DNS在对域名进行解析时,不再对用户返回网站服务器的IP,而是返回了由智能CDN负载均衡系统选定的某个边缘节点的IP。
十三、Hadoop
hdfs相关命令
文件上传
1 |
|
列出目录和文件
1 |
|
下载文件或目录到本地
1 |
|
删除文件或目录
1 |
|
1 |
|
创建目录
1 |
|
创建文件
1 |
|
拷贝文件
1 |
|
移动文件
1 |
|
加载文件
1 |
|
格式化namenode
1 |
|
启动hadoop集群
1 |
|
查看状态
1 |
|
查看文件大小
1 |
|
hadoop架构
十四、yarn
两大功能
资源管理
通过ResourceManager实现
任务调度
通过ApplicationMaster实现
application master和application manager的区别
- ApplicaionManager: 选定,启动和监管ApplicationMaster
- ApplicaionMaster: 任务执行和监管中心,在某个任务进程中,协调位于实体机器上的各个Container
十五、spark
spark相对于mapreduce 的优势
Hadoop/MapReduce缺点(ppt重点提到缺点,但优点没单页列出,可补充)
(1) MR算法少,不适合描述复杂的数据处理过程(不适合Group By、 Join等操作)
(2) 每次Reduce都需要磁盘读写,速度慢;Spark只需要一次磁盘读写,大部分处理在内存中进行
(3) MR需要成对出现
(4) Master节点调度慢
(5) 单节点
四大组件及其功能
- SparkStreaming,针对实时数据进行流式计算的组件;
- SparkSQL,用来操作结构化数据的组件;
- GraphX,Spark面向图计算提供的框架与算法库;
- MLlib,一个机器学习算法库。