我想对 HDFS 中的数据进行一些“近乎实时”的数据分析(类似 OLAP)。
我的研究表明,与 Apache Hive 相比,上述三个框架报告了显着的性能提升。有没有人对其中任何一个有一些实际经验?不仅关乎性能,还关乎稳定性?
2 回答
Hive 和 Impala 或 Spark 或 Drill 之间的比较有时对我来说听起来不合适。开发 Hive 和这些工具背后的目标是不同的。Hive 从未为实时、内存处理而开发,并且基于 MapReduce。它是为离线批处理而构建的。最适合您需要长时间运行的作业来执行数据繁重的操作,例如在非常大的数据集上连接。
另一方面,这些工具的开发real-timeness
牢记。当您需要查询不是很大的数据时,请使用它们,这些数据可以实时放入内存中。我并不是说您不能使用这些工具在 BigData 上运行查询,但是如果您在 PB 数据上运行实时查询,恕我直言,您将突破极限。
您经常会看到(或读到)某家公司拥有数 PB 的数据,并且他们成功地满足了客户的实时需求。但实际上这些公司大部分时间都没有查询他们的全部数据。所以,重要的是适当的计划,when to use what
。我希望你明白我想要表达的意思。
回到您的实际问题,在我看来,目前很难提供合理的比较,因为这些项目中的大多数都远未完成。他们还没有准备好生产,除非你愿意自己做一些(或者很多)工作。而且,对于这些项目中的每一个,都有特定于该特定项目的特定目标。
For example
, Impala 的开发是为了利用现有的 Hive 基础架构,这样您就不必从头开始。它使用与 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 功能。
注意:所有这些仅基于我的经验。如果您发现有问题或不合适的地方,请告诉我。欢迎提出意见和建议。我希望这能回答您的一些疑问。
这是“Impala 与 Shark 相比如何?”的答案。 来自加州大学伯克利分校 AMPLab Shark 开发工作的负责人 Reynold Xin。