使用 Redshift 与 Spark 进行大数据分析,使用 Redshift Analytics 的 Oozie Workflow Scheduler

Big Data Analytics using Redshift vs Spark, Oozie Workflow Scheduler with Redshift Analytics

我们想对存储在 Amazon Redshift 中的数据进行大数据分析(目前以 TB 为单位,但会随着时间的推移而增长)。

目前,我们所有的分析似乎都可以通过 Redshift 查询来完成(因此,我们这边可能不需要分布式处理),但我们不确定未来是否会继续如此。

为了构建一个能够满足我们未来需求的通用系统,我们希望使用 Apache Spark 进行数据分析。 我知道数据可以从 HDFS、HBase 和 S3 读取到 Spark RDD,但是它支持直接从 Redshift 读取数据吗? 如果没有,我们可以考虑将数据传输到 S3,然后在 Spark RDD 中读取它。

我的问题是我们是应该直接通过 Redshift 的查询来执行我们的数据分析,还是应该考虑采用上述方法并通过 Apache Spark 进行分析(这里的问题是数据局部性优化可能不可用)?

如果我们直接通过 Redshift 查询进行分析,任何人都可以请推荐一个好的 Workflow Scheduler 来编写我们的分析作业。我们的要求是能够作为 DAG 执行作业(Job2 应该仅在 Job1 成功时执行,等等)并且能够通过建议的工作流引擎安排我们的工作流。

Oozie 似乎很适合我们的要求,但事实证明,没有 Hadoop 就无法使用 Oozie。 在我们的机器上设置 Hadoop,然后使用 Oozie Workflow Scheduler 通过 Redshift 查询来安排我们的数据分析作业是否有意义?

您无法直接访问存储在 Redshift 节点上的数据(每个节点都通过 Spark),只能通过 SQL 查询提交整个集群。

我的建议是尽可能长时间地使用 Redshift,并且只在绝对需要时才承担 Spark/Hadoop 的复杂性。

如果将来您迁移到 Hadoop,那么 Cascading Lingual 可以让您选择 运行 您现有的 Redshift 分析或多或少保持不变。

关于工作流程,Oozie 不太适合 Redshift。我建议您看看 Azkaban(真正的 DAG)或 Luigi(使用 Python DSL)。