有关Amazon EMR上的流式作业流程的问题

时间:2011-10-17 14:25:39

标签: amazon-s3 hadoop hive amazon-emr

我必须使用Amazon EC2 + S3 + RDS + EMR制作一个非常复杂的数据处理系统,我有一些一般性的问题,希望你们可以帮助我:

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

1 个答案:

答案 0 :(得分:1)

  

我需要使用R,然后我必须使用流式作业流程。这是否意味着我失去了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