亚马逊MapReduce与cronjob + API

亚马逊MapReduce与cronjob + API

问题描述:

我有一个网站建立在EC2实例,让用户从他们的社交网络4查看信息。亚马逊MapReduce与cronjob + API

一旦用户加入,网站应每晚更新他们的信息,以便第二天显示最新的相关信息。

最初我们有一个cron-job,它经历了每个用户,并对API进行必要的调用,然后将数据存储在数据库(亚马逊rds实例)中。

此操作应该每人需要2到30秒,这意味着1到1的操作需要几天更新。

我在看MapReduce,想知道它是否适合做什么即时通讯试图做的选择,但目前我无法确定。

我可以给一个.sql文件给MapReduce,我想要更新所有记录+一个脚本告诉MapReduce如何处理每条记录并让它们同时处理它们?

如果不是,最好的方法是什么?

感谢您的帮助提前。

我假设每个用户的数据独立于其他用户的数据,这对我来说似乎是逻辑上的。如果不是这种情况,请忽略此答案。

由于您拥有相互独立的数据(即每个用户的数据独立于其他用户),因此无需使用MapReduce。 MR仅仅是一种编程模式,当数据不是而是独立(映射准备好数据,然后存在排序阶段,然后减少从排序记录中抽取结果)时,简化了数据处理。

就你而言,如果你想要使用更多的计算机,只需分割它们之间的负载 - 每台计算机应该每小时处理约10000个用户(非常粗略的估计)。然后,用户可以预先分配到计算机中,也可以以1000个左右用户的身份请求用户,因此,尽快结束的机器可以处理更多的用户。

BUT有在使用MR框架(如Hadoop的)一个额外的好处,即使只使用一个相(仅图)。它为您执行错误处理(节点失败,作业失败,...),并负责在节点之间分配输入。

我不确定MR是否值得设置它的所有麻烦,取决于你以前的经验 - YMMV。

如果我的理解是正确的。如果将此应用程序作为MapReduce实现,则所有的处理都在Map阶段完成,并且reduce可能会简单地输出Map阶段结果。 所以如果我要实现这一点,我只是将作业分成多个EC2实例,每个实例在SQL数据中处理给定范围的记录。这已经假设你对如何将数据分为不同的实例有一个很好的想法。 优点是您无需为Elastic MapReduce的价格付费,并避免任何可能的MapReduce开销。