By 清华大学交叉信息研究院

大数据对于系统架构的需求

  • 显示的需求
    ——海量计算和存储
    ——快速计算
  • 隐式的需求
    ——数据的快速传输
    ——灵活性
    ——低成本

Volume Velocity Variety Value

如何实现这些需求?云计算的核心设计理念

  • 并行化
  • 规模经济
  • 虚拟化(抽象)

大数据系统的软硬件架构

并行化

并行化理念存在于计算机的方方面面
- 并行请求:分配给多个计算机
- 并行线程:分配给多个处理器核心
- 并行指令:同一时刻有多于1条指令
- 并行数据:同一时刻有多于1个数据项
- 硬件描述:同一时刻使用所有门电路

数据中心技术:极端规模的并行化 仓库规模的计算机WSC

  • 主要部件:供电、制冷、建筑、网络、安全 存储、计算
  • 优势:规模经济 提高利用率
  • 挑战:能耗PUE(total energy/cpu energy) 运维

WSC是用网络连接起来的计算和存储设备

WSC的特点

•使用相对同质的硬件和系统软件平台
•共享相同的系统管理
•大多数应用程序、中间件、系统软件都是自主开发,而传统数据中心则由第三方软件主导
•WSC运行相对小数目的超大型程序(或服务)
•通用的资源管理架构增强了部署的灵活性

从WSC到云:多租户

多租户、多应用如何管理?

“计算机科学的所有问题,都可以通过增加一个层次的间接(indirection)来解决,当然除了间接层次过多的问题。”

–DavidWheeler

虚拟化:每个用户逻辑上看到

云计算的定义

云计算Cloud Computing
既指作为服务通过互联网提供的应用程序(SaaS模式),又指提供这些服务的,位于数据中心的硬件和系统软件(公用计算)。
•云:数据中心硬件与软件
•公有云: 用即付即用的模式,开放给大众使用的云
•私有云: 一个企业或组织内部的数据中心
•公用(utility)计算: 给人以无限资源的错觉
–细粒度的记账(比如每小时)

云计算商业模式的三大特点:

  • 按需服务
  • 资源池
  • 可测量的服务(流量、API调用次数等)

云计算发展起来的技术推动

•数据中心技术和WSC
•宽带网络普及化
–数据可以自由进出数据中心
•大规模分布式系统的成熟
–基础设施软件: 例如Google File System
–故障转移, 防火墙…
•虚拟化技术
–X86作为通用的指令集架构, 快速的虚拟化
•开源软件带来的一系列标准化
–标准软件栈, 大部分开源(LAMP)

云计算发展的市场条件

•大规模互联网应用(社交网络、多媒体)
–规模经济
–需求增长促进数据中心建设增长
–无法预测的应用增长速度Zynga,Netflix
•大数据应用
–日志分析
–机器学习应用

云计算的分类

•指令集虚拟机(Amazon EC2, 3Tera)

•运行时系统虚拟机(Microsoft Azure)

•框架型虚拟机(Google AppEngine, Force.com)

•折衷: 灵活性/可移植性vs. “内置”功能


另一种(更普遍的)分类方法

•软件即服务(SaaS): 消费者使用提供商运行在云设施上的应用程序,基本无法控制程序或基础架构。

•平台即服务(PaaS): 消费者将自己编写的程序,或者利用提供商的库、服务、工具编写的程序部署在云基础设施上。消费者可以控制应用程序,但不能控制基础设施。

•基础设施即服务(IaaS): 提供处理、存储、网络和其他基础计算资源,消费者可以利用这些资源部署运行任意程序,包括操作系统或者应用程序。

虚拟化

为什么要虚拟化? Partitioning + Abstraction
•分区Partitioning
–分享: 打破一个大资源
–服务器
•抽象Abstraction
–用一个指令集仿真另一个指令集
为什么要虚拟化?Pooling,Security,Management
•资源池
–聚合: 将多个资源结合起来
–合一:例如存储
–动态: 快速分配
•虚拟机
•隔离: 保护消费者隔离其他租客
–例如虚拟专用网(VPN)
•便于管理
–测试
–机动性
虚拟化的概念是广泛的
用户虚拟化
应用程序虚拟化
桌面
服务虚拟化
操作系统虚拟化
服务器虚拟化
存储虚拟化
网络虚拟化
数据中心虚拟化的三个重要内容
•计算虚拟化
•存储虚拟化
•网络虚拟化

计算虚拟化


• 主操作系统:运行在真实机器之上

• 客户操作系统:运行在主操作系统之上

– 例如,Windows XP可以运行在Win 7上

• Hypervisor:支持运行在多个虚拟机上上的软件

– 类型1:运行在真实机器之上,例如,Xen、VMWARE、ESXi

– 类型2:运行在主操作系统之上,例如,MS Virtual PC

– 类型0:1和2兼有,例如,Linux KVM服务器虚拟化考虑的三个问题

•指令集的翻译二进制翻译

–如何快速执行

–如何执行需要更高权限的指令

•I/O设备的仿真

–如何让虚拟机操作系统访问不支持的硬件

–如何保护I/O性能

•保护处理器的数据结构影子处理器


当前解决方式

•半虚拟化Para-virtualization

–修改虚拟机操作系统,不能做的操作就不要做

•影子页表

–拒绝客户操作系统对实际页表条目的任何访问

–捕获访问请求,在软件中仿真

•硬件支持的虚拟化

–二级地址转换表(SLAT)

•AMDAMD-VRVI(RapidVirtualizationIndexing)

•IntelVT-xEPT (Extended Page Table)

网络虚拟化:基础


网络虚拟化举例:VLAN

•最简单目标:提供单一的二层网络

–限制广播域

•VLAN

–端口分属不同VLAN

–多个VLAN共享一个端口

•Trunk模式

•VLAN标签(12bits)

•最多支持4096VLAN

网络虚拟化:软件定义网络

支持网络虚拟化的新技术:软件定义网络

•传统网络

–控制面与数据面集成在同一个设备中

–不同网络设备之间通过协议决定如何转发


笔记:发送包到DST,如果交换机不清楚下一步发送方向,询问controller,controller会告知下一步的传送方向。每一步都需要缓存,以便于减轻controller的压力。

存储虚拟化:用户接口

存储虚拟化的意义
•独立于数据位置
–扩展性强,容量大
–易于管理(磁盘可集中存储)
–提升磁盘使用率
•独立于物理存储技术
–易于升级
–可用性的优化(多路径访问、冗余)
–易于维护(在线的后台备份、恢复)
存储虚拟化的三类接口
•块接口
–本地块存储
•本地磁盘(SATA,SAS)
•本地磁盘阵列(RAID)
–远程块存储接口
•光纤通道
•iSCSI
•文件接口
–文件系统
–网络文件系统(NFS,CIFS,HDFS)
–VFS
•对象存储接口
–亚马逊S3
–OpenStackSwift


存储区域网络SAN vs网络附接存储NAS

•存储区域网络

–StorageAreaNetwork(SAN)

–存储服务器通过专用存储网络连接,例如光纤通道(FC)

•网络附接存储

–Network attached storage (NAS)

–存储服务器通过通用的网络来访问,例如以太网


虚拟化总结

•优势

–统一、抽象的接口隐藏了复杂的物理硬件

–灵活,可以软件定义

–易于管理,更容易保证安全

•问题

–虚拟化有一定的资源开销

–通常没有实现性能的隔离

–过多层的抽象:如何调试?

发展趋势:软件定义数据中心?

•网络功能虚拟化

–防火墙、入侵检测系统虚拟化

•资源的管理和调度

–本课程后边会详细介绍

•还有什么可以虚拟化/软件定义的?

–空调?供电?建筑?

•目标:性能+灵活性+管理

Openstack的目标和基本组件

OpenStack的目标

•一个云操作系统,能把数据中心变为资源池

•提供一个管理层,便于高效地控制、自动化、分配资源

•通过自助服务式的门户来方便操作员、系统管理员以及终端用户(“I want AWS-type service!”)

•能让开发者通过标准API来搭建云上可用的应用程序


其它组件

•鉴权服务(Keystone)

•用户界面(Horizon)和命令行工具(CLI)

•对象存储(Swift)

•虚拟机镜像存储(Glance)

•消息队列

•API

一个虚拟机的生命周期


云计算的核心思想

•性能:并行化

•经济性:规模化、公有云

•可管理:虚拟化

从云计算到大数据

•虚拟化提供了硬件资源的抽象

•用户看到的接口

–(虚拟)计算节点

–(虚拟)网络

–(虚拟)存储

•仍然是许多独立的设备:需要分布式系统编程

•如何提供一个易于编程的“单一系统”感觉?

–分布式存储、计算框架、任务调度

什么是一个好的云计算系统?

•让用户彻底忘记底层的硬件

什么是一个好的大数据系统?

•让用户彻底忘记今天讲的内容