【问题标题】:Questions about Streaming Job Flow on Amazon EMR有关 Amazon EMR 上的流式作业流程的问题
【发布时间】:2011-10-17 14:25:39
【问题描述】:
我必须使用 Amazon EC2 + S3 + RDS + EMR 制作一个相当复杂的数据处理系统,我有一些一般性问题希望您能帮助我:
- 我需要使用 R,然后我必须使用 Streaming Job Flow。这是否意味着我失去了 Hive 的功能,并且无法在 EMR 作业之上执行 Hive 查询来处理该数据?
- 我可以运行多个作业流程并与之交互吗?
- 如何使用依赖作业?
- 您可以在完成后重新运行作业吗?我不想做一次计算,我想根据数据进化。
- 我可以将变量传递给 Jobs 吗?
- 自动化的正确方法是什么?
【问题讨论】:
标签:
amazon-s3
hadoop
hive
amazon-emr
【解决方案1】:
我需要使用 R,然后我必须使用 Streaming Job Flow。这是否意味着我失去了 Hive 的功能,并且无法在 EMR 作业之上执行 Hive 查询来处理该数据?
您可以以任何您想要的方式混合工作。例如,从 S3 读取数据并写入 HDFS 的 R 流作业,然后是从 HDFS 读取数据并写回 S3 的 Hive 作业。它们都只是 MapReduce 作业。
我可以运行多个作业流程并与之交互吗?
在 EMR 中,您一次可以运行的作业流程数量没有限制;唯一实施的限制是 EC2 实例的配额。目前尚不支持在两个集群的 HDFS 之间移动数据,但您可以轻松地通过 S3。
如何使用依赖作业?
取决于你所说的依赖工作?您可以使用 step 机制将作业排队以在彼此之后运行,只要您的工作流程可以用单个序列来描述就可以了。见 [1]
您可以在完成后重新运行作业吗?我不想做一次计算,我想根据数据进化。
就调试/探索性工作而言,通常最简单的方法是使用 --alive 启动集群,通过 ssh 连接到主节点并直接提交作业。一旦您感到满意,您就可以使用分步机制来编排您的工作流程。
我可以将变量传递给 Jobs 吗?
是的;您的步骤使您可以完全访问您提交的工作
自动化的正确方法是什么?
只要您的工作流程是线性的,步骤机制就足够了;启动集群并将要做的事情排队,确保最后一步输出到 S3 并让集群自行终止。
垫子
[1]http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?ProcessingCycle.html