从RDS迁移到Elastic MapReduce + Hive是正确的选择吗?

时间:2012-08-18 06:53:08

标签: r amazon-ec2 hive amazon-emr

首先,如果我不在我的问题中使用正确的术语,我必须明确表示我是新手,请原谅自己。

这是我的情景:

我需要分析大量的文本,如推文,评论,邮件等。数据目前会在发生时插入到Amazon RD MySQL实例中。

稍后我使用RTextTools(http://www.rtexttools.com/)在本地运行和R作业,以输出我想要的结果。此时,重要的是要明确R脚本分析数据并将数据写回MySQL表,稍后将用于显示它。

我最近遇到的问题是,每次运行该作业大约需要1小时,而且我每天至少需要做2次......所以使用我的本地计算机不再是一种选择。

寻找替代方案我开始阅读有关Amazon Elastic MapReduce实例的内容,乍一看似乎是我需要的内容,但是这里开始我的问题和对它的困惑。

  1. 我读到EMR的数据应该从S3存储桶中取出。如果是这样,那么我必须开始将我的数据存储在S3存储桶中的JSON或类似内容中,而不是存储到我的RDS实例中,对吗?
  2. 此时我读到创建HIVE表然后使用RHive读取数据以便RTextTools完成其工作并将结果写回我的RDS表是一个好主意,这是对的吗?
  3. 现在是最后也是最重要的问题:在使用R运行EC2实例并在那里运行我的R脚本时,将所有这些麻烦都值得一试,我会减少计算时间吗?
  4. 非常感谢您的时间,并且非常感谢任何正确方向的提示

2 个答案:

答案 0 :(得分:1)

有趣的是,我想提出一些建议。

  1. 您可以在S3中完全存储数据,但您必须先将数据写入某个文件(txt等),然后将其推送到S3。你不能把原始的JSON放在S3上。您可以获得通过S3部署的云前端的好处,以便快速检索数据。您也可以使用RDS。您必须自己分析的性能差异。

  2. 将结果写回RDS不应该是任何问题。 EMR基本上创建了两个EC2实例,ElasticMapReduce-master和ElasticMapReduce-slave,可用于与RDS通信。

  3. 请参阅,我认为值得尝试使用R的EC2实例,但是为了减少计算时间,您可能必须使用昂贵的EC2实例,或者在不同实例之间进行自动缩放和划分任务。它就像你自己实现整个并行计算逻辑一样,但是在EMR的情况下,你正在获得map的所有这些逻辑简化。所以,首先你应该尝试使用EMR,如果它不适合你,请尝试使用R的新EC2实例。
  4. 让我知道它是怎么回事,谢谢。

答案 1 :(得分:1)

你应该考虑尝试EMR。如果1小时窗口是约束,则S3 + EMR非常值得尝试。对于您的处理工作负载类型,您可以通过使用可扩展的随需应变hadoop / hive平台来节省周期。显然,有一些学习,重新平台化以及与试验和转换相关的持续集群管理成本。它们是非平凡的。或者,考虑像Qubole这样的服务,它也可以在EC2 + S3上运行,并提供更高级别(可能更容易使用)的抽象。

免责声明:我是Qubole的产品经理。