我正在与亚马逊的MapReduce网络服务的一个大学项目。为了将数据用于MapReduce,我需要将它们从关系数据库(AWS RDS)转储到S3中。在MapReduce完成后,我需要拆分输出文件并将其中的一大块加载到它们自己的S3存储桶中。
在Amazon Web服务环境中执行此操作的好方法是什么?
最好的情况:除了用于RDS和MapReduce的实例之外,是否可以在不使用额外的EC2实例的情况下实现这一点?
我将python用于映射器和reducer函数,并将json说明符用于MapReduce作业流。否则,我不会受到语言或技术的限制。
发布于 2011-01-14 06:39:19
如果您查看一下Amazon Elastic MapReduce Developer Guide,您需要在S3中指定输入数据、输出数据、映射器脚本和reducer脚本的位置,以便创建MapReduce作业流。
如果需要执行一些预处理(如从数据库转储MapReduce输入文件)或后处理(如将MapReduce输出文件拆分到S3中的其他位置),则必须将这些任务与MapReduce作业流分开自动执行。
您可以使用boto library来编写这些预处理和后处理脚本。它们可以在EC2实例上运行,也可以在有权访问S3存储桶的任何其他计算机上运行。从EC2传输数据可能更便宜、更快,但如果您没有可用的EC2实例,您可以在自己的计算机上运行脚本...除非有太多的数据要传输!
您可以使用自动化达到您想要的程度:您甚至可以编排生成输入、启动新的MapReduce作业流、等待作业完成以及相应地处理输出的整个过程,以便在给定适当的配置的情况下,整个过程只需按下一个按钮:)
https://stackoverflow.com/questions/4669947
复制相似问题