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