Learning Traces...

--Great Love involves great effort
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

云计算、Amazon EC2、Hadoop简介

Posted on 2010-01-25 00:30  suyang  阅读(5132)  评论(0编辑  收藏  举报

云计算

  近来云计算越来越热门了,云计算已经被看作 IT 业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以通过 Internet 访问 “云” 中的任何资源,而不需要担心计算能力、带宽、存储、安全性和可靠性等问题。

  先要介绍一下云计算系统的结构。图 1 显示云计算的各个层以及现有的一些服务。

 

 

云计算的各个层
 

 

  基础设施即服务(Infrastructure-as-a-service, IaaS)是指以服务的形式租借基础设施(计算资源和存储)。IaaS让用户可以租借计算机(即虚拟机)和数据中心,可以指定特定的服务质量约束,比如可以运行某些操作系统和软件。Amazon EC2在这层中作为IaaS,向用户提供虚拟主机。

  平台即服务(Platform-as-a-Service, PaaS)主要关注软件架构或服务,提供在基础设施中进行“云”计算所用的API。Apache Hadoop 作为PaaS,它构建在虚拟主机上,提供云计算平台。



 

Amazon EC2

  Amazon EC2 是一个Web服务,它允许用户请求具有各种资源(CPU,磁盘,内存等)的虚拟主机。用户只需按使用的计算时间付费,其它事情全部交给Amazon处理。

  这些实例(Amazon Machine Image, AMI)基于Linux,可以运行您所需要的任何应用程序和软件。在从Amazon租借主机之后,可以像对待物理主机一样使用一般的SSH工具设置连接和维护主机。

  部署Hadoop云计算框架的最好方法是把它全部部署在AMI上,这样可以利用云资源,不需要考虑计算能力,带宽,存储等问题。

  对EC2的详细内容可以参考如下链接:http://www.ibm.com/developerworks/cn/web/ar-cloudaws3/

 

 

Apache Hadoop

MapReduce

  Apache Hadoop 是一个软件框架(平台),它可以分布式的操纵大量数据。它出现于2006年,由Google、Yahoo、IBM等公司支持。可以认为它是一种PaaS模型。

  它的设计核心是MapReduce实现和HDFS(Hadoop Distributed File System),它们源自MapReduce(由一份Google文件引入)和Google File System。

  MapRedue是Google引入的一个软件框架,它支持在计算机(即节点)集群上对大型数据集进行分布式计算。它由两个部分组成:映射(Map)和缩减(Reduce)。

  在映射过程中,主节点接收输入,把输入分割成更小的子任务,然后把这些子任务分配到工作节点上。

  工作节点处理这些小任务,把结果返回给主节点。

  然后在缩减过程中,主节点把所有子任务的结果组合成输出,这就是原任务的结果。图2 说明了MapReduce流程的概念。

  MapReduce 的优点是它允许对映射和缩减操作进行分布式处理。因为每个映射操作都是独立的,所有映射都可并行执行,这会减少总的计算时间。

 

集群的概念视图

HDFS

  从最终用户的角度看,HDFS就像是传统的文件系统一样。可以使用目录路径对文件进行CRUD操作。但是,由于分布式存储的性质,有“NameNode”和“DataNode”的概念,它们承担各自的责任。

  NameNode 是 DataNode 的主节点。它在HDFS中提供元数据服务。元数据说明DataNode的文件映射。它还接收操作命令并决定哪些DataNode应该执行操作和复制。

  DataNode 作为HDFS的存储块。还响应从NameNode接收的块创建、删除、复制等命令。

  对HDFS的完整介绍可以参考官方网站。

 

JobTracker 和 TaskTracker

  在提交应用程序时,应该提供包含在HDFS中的输入目录和输入目录。JobTracker作为启动MapReduce应用程序的单一控制点,它决定应该创建多少个TaskTracker和子任务,然后把每个子任务分配给TaskTracker。每个TaskTracker向JobTracker报告状态和完成后的任务。