围绕Hadoop及其生态系统进行了大量宣传。但是,实际上,在许多数据集在TB范围内的情况下,使用Amazon RedShift来查询大型数据集而不是花时间和精力来构建Hadoop集群是否更合理?
此外,在设置复杂性,成本和性能方面,Amazon Redshift与Hadoop有何比较?
围绕Hadoop及其生态系统进行了大量宣传。但是,实际上,在许多数据集在TB范围内的情况下,使用Amazon RedShift来查询大型数据集而不是花时间和精力来构建Hadoop集群是否更合理?
此外,在设置复杂性,成本和性能方面,Amazon Redshift与Hadoop有何比较?
Answers:
tl; dr:它们在许多方面都明显不同,我认为Redshift不会取代Hadoop。
-功能
除了在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 to Redshift中完成的部分ETL,这是非常不错的体验;主要是为了易于开发。与Hive相比,Redshift的查询引擎基于PostgreSQL,并且非常成熟。它的ACID特性使其更易于推理,并且更快的响应时间可以完成更多测试。这是一个很棒的工具,但是它不会取代Hadoop。
编辑:至于设置的复杂性,如果您使用AWS的EMR,我什至会说使用Hadoop更容易。他们的工具是如此成熟,以至于让您的Hadoop作业运行起来非常容易。围绕Redshift操作的工具和机制还不成熟。例如,Redshift无法处理trick流加载,因此您必须想出一些办法将其转换为批量加载,这可能会给ETL增加一些复杂性。
easier to develop because of Redshift's maturity
与之矛盾,Redshift isn't that mature yet
那么您的判决是什么?
就个人而言,我认为设置Hadoop集群并不那么困难,但是我知道入门时有时会很痛苦。
HDFS大小限制远远超过TB(或者您是说EB吗?)。如果我没记错的话,它的大小可以扩展到yobytes或其他我不知道这个词的度量。不管是什么,它都很大。
诸如Redshift之类的工具占有一席之地,但我始终担心供应商特定的解决方案。我主要担心的是“当我对他们的服务不满意时该怎么办?” -我可以去Google并将我的分析工作转移到他们的范例中,也可以去hadoop并将同样的工作转移到该系统中。无论哪种方式,我都必须学习一些新知识并做很多翻译工作。
话虽如此,能够上传数据集并快速开始工作真是太好了-尤其是在我的工作生命周期较短的情况下。亚马逊在回答数据安全问题方面做得很好。
如果您想避免hadoop,总会有替代方法。但是,一旦开始使用它,并没有那么困难。