我想对HDFS中的数据进行一些“近乎实时”的数据分析(类似OLAP)。
我的研究表明,与Apache Hive相比,上述三个框架报告了显著的性能提升。有没有人有过这两种方法的实际经验?不仅要考虑性能,还要考虑稳定性?
发布于 2013-06-26 02:07:13
比较Hive和Impala或者Spark或者Drill有时对我来说听起来不太合适。开发Hive和这些工具背后的目标是不同的。Hive从来不是在内存处理中为实时开发的,它是基于MapReduce的。它是为离线批处理之类的东西而构建的。最适合于需要长时间运行的作业来执行数据密集型操作,比如连接非常庞大的数据集。
另一方面,这些工具是在考虑到real-timeness的情况下开发的。当你需要查询不是很庞大的数据时,就去找它们,这些数据可以放入内存中,实时的。我并不是说你不能使用这些工具在你的BigData上运行查询,但是如果你在PB的数据上运行实时查询,你就会突破极限。
您经常会看到(或读到)某个特定公司有几个PB的数据,它们成功地满足了客户的实时需求。但实际上,这些公司大部分时间都不会查询整个数据。所以,重要的是要有适当的计划,when to use what。我希望你能明白我想说的意思。
回到你的实际问题,在我看来,目前很难提供一个合理的比较,因为这些项目中的大多数还远未完成。它们还没有为生产做好准备,除非你愿意自己做一些(或者很多)工作。而且,对于这些项目中的每个项目,都有特定的目标,这些目标非常特定于特定的项目。
For example,Impala是为了利用现有的蜂窝基础设施而开发的,这样你就不必从头开始。它使用与Hive相同的元数据。它的目标是在现有的Hadoop仓库上运行实时查询。而Drill被开发为一个not only Hadoop项目。并为我们提供跨多个大数据平台的分布式查询功能,包括MongoDB、Cassandra、Riak和Splunk。Shark与Apache Hive兼容,这意味着您可以使用与通过Hive相同的HiveQL语句来查询它。不同之处在于,Shark返回结果的速度比在Hive上运行的相同查询快30倍。
Impala目前做得很好,有些人一直在使用它,但我对剩下的2个工具不是很有信心。所有这些工具都很好,但只有当你在你的数据上尝试这些工具并满足你的处理需求后,才能做出公平的比较。但根据我的经验,Impala将是目前最好的选择。我并不是说其他工具不好,但它们还不够成熟。但是,如果您希望将其用于已经运行的Hadoop集群(Apache的hadoop for ex),您可能需要做一些额外的工作,因为几乎所有人都将Impala用作CDH功能。
注:所有这些事情都是基于我的经验。如果你发现一些错误或不合适的地方,请一定要让我知道。欢迎提出意见和建议。我希望这能回答你的一些疑问。
发布于 2013-10-31 17:11:12
这是加州大学伯克利分校AMPLab鲨鱼开发项目的领导者Reynold Xin对"How does Impala compare to Shark?"的回答。
https://stackoverflow.com/questions/17290397
复制相似问题