围绕 Hadoop 及其生态系统有很多炒作。然而,在实践中,许多数据集都在 TB 范围内,使用Amazon RedShift查询大型数据集,而不是花费时间和精力构建 Hadoop 集群不是更合理吗?
此外,在设置复杂性、成本和性能方面,Amazon Redshift 与 Hadoop 相比如何?
围绕 Hadoop 及其生态系统有很多炒作。然而,在实践中,许多数据集都在 TB 范围内,使用Amazon RedShift查询大型数据集,而不是花费时间和精力构建 Hadoop 集群不是更合理吗?
此外,在设置复杂性、成本和性能方面,Amazon Redshift 与 Hadoop 相比如何?
tl;dr:它们在很多方面都有明显的不同,我认为 Redshift 不会取代 Hadoop。
-Function
你不能在 Redshift 上运行除 SQL 之外的任何东西。也许最重要的是,您不能在 Redshift 上运行任何类型的自定义函数。在 Hadoop 中,您可以使用多种语言(Java、Python、Ruby .. 应有尽有)。例如,Hadoop 中的 NLP 很容易,而在 Redshift 中或多或少是不可能的。即,您可以在 Hadoop 中做很多事情,但在 Redshift 上却不能。这可能是最重要的区别。
- 在大多数情况下,在 Redshift 上执行性能配置文件
查询比在 Hadoop 上高效得多。但是,这种效率来自于将数据加载到 Redshift 时完成的索引(我在indexing
这里使用的术语非常宽松)。因此,如果您加载一次数据并执行多个查询,这很好,但如果您只想执行一个查询,那么您实际上可能会损失整体性能。
-Cost Profile
哪种解决方案在成本上胜出取决于具体情况(如性能),但您可能需要大量查询才能使其比 Hadoop(更具体地说是 Amazon 的 Elastic Map Reduce)便宜。例如,如果你在做 OLAP,Redshift 很可能会更便宜。如果您每天进行批处理 ETL,Hadoop 更有可能更便宜。
话虽如此,我们已经将在 Hive 中完成的部分 ETL 替换为 Redshift,这是一次非常棒的体验;主要是为了方便开发。Redshift 的查询引擎基于 PostgreSQL,与 Hive 相比非常成熟。它的 ACID 特性使其更容易推理,更快的响应时间允许进行更多测试。这是一个很棒的工具,但它不会取代 Hadoop。
编辑:至于设置复杂性,我什至会说如果您使用 AWS 的 EMR,使用 Hadoop 会更容易。他们的工具非常成熟,让您的 Hadoop 作业运行起来非常容易。围绕 Redshift 操作的工具和机制还没有那么成熟。例如,Redshift 无法处理涓流加载,因此您必须想办法将其转换为批处理加载,这会给您的 ETL 增加一些复杂性。
Amazon Redshift 的当前大小限制为 128 个节点或 2 PB 的压缩数据。尽管里程因压缩而异,但未压缩可能约为 6PB。如果您需要更多,您可以随时告诉我们。anurag@aws(我运行 Amazon Redshift 和 Amazon EMR)
就个人而言,我不认为建立一个hadoop集群有那么难,但我知道当你开始时有时会很痛苦。
HDFS 的大小限制远远超过 TB(或者您的意思是艾字节?)。如果我没记错的话,它可以扩展到 yottabytes 或其他一些我什至不知道这个词的度量。不管它是什么,它真的很大。
像 Redshift 这样的工具有它们的位置,但我总是担心供应商特定的解决方案。我主要关心的是“当我对他们的服务不满意时该怎么办?” - 我可以去 google 并将我的分析工作转移到他们的范例中,或者我可以去 hadoop 并将相同的工作转移到那个系统中。无论哪种方式,我都将不得不学习一些新东西并做很多翻译工作。
话虽如此,很高兴能够上传数据集并快速开始工作 - 特别是如果我正在做的事情生命周期很短。亚马逊在解决数据安全问题方面做得很好。
如果你想避免 hadoop,总会有替代方案。但是,一旦您开始使用它,使用它并不是那么困难。