apache-spark - 快速 Hadoop 分析(Cloudera Impala vs Spark/Shark vs Apache Drill)

标签 apache-spark impala apache-drill

我想对 HDFS 中的数据进行一些“近实时”数据分析(类似 OLAP)。
我的研究表明,与 Apache Hive 相比,上述三个框架具有显着的性能提升。有人对其中任何一个有实际经验吗?不仅涉及性能,还涉及稳定性?

最佳答案

Hive 和 Impala 或 Spark 或 Drill 之间的比较有时对我来说听起来不合适。开发 Hive 和这些工具背后的目标是不同的。 Hive 从来都不是为了实时、内存处理而开发的,而是基于 MapReduce。它是为离线批处理之类的东西而构建的。最适合当您需要长时间运行的作业来执行数据密集型操作(例如对非常大的数据集进行联接)时。

另一方面,这些工具的开发考虑了实时性。当您需要查询不是很大的数据时,可以选择它们,这些数据可以实时装入内存。我并不是说您不能使用这些工具对 BigData 运行查询,但恕我直言,如果您对 PB 级数据运行实时查询,您就会突破极限。

您经常会看到(或读到)某个特定公司拥有数PB 的数据,并且他们成功地满足了客户的实时需求。但实际上,这些公司大多数时候并没有查询他们的全部数据。因此,重要的是适当的规划,何时使用什么。我希望您能明白我想要表达的观点。

回到你的实际问题,在我看来,目前很难提供合理的比较,因为大多数项目还远未完成。它们还没有准备好投入生产,除非您愿意自己做一些(或者可能很多)工作。而且,对于每个项目都有特定于该特定项目的特定目标。

例如,Impala 的开发是为了利用现有的 Hive 基础设施,这样您就不必从头开始。它使用与 Hive 相同的元数据。其目标是在现有 Hadoop 仓库之上运行实时查询。而 Drill 的开发目的是不仅仅是 Hadoop 项目。并为我们提供跨多个大数据平台(包括MongoDB、Cassandra、Riak和Splunk)的分布式查询能力。 Shark 与 Apache Hive 兼容,这意味着您可以使用与通过 Hive 相同的 HiveQL 语句来查询它。不同之处在于,Shark 返回结果的速度比 Hive 上运行的相同查询快 30 倍。

Impala 目前表现不错,有些人一直在使用它,但我对其余的 2 个工具没有那么有信心。所有这些工具都很好,但只有在您在数据上尝试这些工具后才能进行公平的比较并满足您的加工需求。但根据我的经验,Impala 是目前最好的选择。我并不是说其他​​工具不好,而是它们还不够成熟。但是,如果您希望将它与已经运行的 Hadoop 集群(例如 Apache 的 hadoop)一起使用,您可能需要做一些额外的工作,因为几乎每个人都将 Impala 作为 CDH 功能使用。

注意:所有这些内容仅基于我的经验。如果您发现错误或不适当的内容,请告诉我。欢迎提出意见和建议。我希望这能回答您的一些疑问。

关于apache-spark - 快速 Hadoop 分析(Cloudera Impala vs Spark/Shark vs Apache Drill),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17290397/

相关文章:

python - 在 pyspark -pandas_udf 中按组应用函数(没有名为 pyarrow 的模块)

scala - 在分区数据上运行 groupByKey/reduceByKey,但使用不同的键

git - 使用 "git format-patch origin/master --stdout"创建的空补丁

apache-drill - 使用 apache Drill 插入 postgres 表

hadoop - 比较 HDFS 中的毫秒时间戳

apache-drill - Apache Drill 如何处理大结果集?

python - 使用数组对象计算 Spark RDD 中的不同文本

apache-spark - 我们可以通过同一个 kafka 主题传递不同类型的消息吗?

export-to-csv - 以 CSV 格式保存 Impala Shell 查询结果

hadoop - 为什么 Impala 为一个插入语句生成多个文件