快速Hadoop分析(Cloudera Impala与Spark / Shark与Apache Drill)
我想对HDFS中的数据做一些“接近实时”的数据分析(类似于OLAP)。
我的研究表明,与Apache Hive相比,上述三个框架报告了显着的性能提升。 有没有人有任何一个实际的经验? 不仅关系到performance,而且关乎稳定?
Hive和Impala或Spark或Drill之间的比较有时听起来对我来说不合适。 开发Hive和这些工具背后的目标是不同的。 Hive从来没有在内存处理中实时开发,并基于MapReduce。 它是为脱机批处理而devise的。 当您需要长时间运行的作业执行数据繁重的操作(如连接非常庞大的数据集)时,最为合适。
另一方面,这些工具的开发保持了real-timeness
。 当你需要查询不是非常庞大的数据时,可以将它们放到内存中去实时查询。 我并不是说你无法使用这些工具在你的BigData上运行查询,但是如果你正在对数据的PB(即恕我直言)进行实时查询的话,你会推动极限。
通常你会看到(或阅读)某个特定的公司有几个PB的数据,他们成功满足了客户的实时需求。 但实际上这些公司大多数时间都不查询他们的全部数据。 所以,重要的是适当的计划, when to use what
。 我希望你明白我想说的一点。
回到你的实际问题,我认为现在很难提供合理的比较,因为这些项目大部分还远远没有完成。 他们还没有准备好生产,除非你愿意自己做一些(或者很多)工作。 而且,对于这些项目中的每一个来说,都有一些特定项目的具体目标。
For example
,Impala是为了利用现有的Hive基础架构而开发的,因此您不必从头开始。 它使用了Hive使用的相同的元数据。 目标是在现有的Hadoop仓库之上运行实时查询。 Drill被开发成为一个not only Hadoop
项目。 并为我们提供跨多个大数据平台(包括MongoDB,Cassandra,Riak和Splunk)的分布式查询function。 Shark与Apache Hive兼容,这意味着您可以像使用Hive一样使用相同的HiveQL语句来查询它。 不同的是,Shark可以返回比在Hive上运行的相同查询快30倍的结果。
目前Impala做得很好,有些人一直在使用它,但是我对其余部分没有信心。所有这些工具都很好,但是只有在您对数据和您的数据进行尝试之后才能进行公平的比较处理需求。 但根据我的经验,Impala现在是最好的select。 我不是说其他工具不好,但还不够成熟。 但是如果您希望将其与已经运行的Hadoop集群(Apache的hadoop for ex)一起使用,您可能需要做一些额外的工作,因为几乎所有人都将Impala用作CDHfunction。
注意:所有这些都是基于我的经验。 如果您发现错误或不适当的,请让我知道。 欢迎提出意见和build议。 我希望这可以回答你的一些疑问。
这是“Impala与鲨鱼相比如何?”的答案。 来自加州大学伯克利分校(UC Berkeley)的鲨鱼开发工作负责人Reynold Xin。