我必须使用 Amazon EC2 + S3 + RDS + EMR 制作一个相当复杂的数据处理系统,我有一些一般性问题希望您能帮助我:
- 我需要使用 R,然后我必须使用 Streaming Job Flow。这是否意味着我失去了 Hive 的功能并且我无法在 EMR 作业之上执行 Hive 查询来处理该数据?
- 我可以运行多个作业流程并与之交互吗?
- 如何使用从属作业?
- 您能否在完成后重新运行作业?我不想做一次计算,我想根据数据进化。
- 我可以将变量传递给乔布斯吗?
- 自动执行此操作的正确方法是什么?
最佳答案
I need to use R, then I have to use Streaming Job Flow. Does that mean I lose the power of Hive and I can't execute a Hive query on top of the EMR Job to work with that data?
您可以以任何您想要的方式混合作业。例如,一个从 S3 读取并写入 HDFS 的 R 流作业,然后是一个从 HDFS 读取数据并写回 S3 的 Hive 作业。它们都只是 MapReduce 作业。
Can I have multiple Job Flows running and interacting with them?
在 EMR 中,您可以同时运行的作业流数量没有限制;唯一强制执行的限制是 EC2 实例的配额。目前尚不支持在两个集群的 HDFS 之间移动数据,但您可以通过 S3 轻松完成。
How can I use Dependent Jobs?
取决于您所说的依赖工作?您可以使用步进机制将作业排入队列以依次运行,只要您的工作流程可以通过单个序列描述就可以了。参见[1]
Can you re-run a job once done? I don't want to do the calculation once, I want to evolve according to the data.
就调试/探索性工作而言,使用 --alive 启动集群通常是最简单的,ssh 到主节点并直接提交作业。满意后,您可以使用步骤机制来编排您的工作流程。
Can I pass variables to Jobs?
是的;您的步骤使您可以完全访问您正在提交的作业
What is the correct way to automate this?
只要您的工作流程是线性的,步骤机制就足够了;启动集群并将要做的事情排队,确保最后一步输出到 S3,然后让集群自行终止。
垫子
关于amazon-s3 - 关于 Amazon EMR 上的流式作业流程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7795190/