论文部分内容阅读
如果你有一个大型分布式处理问题需要解决,同时又预算吃紧,就很有必要了解一下Hadoop,然后考虑Amazon的Elastic MapReduce来解决问题。Amazon Web Services(AWS)日前发布了Amazon Elastic MapReduce的公共测试版,这是一项可以让商务人士、研究学者、数据分析员和开发者处理数据的网络服务。
它采用了托管的Hadoop框架,运行在AmazonEC2和AmazonS3的网络架构下。Amazon Elastic MapReduce大幅缩短了时间、降低了复杂度以及执行数据密集型任务所需的成本。同其他AWS提供的服务一样,Amazon Elastic MapReduce的用户只需为他们使用的部分付费。
Hadoop一览
Hadoop是一个开源的分布式计算平台,它主要由MapReduce的算法执行(即map/reduce函数)和一个分布式的文件系统(即S3)等两部分组成。去年起Hadoop就已经可以在Amazon EC2上运行了。这将使开发者可以快速搭建起他们自己的服务器集群。
Hadoop框架中最核心的设计是MapReduce和HDFS。简单用一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统的缩写,为分布式计算存储提供了底层支持。Hadoop的内部架构基于MapReduce框架。MapReduce的运行机制在J.Dean和S.Ghemawat合著的文档中有着很清晰的描述,正因如此,本文换了一个角度,将重点放在实例的说明上。
Amazon Elastic MapReduce自动地在Amazon EC2实例上驱动一个MapReduce框架的Hadoop实现。它会按照客户的需求自动启动并配置一定数量的AmazonEC2实例,然后产生一个根据MapReduce编程模型的Hadoop任务,通过它从AmazonS3中读取大量的用户输入数据,将任务流中的数据分解为更小的块分摊给生成的AmazonEC2实例去进行并行处理,并最终将处理后的数据重新组合在一起成为最后结果。数据处理完成后,它会将数据重新组合并简化为一个最终结果,并将该结果返回给AmazonS3。Amazon S3作为被分析的数据源,也作为最终结果输出的目的地。
云中的MapReduce
用户访问Amazon Elastic MapReduce 的第一站是AWS的登录页,用户必须在该页面注册Elastic MapReduce服务,然后进入AWS管理控制台并且登录。AWS控制台是一个专门为Amazon EC2提供的控制面板,显示新增的Amazon Elastic MapReduce选项卡。单击该选项卡后,用户将进入工作流页面,在这里就可以监控当前工作流的实时状况了,同时也可以检查之前的工作流细节。
如果用户想要定义一个新的工作流,系统会提示用户在文本框中确定输入数据的路径、输出数据的路径以及map和reduce函数的路径。
Amazon Elastic MapReduce接受两种类型的工作流:“自定义jar”以及“流(streaming)”。”自定义jar”类型的工作流需要map和reduce函数位于编译过的Java类中,并且以Java Jar形式储存。Hadoop框架是基于Java的,因此一个自定义工作流会提供更好的性能。与之相對,“流”类型的工作流可以让用户通过非Java语言方式自行编写map和reduce函数。“流”类型的工作流函数从标准输入流中读取输入数据,并将输出发送到标准输入流。因此,数据流以字符串方式输入或输出。
一旦用户指定工作流组成部分的路径,也就确定了执行作业的EC2实例的个数及处理能力,用户可以选择多达20个EC2实例,如果超出20个,则必须填写一份特定的申请表格。用户对计算实例的选择范围可以从小型到大型高速CPU,并可以通过查看Amazon文档获得完整CPU实例的功能描述。接下来的步骤就是处理了。一旦确定了所做的配置,任务就启动了,之后将返回到工作流页面,在该页面中监控任务进程。当工作完成后,用户的输出数据就被储存到指定的S3桶中了。
它采用了托管的Hadoop框架,运行在AmazonEC2和AmazonS3的网络架构下。Amazon Elastic MapReduce大幅缩短了时间、降低了复杂度以及执行数据密集型任务所需的成本。同其他AWS提供的服务一样,Amazon Elastic MapReduce的用户只需为他们使用的部分付费。
Hadoop一览
Hadoop是一个开源的分布式计算平台,它主要由MapReduce的算法执行(即map/reduce函数)和一个分布式的文件系统(即S3)等两部分组成。去年起Hadoop就已经可以在Amazon EC2上运行了。这将使开发者可以快速搭建起他们自己的服务器集群。
Hadoop框架中最核心的设计是MapReduce和HDFS。简单用一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统的缩写,为分布式计算存储提供了底层支持。Hadoop的内部架构基于MapReduce框架。MapReduce的运行机制在J.Dean和S.Ghemawat合著的文档中有着很清晰的描述,正因如此,本文换了一个角度,将重点放在实例的说明上。
Amazon Elastic MapReduce自动地在Amazon EC2实例上驱动一个MapReduce框架的Hadoop实现。它会按照客户的需求自动启动并配置一定数量的AmazonEC2实例,然后产生一个根据MapReduce编程模型的Hadoop任务,通过它从AmazonS3中读取大量的用户输入数据,将任务流中的数据分解为更小的块分摊给生成的AmazonEC2实例去进行并行处理,并最终将处理后的数据重新组合在一起成为最后结果。数据处理完成后,它会将数据重新组合并简化为一个最终结果,并将该结果返回给AmazonS3。Amazon S3作为被分析的数据源,也作为最终结果输出的目的地。
云中的MapReduce
用户访问Amazon Elastic MapReduce 的第一站是AWS的登录页,用户必须在该页面注册Elastic MapReduce服务,然后进入AWS管理控制台并且登录。AWS控制台是一个专门为Amazon EC2提供的控制面板,显示新增的Amazon Elastic MapReduce选项卡。单击该选项卡后,用户将进入工作流页面,在这里就可以监控当前工作流的实时状况了,同时也可以检查之前的工作流细节。
如果用户想要定义一个新的工作流,系统会提示用户在文本框中确定输入数据的路径、输出数据的路径以及map和reduce函数的路径。
Amazon Elastic MapReduce接受两种类型的工作流:“自定义jar”以及“流(streaming)”。”自定义jar”类型的工作流需要map和reduce函数位于编译过的Java类中,并且以Java Jar形式储存。Hadoop框架是基于Java的,因此一个自定义工作流会提供更好的性能。与之相對,“流”类型的工作流可以让用户通过非Java语言方式自行编写map和reduce函数。“流”类型的工作流函数从标准输入流中读取输入数据,并将输出发送到标准输入流。因此,数据流以字符串方式输入或输出。
一旦用户指定工作流组成部分的路径,也就确定了执行作业的EC2实例的个数及处理能力,用户可以选择多达20个EC2实例,如果超出20个,则必须填写一份特定的申请表格。用户对计算实例的选择范围可以从小型到大型高速CPU,并可以通过查看Amazon文档获得完整CPU实例的功能描述。接下来的步骤就是处理了。一旦确定了所做的配置,任务就启动了,之后将返回到工作流页面,在该页面中监控任务进程。当工作完成后,用户的输出数据就被储存到指定的S3桶中了。