技术分享 使用Linux和ApacheHadoop实现云计算
本节和大家学习一下如何使用Linux和ApacheHadoop进行云计算,主要介绍一下什么是云计算,以及云计算的层和现有的服务,相信通过本节的介绍大家对Hadoop云计算有一定的认识。
用Linux和ApacheHadoop进行云计算
IBM?、Google、VMWare和Amazon等公司已经开始提供云计算产品和战略。本文讲解如何使用ApacheHadoop构建一个MapReduce框架以建立Hadoop集群,以及如何创建在Hadoop上运行的示例MapReduce应用程序。还将讨论如何在云上设置耗费时间/磁盘的任务。
云计算简介
近来云计算越来越热门了,云计算已经被看作IT业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以通过Internet访问“云”中的任何资源,而不需要担心计算能力、带宽、存储、安全性和可靠性等问题。
本文简要介绍AmazonEC2这样的云计算平台,可以租借这种平台上的虚拟Linux?服务器;然后介绍开放源码MapReduce框架ApacheHadoop,这个框架将构建在虚拟Linux服务器中以建立云计算框架。但是,Hadoop不仅可以部署在任何厂商提供的VM上,还可以部署在物理机器上的一般LinuxOS中。
在讨论ApacheHadoop之前,我们先简要介绍一下云计算系统的结构。图1显示云计算的各个层以及现有的一些服务。关于云计算的各个层的详细信息,请参见参考资料。
基础设施即服务(Infrastructure-as-a-Service,IaaS)是指以服务的形式租借基础设施(计算资源和存储)。IaaS让用户可以租借计算机(即虚拟主机)或数据中心,可以指定特定的服务质量约束,比如能够运行某些操作系统和软件。AmazonEC2在这些层中作为IaaS,向用户提供虚拟的主机。平台即服务(Platform-as-a-Service,PaaS)主要关注软件框架或服务,提供在基础设施中进行“云”计算所用的API。ApacheHadoop作为PaaS,它构建在虚拟主机上,作为云计算平台。
云计算的层和现有服务
AmazonEC2
AmazonEC2是一个Web服务,它允许用户请求具有各种资源(CPU、磁盘、内存等)的虚拟机器。用户只需按使用的计算时间付费,其他事情全交给Amazon处理。
这些实例(AmazonMachineImage,AMI)基于Linux,可以运行您需要的任何应用程序或软件。在从Amazon租借服务器之后,可以像对待物理服务器一样使用一般的SSH工具设置连接和维护服务器。
对EC2的详细介绍超出了本文的范围。更多信息请参见参考资料。
部署Hadoop云计算框架的最好方法是把它部署在AMI上,这样可以利用云资源,不需要考虑计算能力、带宽、存储等问题。但是,在本文的下一部分中,我们将在本地的Linux服务器VMWare映像中构建Hadoop,因为Hadoop不仅适用于云解决方案。在此之前,我们先介绍一下ApacheHadoop。
ApacheHadoop
ApacheHadoop是一个软件框架(平台),它可以分布式地操纵大量数据。它于2006年出现,由Google、Yahoo!和IBM等公司支持。可以认为它是一种PaaS模型。
它的设计核心是MapReduce实现和HDFS(HadoopDistributedFileSystem),它们源自MapReduce(由一份Google文件引入)和GoogleFileSystem。
MapReduce
MapReduce是Google引入的一个软件框架,它支持在计算机(即节点)集群上对大型数据集进行分布式计算。它由两个过程组成,映射(Map)和缩减(Reduce)。
在映射过程中,主节点接收输入,把输入分割为更小的子任务,然后把这些子任务分布到工作者节点。
工作者节点处理这些小任务,把结果返回给主节点。
然后,在缩减过程中,主节点把所有子任务的结果组合成输出,这就是原任务的结果。
MapReduce流程
MapReduce的优点是它允许对映射和缩减操作进行分布式处理。因为每个映射操作都是独立的,所有映射都可以并行执行,这会减少总计算时间。
HDFS
对HDFS及其使用方法的完整介绍超出了本文的范围。更多信息请参见参考资料。
从最终用户的角度来看,HDFS就像传统的文件系统一样。可以使用目录路径对文件执行CRUD操作。但是,由于分布式存储的性质,有“NameNode”和“DataNode”的概念,它们承担各自的责任。
NameNode是DataNode的主节点。它在HDFS中提供元数据服务。元数据说明DataNode的文件映射。它还接收操作命令并决定哪些DataNode应该执行操作和复制。
DataNode作为HDFS的存储块。它们还响应从NameNode接收的块创建、删除和复制命令。