1

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

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

1 回答 1

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

于 2011-10-19T04:29:27.890 回答