UIUC《云计算概论》课程学习笔记(一) —— 绪论

UIUC《云计算概论》课程学习笔记(一) —— 绪论

前言

这系列笔记是记录Coursera上伊利诺伊大学厄巴纳香槟分校 Prof. Indranil Gupta 所开设课程“Cloud Computing Concepts”课程内容的。该课程主要涉及的是“云”本身的框架,并不涉及到基于云计算的应用编写,如果需要学习应用编写,可以查看UIUC推出的云计算专项课程。由于水平有限,文中难免会有不准确的地方,在此诚挚欢迎大家指出,共同交流完善。

 

一、“云”相关介绍(Introduction to Clouds)

1.为什么需要云(Why Clouds)

云计算的概念近年来大火了一把,其原因有很多。

首先,这或多或少是因为炒作(The Hype!):

  • Gartner在2009宣称,云计算相关业务的收入将会迅速增长,在2013年达到$150 billion,在2015年占据IT费用的19%。
  • IDC在2009年宣称,IT云服务的开销在五年后将会变为三倍,达到$42 billion。
  • Forrester在2010年宣称,云计算将会从2010年的$40.7 billion达到2020年的$241 billion。
  • 许多公司甚至政府部门都在使用云计算: fedbizopps.gov

其次,有大量的公司可以提供云服务:

  • AWS: Amazon Web Services
    – EC2:弹性计算云
    – S3:简单存储服务
    – EBS:弹性锁定存储
  • Microsoft Azure
  • Google Compute Engine
  • Rightscale, Salesforce, Emc, Gigaspaces, 10gen, Datastax, Oracle, VMWare, Yahoo, Cloudera
  • 还有很多其他的

此外,云有两种类型:

  • 可以是公有云或者是私有云
  • 私有云只对公司员工开放
  • 公有云对所有付费用户提供服务
    – Amazon S3(Simple Storage Service):存储任意数据集,按/GB,Month付费
    – Amazon EC2(Elastic Compute Cloud):上传并运行任意系统镜像,按CPU时间计费
    – Google App Engine/Compute Engine: 通过它们的APP引擎框架进行开发,按照规定格式上传数据并运行。

对用户而言,节约了时间和金钱:

2.什么是云(What is a cloud)

如果你问不同领域的人,什么是云,你可能会得到完全不同的回答:

  • 云是一个集群
  • 云是一个超级计算机
  • 云是一个数据存储器
  • 云是一个超人
  • 以上都不是
  • 以上都是
  • 在这里,课程中给出的定义是 云=大量的存储资源+周围部署了计算周期

更进一步,云有两种结构:

  • 单节点云
    – 计算节点(按照机架分组)
    – 分支,连接不同的机架
    – 网络拓扑,例如分级网络
    – 连接网络的存储节点
    – 前、后端节点用来提交任务和接收客户端请求
    – 软件服务
  • 地理分布云
    – 多个站点
    – 每个站点都有不同的结构和服务

 

3.云的历史(Clouds:History)

技术趋势

  • 翻倍周期
    – 存储资源:每12个月
    – 带宽: 每九个月
    – CPU计算能力: 每18个月
  • 过去和现在
    – 带宽
    1985年理论上56Kbps
    2012年广泛使用Tbps
    – 存储能力
    今天的PC能存储TB数量级,远比1990年代的超级计算机要厉害

 

用户趋势

  • 就生物学来看
    – 1990年:只能进行单个小分子模拟
    – 2012年: 每年PB数量级的基因测序

预言

  • 1965年,MIT的Fernando Corbato和其他参与了Multics操作系统的设计者预期,一个计算机设施会像一个电力公司或者水力公司一样运作。
  • 将你的小型客户端插入计算单元,然后运行你最喜欢的计算&交流应用
    – 今天的云让我们离此更近了吗?想一想。

4.当今的云有什么新特点(Four Features New In Today’s Clouds)

  1. 大规模
  2. 按需访问:按照你运行的时间付费,没有前期费用

    HaaS:Hardware as a Service,
    IaaS:Infrastructure as a Service,
    Paas Platform as a Service,
    SaaS:Software as a Service
  3. 数据密集型的性质:曾经的MBs现在变成了TBs PBs和XBs
    – 日常日志,取证,网页数据等
    – 人类对数据麻木:维基百科压缩后只有10GB

    使用相邻接点提供计算服务,在数据密集型任务中,CPU能力不再是最主要的瓶颈,IO成为了最重要的瓶颈(磁盘、网络IO)
  4. 新的云程序范式:MapReduce/Hadoop, NoSQL/Cassandra/MongoDB等。
    – 可读性高,易于编写

    Google:MapReduce和Sawzall
    Amazon:Elastic MapReduce service
    Google(MapReduce)
    Yahoo!(Hadoop+Pig)
    Facebook(Hadoop+Hive)
    NoSQL:MySQL是业界标准,但是Cassandra快2400倍。

    – 很多开源项目

二、云是一个分布式系统(A Cloud IS A Distributed System)

  • 云由
    – 一个数据中心里成百上千个机器组成(服务端)
    – 数千至百万的用户组成(客户端)
  • 服务器之间彼此进行通信 -> 分布式系统 -> 本质上是一个集群
  • 客户端与服务器进行通信 -> 也是一个分布式系统
  • 客户端也可以彼此进行通信
    – 在BitTorrent这样的P2P系统里
    – 也是一个分布式系统

云的四个特征=所有分布式系统的特征

  1. 大规模:很多服务器
  2. 按需访问
    – 随处可以访问服务端
  3. 数据密集型
    – 很多数据 => 需要集群来存储
  4. 新的云编程范式
    – Hadoop/MapReduce, NoSQL都需要集群
  • “云”是分布式系统的最新昵称
  • 分布式系统之前的昵称包括:
    – P2P系统
    – Grids
    – 集群
    – 分时计算机
  • 分布式系统的昵称换了又换,但是其核心概念是一样的
  • 若干年之后,可能又有一个新的昵称

三、MapReduce

1.Map

  • 处理独立记录,生成中间结果KV对
  • 并行地处理这些独立记录,生成中间结果KV对
  • 并行地处理大量独立记录,生成中间结果KV对

2.Reduce

  • Reduce工作,依据中间结果所关联的key来存储它们
  • 每一个Key对应一个Reduce
  • 依据节点key,并行地处理并存储所有中间结果

3.容错机制(Fault Tolerance)

  • 服务端错误
    – NM发送心跳给RM
    — 如果服务器出错,RM让所有相关的AM知道,然后AM采取行动
    – NM持续追踪服务器上运行的每个任务
    — 如果任务在执行过程中失败,那么标记该任务并且重启它
    – AM发送心跳给RM
    — 出错的时候,RM重启AM,然后同步它运行的任务
  • RM错误
    – 使用旧的检查点并且带来第二RM
  • 心跳也会被用来捎带容器请求
    – 避免额外信息

 

4.当出现慢速服务(节点)的时候

  • 最慢的机器会拖累整个任务的速度
  • 由于较差的存储,网络带宽,CPU或者内容导致
  • 保持追踪每个任务的进程
  • 使用备份(拷贝)操作来处理落后任务:当第一个副本完成的时候,认为任务完成。这被称作投机执行

5.局部性

  • 因为云有分级拓扑结构(例如机架)
  • GFS、HDFS存储了每个块的三个副本(例如,64MB)
    -可能在不同的机架,例如,2在一个机架,1在另一个机架
  • MapReduce尝试按如下方式规划一个任务
    – 一个机器包括很多相关输入数据,或者错误
    – 在同一个机架上的机器包含了输入或者是错误
    – 每个地方

6.总结

  • MapReduce使用并行+聚合来规划集群任务
  • 需要处理错误
  • 有很多MapReduce和Hadoop上的任务规划容错机制研究
Tags:


Leave a Reply

Your email address will not be published.

*
*
*

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert