2011-10-17 52 views
1

问题我必须使用Amazon EC2 + S3 + RDS + EMR做一个相当复杂的数据处理系统和我有,我希望你能帮助我的一些常规问题:有关流工作流程在Amazon EMR

  • 我需要使用R,那么我必须使用Streaming Job Flow。这是否意味着我失去了Hive的力量,我无法在EMR作业上执行Hive查询来处理这些数据?
  • 我可以运行多个作业流程并与其交互吗?
  • 我该如何使用从属作业?
  • 一旦完成工作,你可以重新执行一项工作吗?我不想做一次计算,我想根据数据进行演变。
  • 我可以将变量传递给作业吗?
  • 什么是自动执行此操作的正确方法?

回答

1

我需要使用R,那么我必须使用Streaming Job Flow。这是否意味着我失去了Hive的力量,我无法在EMR作业上执行Hive查询来处理这些数据?

您可以以任何您想要的方式混合作业。例如,R流作业从S3读取并写入HDFS,然后写入Hive作业,从HDFS读取数据并将其写回S3。它们都只是MapReduce作业。

我可以运行多个作业流程并与它们进行交互吗?

EMR没有限制您可以同时运行的工作流数量;实施的唯一限制是EC2实例的配额。没有支持在两个群集的HDFS之间移动数据,但您可以轻松地通过S3轻松完成。

如何使用从属作业?

取决于你的意思是依靠工作吗?您可以使用步骤机制对作业进行排队,以便只要您的工作流程可以通过单一序列进行描述即可。请参阅[1]

您可以在完成后重新运行作业吗?我不想做一次计算,我想根据数据进行演变。

在调试/探索性工作方面,使用--alive,ssh启动主节点并直接提交作业通常最容易。一旦你开心,你可以使用步骤机制来编排你的工作流程。

我可以将变量传递给作业吗?

是的;您的步骤可让您完全访问您提交的工作

什么是自动执行此操作的正确方法?

只要您的工作流程是线性的,步骤机制应该足够了;启动集群,并将事情排队等待,确保最后一步输出到S3,并让集群自行终止。

[1] http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?ProcessingCycle.html