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

Posted

技术标签:

【中文标题】有关 Amazon EMR 上的流式作业流程的问题【英文标题】:Questions about Streaming Job Flow on Amazon EMR 【发布时间】:2011-10-17 14:25:39 【问题描述】:

我必须使用 Amazon EC2 + S3 + RDS + EMR 制作一个相当复杂的数据处理系统,我有一些一般性问题希望您能帮助我:

我需要使用 R,然后我必须使用 Streaming Job Flow。这是否意味着我失去了 Hive 的功能,并且无法在 EMR 作业之上执行 Hive 查询来处理该数据? 我可以运行多个作业流程并与之交互吗? 如何使用依赖作业? 您可以在完成后重新运行作业吗?我不想做一次计算,我想根据数据进化。 我可以将变量传递给 Jobs 吗? 自动化的正确方法是什么?

【问题讨论】:

【参考方案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

【讨论】:

以上是关于有关 Amazon EMR 上的流式作业流程的问题的主要内容,如果未能解决你的问题,请参考以下文章

amazon emr pig:使用参数文件

在 AWS EMR 上的 PySpark 脚本上找不到 com.amazon.ws.emr.hadoop.fs.EmrFileSystem

如何在 Amazon EMR 集群上远程提交 hadoop MR 作业

在 Amazon EMR 中运行的 Pig 作业的引导文件的路径是啥

Amazon EMR over s3 上的 TezTask 顶点故障

markdown Amazon EMR上的Apache Spark